How should plugins keep up with api updates
by Koen Aers
Hi Folks,
The Forge meeting today started off with a discussion spawned by this JIRA issue: https://issues.jboss.org/browse/FORGE-584.
You can find the complete discussion in the logs: http://transcripts.jboss.org/meeting/irc.freenode.org/forge/2012/forge.20.... By the way why was there no email send around with this info? Isn't this supposed to happen automatically?
The summary is that there are 2 aspects to this problem:
1. When installing a Forge plugin, the correct version of this plugin, compatible with the runtime that is requesting the install should be selected
2. When launching a Forge runtime, the plugins that are not compatible with the runtime that is launched cannot be enabled
AFAIK both aspects have been addressed to some extent but the discussion proves that there is room for improvement. This email thread is the place where we can continue this discussion and maybe hash out some JIRA issues.
As I understand, FORGE-584 was due to the fact that the plugin referenced version 1.0.0-SNAPSHOT of the Forge API in the 1.0.2.Final branch of the plugin. It is not abnormal that this does not work. The plugins should be compatible at runtime but not necessarily building with the latest and greatest version of the Forge API. So this was IMO a bug in the plugin code where the plugin writer had not properly updated the dependencies in one (or more) branch(es). I believe we already had this discussion before and I really don't see a way to make this updating process go smoother. Ideas here are more than welcome.
To address the second aspect above, it is a bit awkward to have to reinstall all the plugins when the runtime is for example updated from version 1.0.6.Final to 1.1.0.Final. And what if you need to maintain 1.0.x and 1.1.x at the same time? To address these problems I see 2 possibilities. The first is to allow multiple versions of plugins to be installed next to each other and the runtime will select the most appropriate version when it starts. When the compatible version of an already existing plugin is not available, Forge could ask the user if it can be installed automatically, thus addressing the manual reinstall mentioned earlier. The second solution would be that every runtime has its own location to install plugins and comes already bundled with a number of 'blessed' plugins, much like the Eclipse way of doing stuff. Again, ideas more than welcome.
WDYT?
Cheers,
Koen
12 years, 6 months