Apache Shindig Release Process

This document describes how Apache Shindig's committers will make a release.

Notes:

  1. This process is based on the Maven Release Process. Please read it firstly for the prerequisites and technical notes.
  2. The items 2 to 5 should take you 1-2 hours, depending your machine and your Internet connection.
  3. Some of the build steps require more than the default amount of maven memory. You should set MAVEN_OPTS to a larger value, -Xmx512m seems to be sufficient.

1. Release Discussions

The starting point will be a consensus in the developer community about the release and the JIRA issues to include (or not) in the next release. Typically, the discussion will be on the Dev List.

2. Prepare The Release

Duration: 20 min

Now that everybody in the community is happy to push a release, the release manager needs to verify the source code before to continue:

  1. Make sure there are no snapshots (less the current version) in the POMs to be released.
  2. Check that your POMs will not lose content when they are rewritten during the release process.
    1. mvn release:prepare -DdryRun=true -Papache-release
    2. Diff the original file pom.xml with the one called pom.xml.tag to see if the license or any other info has been removed. The only things that should be different between these files are the version and scm elements. Any other changes, you must backport yourself to the original pom.xml file and commit before proceeding with the release.
    3. Verify that all Apache Shindig modules will be touched, including assembly and samples.

Next, prepare the release by calling Maven:

mvn release:clean -Papache-release
mvn release:prepare -Papache-release

Notes:

  1. -Papache-release is very important since assembly and samples modules are not included by default in the build (for productivity reasons).
  2. Preparing the release will create a new tag in SVN, automatically checking in on your behalf. Verify the SVN logs in the Commit List or review the generated tag.
  3. All license headers and legal files will be checked by RAT (Release Audit Tool).

3. Stage The Release

Duration: 30 min

Call Maven to publish the generated artifacts:

mvn release:perform -Papache-release

Note: All artifacts will be signed and pushed to https://repository.apache.org/.

Close the staging repository as described in the points 5 and 6 of the Maven Release Process.

4. Deploy The Documentation

Duration: 20 min

Call Maven to publish the generated technical site:

cd target/checkout
mvn site -Preporting
mvn site:deploy

Optional: Redeploy the current website:

cd trunk/site
mvn clean site
mvn site:deploy

Note: Wait for the sync before to see the changes in http://shindig.apache.org/.

5. Propose A Vote

Start a release vote on the Dev List. The vote must be aligned with the Apache vote process.

Typically, the mail should include the Jira release notes, the staging repository URL and the site URL, for instance:

To: "Shindig Developers List" <dev@shidnig.apache.org>
Subject: [VOTE] Release Apache Shindig version X.Y

Hi,

We solved N issues:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=XXX&styleName=Html&projectId=12310741

There are still a couple of issues left in JIRA:
https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&pid=12310741&status=1

Staging repo:
https://repository.apache.org/content/repositories/shindig-staging-[YOUR REPOSITORY ID]/

Web site:
http://shindig.apache.org/

Vote open for 72 hours.

[ ] +1
[ ] +0
[ ] -1

6. Publish The Release

Promote the release as described in the points 10 of the Maven Release Process.

Also, update Jira to specify the release date.

7. Publish The Website

Update the download page and redeploy the website (need to sync):

cd trunk/site
mvn clean site
mvn site:deploy

8. Announce The Release

Create an announcement similar to:

From: YOUR_APACHE_USERNAME@apache.org
To: announce@apache.org, dev@shindig.apache.org
Subject: [ANN] Apache Shindig X.Y Released

The Apache Shindig team is proud to announce the release
of Apache Shindig, version X.Y-incubating.

Apache Shindig is a JavaScript container and
implementations of the backend APIs and proxy required for hosting
OpenSocial applications.

http://shindig.apache.org/

Enjoy,

-The Apache Shindig Team