How can we support Marketplace licensing and our custom licensing mechanism in a single plugin?
Currently, it seem that we are locked into Marketplace licensing as soon as we add <product-descriptor> tag to plugin.xml and use a IntelliJ IDEA edition/version that supports Marketplace licensing (e.g. Ultimate 2019.1).
IntelliJ IDEA Ultimate asks at startup whether:
- activate plugin using purchased Marketplace license
- evaluate for 30 days
- disable plugin
So there seems to be no way to use our custom licensing mechanism.
The situation is different when using Community Edition or older Ultimate versions, which do not support Marketplace licensing. Then our custom licensing works fine (and is required in this case).
I've seen the article "Moving to the marketplace from other licensing/billing solutions" at https://intellij-support.jetbrains.com/hc/en-us/articles/115000220744, but I think that the three suggested migration paths are either not practical in our case, complicated or too time-consuming. In all suggested cases the end-user (customer) has to do something to change licensing, which is IMHO bad user experience.
Our preferred Marketplace migration path would be:
- end-user (customer) can continue using existing license keys as long as they are valid
- if end-user wants to upgrade to latest plugin version, he should start using Marketplace licensing
Our product JFormDesigner is also available as plugin for other IDEs (Eclipse, NetBeans, etc) and as StandAlone edition. The end-user can use all editions with a single JFormDesigner license key. We have customers where some team members use IntelliJ IDEA and some use other IDEs. Some use Ultimate edition, some Community edition.
So we'll continue to sell JFormDesigner licenses in our store and those license keys must work in all JFormDesigner editions including the JFormDesigner plugin for IntelliJ IDEA.
For customers that use IntelliJ IDEA Ultimate only, we'll recommend them to use the JetBrains Marketplace (in this case they can not use the other JFormDesigner editions).
If there is currently no solution for dual licensing mechanisms, would it be possible to add a flag to <product-descriptor> tag (or somewhere else) to not disable plugin at startup and enable custom licensing mechanism? E.g.
<product-descriptor ... allow-custom-license-manager="true">
If the flag is true, in the "Plugin JFormDesigner License Activation" dialog (which pops up at startup), the "Disable plugin" button could change to e.g. "Use plugin vendor licensing" button, which keeps the plugin enabled. Then the plugin is responsible for license checking.
Another solution would be to implement two plugins:
- existing plugin "JFormDesigner" that uses our custom licensing mechanism
- new plugin "JFormDesigner Marketplace Edition" (depends on plugin "JFormDesigner") that uses JetBrains Marketplace licensing
I think this should work with the current IDEA versions, but has the disadvantage that the end-user has to install two plugins...
Any other ideas?