On Fri, Jan 15, 2016 at 7:48 PM, John Burwell <john.burw...@shapeblue.com> wrote:
> Motivation > ======== > > The current monthly release cycle addresses the needs of users focused on > deploying new functionality as quickly as possible. It does not address the > needs of users oriented towards stability rather than new functionality. > These users typically employ QA processes to comply with corporate policy > and/or regulatory requirements. To maintain a growing, thriving community, > we must address the needs of both user types. Therefore, I propose that we > overlay a LTS release cycle onto the monthly release cycle to address the > needs of stability-oriented users with minimal to no impact on the monthly > release cycle. This proposed LTS release cycle has the following goals: > > * Prefer Stability to New Functionality: Deliver releases that only > address defects and CVEs. This narrowly focused change scope greatly > reduces the upgrade risk/operational impact and shorter internal QA cycles. > * Reliable Release Lifetimes: Embracing a time-based release strategy, the > LTS release cycle will provide users with a reliable support time frames. > Users can use these time frames provide users with an 20 month window in > which to plan upgrades. > * Support Sustainability: With a defined end of support for LTS releases > and a maximum of two (2) LTS releases under active maintenance at any given > time, community members can better plan their commitments to release > support activities. We also have a agreed upon policy for release > end-of-life (EOL) to debate about continuing work on old releases. > > Proposed Process > ============== > > LTS release branches will be cut twice year on 1 Jan and 1 July from the > tag of the most recent monthly release. The branch will be named <base > version>-LTS and each LTS release will be versioned in the form of <base > version>-<LTS revision number>. For example, if we cut an LTS branch based > on 4.7.0, the branch would be named 4.7.0-LTS and the version of the first > LTS release would be 4.7.0-0, the second would be 4.7.0-1, etc. This > release naming convention differentiates LTS and monthly releases, > communicates the version on which the LTS release is based, and allows the > maintenance releases for monthly releases without version number > contention/conflict. Finally, like master, an LTS branch would be always > deployable following its initial release. While it is unlikely that LTS > users would deploy from the branch, the quality discipline of this > requirement will benefit the long term stability of LTS releases. All PRs > targeting an LTS would require two LGTMs in order to be merged. > > The following are the types of changes that would permitted and guarantees > provided to users: > > * No features or enhancements would be backported to LTS release branches. > * Database changes would be limited to those required to address the > backported defect fixes. > * Support for the release/version of the following components from the > release on which the LTS is based throughout the entire release cycle: > * MySQL/MariaDB > * JDK/JRE > * Linux distributions > * API compatibility for between all LTS revisions. API changes would be > limited to those required to fix defects or address security issues. > > An LTS release would have a twenty (20) month lifetime from the date the > release branch is cut. This support period allows up to two (2) months of > branch stabilization before initial release with a minimum of eighteen (18) > months of availability for deployment. LTS releases would have the > following support periods: > > * 0-14 months: backport all defect fixes in the scope of the LTS release > functionality; fix all blocker and critical priority defects identified in > the branch > * 14-20 months: backport only CVE fixes in the scope of the LTS release > functionality; fix all blocker priority defects in the branch > > Defect fixes that originate in an LTS branch will be pulled forward to > master only. Finally, an LTS branch should be release the fewest times > necessary to deliver fixes in a relatively timely manner. Therefore, LTS > releases will be triggered based on the number of pending of fixes and > their severity with no defect fix awaiting release more than forty-five > (45) days. CVE fixes would trigger an immediate release of an LTS branch. > > Is this going to be official ASF CloudStack releases following the necessary protocol of vote periods, binding votes etc. or will this be a community release by 3rd parties? I am asking now so that we are all on the same page here when we get to the first release. > Resourcing and Proposed Timeline > =========================== > > Broad community support is vital to guarantee the twenty (20) month > support period for each LTS branch. Given the ebbs and flows of > contribution and committer priorities, ShapeBlue will provide a release > manager, as well as, engineering support to fill any contribution gaps to > ensure that the community fulfills LTS commitments. > > In order to prepare for supporting LTS releases, we would need to complete > the following items: > > 1. All tools that do version number comparisons would be made aware of the > LTS versioning scheme > 2. Officially support running the management server on Java 8 since Java 7 > has been EOL since last April [1] (i.e. compile to 1.7 with the Java 1.8 > compiler and run on Java 1.8). Providing a 20-month support window on an > EOL JVM is an unacceptable security risk. > 3. Update the wiki and website to explain the new release cycle and help > users decide which release type suits their needs > 4. Define an initial test plan for LTS stabilization > 5. Agree on the definitions of ticket severities > > In order to address these items and start on a regular rhythm, I propose > that first LTS cycle begin on 1 July 2015. In the interim, we would > continue to ship critical bug fixes from the 4.5 release as this release > seems to be the most commonly deployed in the community. > 1 July 2016 I assume? :-) > > Together, the monthly and LTS release cycles address the needs of the > entire Apache CloudStack user community. I believe that the process > described in the proposal will yield releases that meet the needs of users > requiring release stability without adversely affecting the velocity of the > monthly release cycle. > > Huge +1. I understand that a lot of people want fast and rapid releases, but that does not work for everyone, me included. I'll most likely run LTS in production, but latest monthly in labs/testing. -- Erik