Release Practice Guidelines
Release Practices
Sakai's release practices have evolved to meet our community's goals for 2008 and beyond:
Create the highest quality core software.
Seek to engage new members of the community.
We plan to meet these by satisfying two key release requirements:
high-quality, easy to deploy and maintain software with long-term support, and
frequent, easy access to new functionality
The evolution of our release practices was the subject of much on-line discussion leading up to the Newport Beach 9th Sakai Conference, further discussion in conference sessions and BOFs, and post-conference proposals and community feedback. The discussion was also influenced by the community's recent experience with the Sakai 2.5 release process, as well as areas of past consensuses, including maintenance branches, feature branches, experimental branches, and release or freeze timelines. Two additional topics that were considered (minor releases and kernel releases) are not yet incorporated in the guidelines, as community consensus is still being built in these areas.
The most recent evolution of these guidelines, including thoughts on minor releases, can be viewed here. The Original Sakai Release Practices document, is now deprecated, but also provides useful reference materials for those interested in this topic.
Release Practice Guidelines
The following guidelines outline community expectations and practices for the various Sakai release and branch types. They represent the culmination of extensive community discussion and deliberation, as noted above. It is likely, however, that future needs will require the evolution of these guidelines, so we will periodically review them in conjunction with each major release, or more often, if circumstances dictate. (Also, see "Jira – Sakai's Issue Management and Tracking System" for best practices for using Jira in Sakai development.)
Major Releases
Major Releases are targeted at organizations for which a stable, long-term deployment is desired, and for which access to Maintenance Releases as a resource for bug fixes is critical.
Predominately driven by the completion of significant improvements and enhancements in Sakai, developed in |#Jira Branches, since the previous major release.
Also incorporates bug fixes and minor enhancements developed in trunk, and functionality developed in |#Feature Branches since the last major release.
If such functionality fails to meet a release deadline, then an evaluation will be made to balance the benefits of adjusting the deadline versus delaying the timely availability of other new functionality in the release.
Major releases are expected to occur approximately every twelve months, early in the calendar year, and be supported by an active Maintenance Branch with periodic |#Maintenance Releases for two years (or longer, if there are sufficient community resources and interest).
A Feature Freeze approximately six months before the official release, and roughly two months before Code Freeze and QA begins, will help solidify expectations of what will be in a release. (See the Sakai Roadmap for a current overview of tentatively planned Sakai functionality.)
QA across the whole application carried out through the coordinated activities of the QA Working Group and early adopters during approximately four to six months of QA, beta, and release candidate tags.
Release Timeline
Timeline Changing
With the move away from the use of Tool Status (Core/Provisional/Contrib) to a Tool and Service Scorecard, a lot of the events in the timeline are likely to disappear or at least change. Look for an updated generic timeline after the Sakai 2.6 release, as we learn from the Sakai 2.6 release process and the scorecard concept is further developed.
The Release Timeline (or Freeze Timeline) provides a series of freeze dates to help coordinate activities across the projects and to encourage communication to the community about what is intended to be in a release. The release team reserves the right to adjust deadlines, in order to produce a quality release. (See Sakai 2.6 Release Schedule for an example of this timeline in practice.)
Event | Weeks | Description | Responsibility |
|---|---|---|---|
Feature Freeze | 24 | Preliminary tool and service specification should be shared for work intended for the next release. A complete specification for the project should be made available in the project's Confluence space, and a summary should be incorporated into the Sakai Roadmap. | Project Teams |
Accessibility Testing Begins | 24 | Accessibility Working Group begins coordinated testing of previous release and filing issues in Jira; includes the use of evaluation tools and JAWS to identify problems. | Accessibility WG |
Call for Tool Promotions | 24 | Put call out final call for nominations of tools to be promoted/demoted in the release. | Project Coordinator |
Specification Freeze | 20 | Project specifications are frozen. Summaries and full specifications should be re-published in their updated form, including for projects seeking tool status changes. | Project Teams |
Tool Promotion Deadline | 20 | End of nominations for tool status changes. Discussion of tool promotion can begin prior to this, but all should be underway by this time. | Community |
Accessibility Testing Ends | 20 | Accessibility testing completed. | Accessibility WG |
Upgrade Freeze | 18 | Upgrades and additions to shared/common jar files and tools (e.g., java, maven, dbcp, spring, hibernate, tomcat) are completed. | Project Teams |
Tool Status Freeze | 18 | Decisions are finalized on promoting and retiring tools. Project teams begin work related to status changes. | Community |
Code Freeze | 16 | All changes to code completed, including sakai.properties settings, appropriate default permissions, work related to tool status changes, database upgrade/conversion scripts, help documentation, etc. Begin determining what features are incomplete and removing them from the release in time for the Test Freeze. | Project Teams |
Test Freeze | 15 | Complete the removal of unfinished features. Final specifications are published in full and summary forms. Formal QA begins; informal QA, such as verifying Jira's, is likely to have been going on for awhile prior to this. Generally only bug fixes are allowed past this point. | Project Teams |
QA tags | 15 | Begin tagging QA releases. | Branch Manager |
Branch Freeze | 10 | Branch for release is cut from trunk. Changes after this point will require merging from trunk to the release branch. | Branch Manager |
Beta tags | 10 | Begin tagging beta releases. | Branch Manager |
String Freeze | 8 | No more changes in UI text, so the Internationalization WG can create translations and the Help WG can update documentation. Implementors can also begin updating their local documentation. | Project Teams |
Release Candidates | 6 | Begin tagging release candidates. | Branch Manager |
Official | 0 | Software is officially released. | Everyone |