Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Some notes on how Roller releases are orchestrated.

The Release Cycle

Roller releases are made on an as needed basis. Here's an overview of the release cycle.

When a Roller committer would like to make a release at some point in the future, he/she simply proposes that release to the Roller mailing list. After gaining some consensus that a release is needed, a committer should then create a release proposal page on the Roller Wiki which specifies which new features will be in the release.

After some of the planned features are added, a committer may propose a milestone release. Milestone releases are not official releases. They are tagged in SVN and releases via informal mechanisms, e.g. a committers people.apache.org space. They are meant for testing only and not intended for production use.

Once a committer feels that the release is completely ready, he/she proposes to start making release candidates. A release candidate is a complete release, signed and ready to be shipped. Like milestone releases, release candidates are not official releases. They are meant for testing only and not intended for production use. After some feedback and testing has occurred and a release candidate appears to be good for final release, a vote is called. Once there are three +1 votes from PMC members the release can be made.

That's the overview, now let's talk detailsFollowing the philosophy of release early and release often, Roller aims for monthly releases. New releases will generally be scheduled for once per month around the beginning of the month. This is flexible and if the team feels a given month does not warrant a new release then we will wait until the following month.

Contributing to a release

If you want to add a feature to a release, you should create a JIRA issue describing the feature, assign it to yourself, and set the "fix-for" field for the release you want. (see the roadmap view in JIRA). For all but the smallest improvements and bug fixes, you should also write a proposal and get it reviewed by the community on the development mailing list (see the Ideas And Proposals page). If you are working on a feature marked as IN-PROGRESS in JIRA, then when you are done you should mark it as RESOLVED. Any work that is completed should be properly documented (user guide and/or install guide), change lists should be updated, and if needed database scripts are updated and tested.

Typical release schedule

Generally the team aims to provide the first release candidate (RC1) for a new release on the second to last Thursday of each month. Beginning at that point testing begins and focuses on those features marked RESOLVED for the given release. We iterate on RCs until the community is satisfied that all tests have passed and there are no more issues which should hold up the release. Then the release goes out, ideally around the beginning of each month. At that point all items which passed testing and are included in the release are marked as CLOSED.

Release Numbers and Versions

...

This section tells you where the right place is for your code and in general how the Roller repository is structured.

Roller Trunk

The roller Roller trunk is the main development repository and will try to always represent the version of the code base currently being developed for the next release. Each new release will be made from the trunk and distributed as appropriate. It is expected that any code commited to the trunk will be in full working order _in time for the next scheduled release_

Roller

...

Release branch

At some point while we are making release candidates for a Roller release, we may decide to create a branch for the release. We do this in cases where it is very important that post-release development continue in the trunk. The roller dev branch will be a branch representing the next major version of roller. So if the roller trunk currently represents the 1.x code base, then the roller dev branch will be for the 2.x code. This branch is mainly created for cases where a certain feature requires enough effort that it is automatically going to be scheduled just for the next major release. This is also where all work that requires major schema changes should happen.

Custom branches

A custom branch can be created whenever a feature is in development that is not on a certain schedule. this allows the custom branch to worked at whatever pace is desired and when the code is ready it can be applied to whatever branch is most appropriate.

...

All tags in the subversion repository are meant to be read-only archives of versions of Roller that went final. If you are ever looking for the code to a specific version of Roller you should look here. In roller svn this is at tags/*.

How a release happens

Creating a new release from the trunk

...

Code Block
branches/roller_1.x0 (the old 1.x branch currently representing roller 1.3)
trunkbranches/roller_1.1 (the currentold 21.x branch nowcurrently representing roller 2.1 in progress)
branches/roller_3.x (the upcoming 3.x branch which doesn't have anything new yet1.3)
trunk (now representing roller 2.1 in progress)

Matt has some code he has done to implement Acegi security, but he isn't sure it's going to be ready for the 2.1 release so he gets a custom branch.

...

Somebody finds a horrible bug in 1.2 1 (the last 1.x release) and decides it's worth taking the time to do a fix and release 1.1.3 1 from that branch.

Code Block
branches/roller_1.x1 (now represents potential 1.41.1 release)

Matt feels comfortable that the Acegi stuff is ready, so the acegi branch is put into the current trunk so it'll go into the 2.2 release.

...

Code Block
branches/roller_3.x0 (anil doing tag work)
trunk (now represents 2.3 dev work)

...

Code Block
branches/roller_2.x2 (created from trunk after last 2.2 release, represents potential 2.32.1 release)
trunk (now represents 3.0 release, includes Anil's tag work)
branches/roller_4.x0 (created for new major release work)