Retirement Plan for Plugins

Decide to retire

Propose a vote on the dev-list to retire a plugin. The vote should be open for the standard 72 hours to allow people to voice their opinions. Send a cc to the users-list. Standard Apache voting rules apply. Only PMC votes are binding.

The vote must contain one or more options on how to retire the plugin. There are multiple scenarios available. Here are a couple that have been suggested:

  1. Move to our retired area in svn
  2. Move to another Apache project
  3. Move to, or another forge

Here's a template for scenario A that can be used for the vote email:

To: "Maven Developers List" <>
Cc: "Maven Users List" <>
Subject: [VOTE] Retire Maven Foo Plugin


A paragraph giving the reasons why the plugin should be retired. Make a note of
how long it has been since the latest release.

I therefore propose that we retire maven-foo-plugin.

If this vote is successful I will make one final release of the plugin, making
it clear on the plugin site that it has been retired. After that the source code
will be moved into the "retired" area in Subversion.

The process for retiring a plugin is described here:

The vote is open for 72 hours.

[ ] +1 Yes, it's about time
[ ] -1 No, because...

If the vote is successful, post the result to the dev list and cc the PMC and users list. For instance:

To: "Maven Developers List" <>
Cc: "Maven Users List" <>
CC: "Maven Project Management Committee List" <>
Subject: [RESULT] [VOTE] Retire Maven Foo Plugin


The vote has passed with the following result:

+1 (binding): <<list of names>>
+1 (non binding): <<list of names>>

I will continue with the steps required to retire this plugin.

If the vote passes, make one final release of the plugin (with its own standard 72h vote on source release) before it is retired. This allows us to make a clean break. The person who wants to retire a plugin is the one who does the final release. Below you will find the extra steps that you need to follow when retiring a plugin, in addition to our standard release process.

Make the final release

  1. Create an issue in JIRA with the issue type "Task" and the summary "Retire this plugin", and schedule it for the final release. If the plugin includes a JIRA report in the generated site, you will need to close this issue before you make the release.
  2. Add the description "This is the final version of this plugin. It has been retired." to the final version in JIRA.
  3. Add a prominent notice on the front page of the plugin's site, informing that the plugin is retired. Suggested text:
    Note: This plugin is retired. It is no longer maintained.

    If the plugin is moved elsewhere, that should also be added to the plugin's site. Suggested text:

    Note: This plugin has retired from the Apache Maven project,
    but has moved to the <Organization> <Project> project.
  4. Add " (RETIRED)" at the end of <project>/<name> in the plugin's pom.xml. This will show up on every page of the generated site.
  5. Go ahead with the standard release process, making sure that you follow the exceptions mentioned above regarding the site deployment.
  6. When updating the plugins page, move Maven Foo Plugin to under the "Retired" heading. Remove the SVN and JIRA links and add the date of retirement.
  7. When updating the version in JIRA, do not add Y.Z+1 and make sure you remove any future versions.

Clean up after the release

  1. Remove the .Jenkinsfile from all branches. This will remove the project from
  2. Remove the .github directory from default branch. This will remove GitHub Actions
  3. Ask INFRA for archive git repos (gitbox + github)
  4. Republish documentation, postfix project name with (RETIRED)
  5. When relevant update summary pages for plugins or shared components
  6. Add " (RETIRED)" at the end of the project name in JIRA.
  7. Put the JIRA project in read-only mode in case of standalone project (own Jira key): apply Maven Retired Project Permissions Scheme. (Requires JIRA admin karma: e.g. ask Brian Fox)
  8. Comment the dist-tool configuration entry.
  9. Remove from Source Repository
  10. Remove distribution from current dist area (history remains available in archive).
  11. Update board report
  12. Announce the fact that the plugin has been retired/moved on the announce@m.a.o and users@m.a.o mailing lists. Explain to people what they should do if they would like to continue development of the plugin.