I'm using Firebase services in a custom plugin that will be released later, Should I include all 3rd party libraries like Firebase on the final plugin package or is there another way to handle this in unity ?
1 Answer
There are several reasons why I don't like it when third-party DLLs are included in plugins:
- There may be copyright/legal issues; does the 3rd-party library (Firebase in this case) allow you to include their DLLs in your plugin?
- If the 3rd-party library is updated after you release your plugin, the DLL files in your plugin will be out of date until you update your plugin.
- End users may encounter conflicts if they import multiple plugins which use conflicting versions of the 3rd-party library (e.g. your plugin embeds Firebase 7.2.0 and some other plugin embeds Firebase 6.9.0).
- If the DLLs are large, they may bloat the plugin (increase the download size).
As with most things, there are exceptions. For example, if the third party library was no longer maintained and updated, you wouldn't need to worry about the embedded version becoming out of date. However, Firebase is updated regularly, so that exception doesn't apply here.
The downsides to not including the third-party library are more minor:
- There will be a little extra setup for users who install your plugin
- Major changes to the 3rd-party library may break your plugin, causing headaches for your users. This can be partially mitigated by including a disclaimer in your installation notes, e.g.:
We officially support Firebase versions up to x.y.z. Newer versions of the Firebase plugin may still be compatible, but please test them thoroughly before shipping your game. If you discover a compatibility issue with a new version of Firebase, please contact us at (email address).