Because plugin versions are managed by Forrest automatically it is possible to deploy and/or release individual plugins independantly of Forrest and other plugins. Before we discuss this process lets first look at the difference between releasing a plugin and deploying a plugin. Deploy or Release? ------------------ Plugins are automatically downloaded and installed whenever they are needed by a Forrest project. In order for this to happen it is necessary to deploy the plugin to a download server. Plugins may be deployed at any time during their development cycle, that is a developer may choose to deploy a plugin that has not yet been fully tested. This enables the plugin to be tested "in the field", by its users. Since users are able to opt to use a specfic version of a plugin those working in production environments can ensure that these interim test deployments do not affect their work. Releasing a plugin is the act of deploying a fully tested plugin available for use. This process will generally be more than just making the plugin available via a download site, it will usually involve making public announcements, tagging the source tree, incrementing version numbers and other such maintenance tasks. Deploying a Plugin ------------------ By convention a plugin that has not been fully tested will have '-dev' appended to the version number in the plugins build.xml file. To deploy on the Apache Forrest download server you will need to be a committer. Simply change directory to the plugin home directory and deploy the plugin by doing 'tools/ant/bin/ant deploy' [1]. The build system will take care of everything else for you. Deployment is carried out with the command "ant deploy". Since this does not affect releaed versions of the plugin it can be run at any time (note some minimal tests are done during the deploy process). [1] See the note about using our own version of Ant: http://forrest.apache.org/docs/dev/howto/howto-buildPlugin.html#ant Releasing a Plugin ------------------ The only difference between deploying and releasing a plugin from the point of view of making the download available is that the plugin version number will have the '-dev' postfix removed in build.xml before the "ant deploy" target is run. Once the deployment is complete the version number should be increased and the '-dev' postfix will be appended. To release a plugin one should run the command "ant release", however, there is more to it than this. TODO: Describe voting procedure TODO: announcement emails TODO: tagging source tree FAQs ==== What if a new feature breaks compatability with a released version of Forrest? ------------------------------------------------------------------------------ If you add a feature to a plugin that will break compatability with a released version of Forrest then you should up the forrest version number in the plugins build.xml file. This will prevent the new version of the plugin being made avialble to the older version of Forrest. However, you might light to consider doing a release of the plugin before you break compatability. It depends on what other changes there are to the plugin before you start your work. It is always best to raise this on the dev list.