Release Plan

From The Document Foundation Wiki
Revision as of 2012-12-10T17:20:27 by Pmladek (Talk | contribs) (Added the schedule for 4.1 and 4.2 releases. Updated 4.0.3 and higher releases to better interlock with 4.1.)

Jump to: navigation, search

Summary

LibO Lifecycle

Time based release trains have been shown to produce the best quality Free software. A time based release is one that does not wait for either features, or bug fixes - but is based (as purely as possible) on time. This enforces discipline in introducing fixes, gives predictability, and allows more regular releasing. It is also the case that we will necessarily release earlier, and then rapidly, incrementally bug fix releases based on the previous stable version. Thus if you have a need for the very highest quality version, it can make sense to defer a move until the first or perhaps second minor point release.

Synchronizing our time based release schedule with the wider Free Software ecosystem also has huge advantages, by getting our new features, out to users as quickly as possible - with a minimum of distribution cycle lag. In consequence, we will aim at six monthly releases, and over time nudge them to align well with the March / September norms.

Note that the dates mentioned in the schedule might get shifted if there are serious technical or other problems with the release. An extra RC might be needed if the final release candidate does not fit the release criteria. Such problem would shift the final release by one week or even more.

3.5 release

basic dates
release freeze publishing
3.5.0 Week 49, Dec 5 - Dec 11, 2011 Week 6, Feb 6 - Feb 12, 2012
3.5.1 Week 8, Feb 20 - Feb 26, 2012 Week 10, Mar 5 - Mar 11, 2012
3.5.2 Week 12, Mar 19 - Mar 25, 2012 Week 14, Apr 2 - Apr 8, 2012
3.5.3 Week 16, Apr 16 - Apr 22, 2012 Week 18, Apr 30 - May 6, 2012
3.5.4 Week 20, May 14 - May 20, 2012 Week 22, May 28 - Jun 3, 2012
3.5.5 Week 24, Jun 11 - Jun 17, 2012 Week 28, Jul 9 - Jul 15, 2012
3.5.6 Week 31, Jul 30 - Aug 5, 2012 Week 33, Aug 13 - Aug 19, 2012
3.5.7 Week 38, Sep 17 - Sep 23, 2012 Week 41, Oct 8 - Oct 14, 2012

See also the detailed schedule and the release notes.

3.6 release

basic dates
release freeze publishing
3.6.0 Week 23, Jun 4 - Jun 10, 2012 Week 32, Aug 6 - Aug 12, 2012
3.6.1 Week 33, Aug 13 - Aug 19, 2012 Week 35, Aug 27 - Sep 2, 2012
3.6.2 Week 37, Sep 10 - Sep 16, 2012 Week 40, Oct 1 - Oct 7, 2012
3.6.3 Week 41, Oct 8 - Oct 14, 2012 Week 44, Oct 29 - Nov 4, 2012
3.6.4 Week 46, Nov 12 - Nov 18, 2012 Week 49, Dec 3 - Dec 9, 2012
3.6.5[1] Week 3, Jan 14 - Jan 20, 2013 Week 5, Jan 28 - Feb 3, 2013
3.6.6 Week 12, Feb 18 - Feb 24, 2013 Week 15, Apr 8 - Apr 14, 2013

See also the detailed schedule and the release notes.

4.0 release

basic dates
release freeze publishing
4.0.0 Week 49, Dec 3 - Dec 9, 2012 Week 6, Feb 4 - Feb 10, 2013
4.0.1 Week 8, Feb 18 - Feb 24, 2013 Week 10, Mar 4 - Mar 10, 2013
4.0.2 Week 11, Mar 11 - Mar 17, 2013 Week 14, Apr 1 - Apr 7, 2013
4.0.3 Week 16, Apr 15 - Apr 21, 2013 Week 19, May 6 - May 12, 2013
4.0.4 Week 22, May 27 - Jun 2, 2013 Week 25, Jun 17 - Jun 23, 2013
4.0.5 Week 28, Jul 8 - Jul 14, 2013 Week 31, Jul 29 - Aug 4, 2013
4.0.6 Week 39, Sep 23 - Sep 29, 2013 Week 42, Oct 14 - Oct 20, 2013

See also the detailed schedule and the release notes.

4.1 release

basic dates
release freeze publishing
4.1.0 Week 21, May 20 - May 26, 2013 Week 30, Jul 22 - Jul 28, 2013
4.1.1 Week 32, Aug 5 - Aug 11, 2013 Week 35, Aug 26 - Sep 1, 2013
4.1.2 Week 36, Sep 2 - Sep 8, 2013 Week 39, Sep 23 - Sep 29, 2013
4.1.3 Week 41, Oct 7 - Oct 13, 2013 Week 44, Oct 28 - Nov 3, 2013
4.1.4 Week 48, Nov 25 - Dec 1, 2013 Week 51, Dec 16 - Dec 22, 2013
4.1.5 Week 3, Jan 13 - Jan 19, 2014 Week 6, Feb 3 - Feb 9, 2014
4.1.6 Week 14, Mar 31 - Apr 6, 2014 Week 17, Apr 7 - Apr 13, 2014

See also the detailed schedule and the release notes.

4.2 release

basic dates
release freeze publishing
4.2.0 Week 47, Nov 18 - Nov 24, 2013 Week 5, Jan 27 - Feb 2 , 2014
4.2.1 Week 7, Feb 10 - Feb 16, 2014 Week 10, Mar 3 - Mar 9, 2014
4.2.2 Week 11, Mar 10 - Mar 16, 2014 Week 14, Mar 31 - Apr 6, 2014
4.2.3 Week 16, Apr 14 - Apr 20, 2014 Week 19, May 6 - May 12, 2013
4.2.4 Week 22, May 26 - Jun 1, 2014 Week 25, Jun 16 - Jun 22, 2014
4.2.5 Week 28, Jul 7 - Jul 13, 2014 Week 31, Jul 28 - Aug 3, 2014
4.2.6 Week 39, Sep 22 - Sep 28, 2014 Week 42, Oct 13 - Oct 19, 2014

See also the detailed schedule.

Dates

The release is time based but the schedule defines calendar weeks instead of exact dates. It is because we are always a bit flexible. The release can be delayed by few days because of blocker bugs, build problems, and other technical issues.

The release consists of several beta and release candidate builds. There are needed several actions for each build. The ideal work-flow looks like:

  • Monday - commit deadline; reminder is sent to devel, l10n mailing list before it happens
  • Tuesday - the tag is created on a commit that builds and passes unit-, subsequent-, and smoke-tests; tag is announced on the devel and qa mailing lists
  • Wednesday - builds are uploaded on the early pre-release site; they are announced on the devel and qa mailing lists
  • Thursday - builds are uploaded on mirrors
  • Friday - build are available via the official pre-release site; they are announced via many channels, e.g. mailing lists, twitter

The final release is usually announced on Wednesday, few days after the final release candidate is out.

Note that we are very strict about commits to the final release candidate, so full regression test is not needed. It is used as the final build when it passes the needed tests. It is just renamed on mirrors.

Schedule

The schedule is based on the following rules:

  • do the release every six months and synchronize it with major Linux distributions
  • do a bugfix release every month after the main release until it is good enough even for the most conservative people; do it less frequently afterwards
  • do bug fix releases, including security fixes, until the next release is ready for most conservative people
  • do not do two builds the same week

The result is the following template:

interlocking releases
event summer winter
x.y feature freeze jun(b) Dec(b)
x.y.0 release Aug(b) Feb(b)
x.y.1 release Sep(b) Mar(b)
x.y.2 release Oct(b) Apr(b)
x.y.3 release Nov(b) May(b)
x.y.4 release Dec(b) Jun(b)
x.y.5 release Feb(m) Aug(m)
x.y.6 release Apr(m) Oct(m)

, where (b) means the beginning of the month, (m) means the middle of the month and (e) means the end of the month.

Version scheme

We do several builds around each release. The following versioning scheme is used:

  • X.Y.0.0.alphaZ - Zth alpha version of the initial release
  • X.Y.0.0.betaZ - Zth beta version of the initial release
  • X.Y.0.Z - Zth release candidate of the initial release, last rc is considered as final and put on the main download page
  • X.Y.1.Z - Zth release candidate of the 1st bugfix release, last rc is considered as final and put on the main download page

It seems to be the best compromise with the following advantages:

  • easy to understand for normal users, alpha, beta flags are known from other projects, so they set reasonable expectations
  • correct alphabetical sorting in RPM, bugzilla
  • "easy" to parse (alpha/beta strings delimited by dot)

There was a long discussion about this scheme on the mailing list.

Accelerating the release cycle

This acceleration of the release cycle involves some considerable release engineering and QA effort. To reduce the cost of these, we work to provide complete (ie. containing all languages) daily snapshots of the master branch to allow continual testing of code improvements. This works partially already, as can be seen/downloaded here.

Similarly, we plan to increasingly automate the build process to allow a much lower-touch release flow, and to continue to shrink the footprint of our binaries to allow far more rapid transfer of product-equivalent builds.

References

  1. If a blocker is found in 3.6.5-rc1, do 3.6.5-rc2 during week 6 and delay the whole release by two weeks

Old Releases

3.4 release

basic dates
release freeze publishing
3.4.0 Week 13, Mar 28 - Apr 3, 2011 Week 22, May 30 - Jun 5, 2011
3.4.1 Week 24, Jun 13 - Jun 19, 2011 Week 26, Jun 27 - Jul 3, 2011
3.4.2 Week 28, Jul 11 - Jul 17, 2011 Week 30, Jul 25 - Jul 31, 2011
3.4.3 Week 33, Aug 15 - Aug 21, 2011 Week 35, Aug 29 - Sep 4, 2011
3.4.4 Week 43, Oct 24 - Oct 30, 2011 Week 45, Nov 7 - Nov 13, 2011
3.4.5 Week 50, Dec 12 - Dec 18, 2011 Week 2, Jan 9 - Jan 15, 2012
3.4.6 Week 10, Mar 5 - Mar 11, 2012 Week 12, Mar 19 - Mar 25, 2012

See also the detailed schedule and the release notes.

3.3 release

basic dates
release freeze publishing
3.3.0 Week 48, Nov 29 - Dec 5, 2010 Week 4, Jan 24 - Jan 30, 2011
3.3.1 Week 6, Feb 7 - Feb 13, 2011 Week 8, Feb 21 - Feb 27, 2011
3.3.2 Week 10, Mar 7 - Mar 13, 2011 Week 12, Mar 21 - Mar 27, 2011
3.3.3 Week 22, May 30 - Jun 5, 2011 Week 24, Jun 13 - Jun 19, 2011
3.3.4 Week 31, Aug 1 - Aug 7, 2011 Week 33, Aug 15 -Aug 21, 2011
3.3.5 skipped skipped

See also the detailed schedule.