I'm in the current situation where I'm developing a software package which is heavily based on the usage of plugins. There are three main components:
- the core application package;
- the toolkit package;
- the plugins (these can be developed on their own by other users/developers).
The main goal is that the core depends on the toolkit which provides the building blocks; the plugins are also built with the toolkit and expand the functionality of the core.
I want to make sure that developers can ship their plugins with the following licenses:
- Apache License 2.0
- MIT
- BSD-3
- (L)GPLv3
I currently envision two distinct user bases: commercial entities that provide plugins shipped with MIT/BSD-3 license allowing them to use proprietary code that does not need to be publicly available but it's installed separately; users that want to publish plugins with (L)GPLv3 so that if someone wants to use my application with their plugins they must have their explicit consent.
At this time I licensed both the core and the toolkit as Apache License 2.0. I understood via this repo that Apache is compatible with MIT and BSD-3 but not GPLv3. I initially opted for BSD-3 since it's compatible with all of them but I noticed that in comparison Apache is more "wordy" and favored by lawyers when it comes down to patent infringement or stuff like that (I'm not a lawyer and not expert in what advantage this may provide).
Due to this, how can I achieve compatibility accross the board? Should I return to BSD-3? Should I add a secondary license to provide better compatibility? Although in the latter case I don't know what happens with projects that have a double license.
I understand this topic has been covered multiple times but due to the specificity of my question I preferred to just create a new one since I could not find a specific answer to my doubts.