Tails has a time-based release schedule, aligned with Firefox ESR (Extended Support Release) that are put out every 6 weeks:

The rationale was originally written on tails-dev.

The idea is to put a major Tails release out every 12 weeks, plus a point release in between. See the calendar.

Schedule

  /          4w         \/   2w    /4d\

  previous               RC1    ESR sources
  ESR + Tails             |        |
  release          freeze |        |  new ESR + Tails
  |                     | |        |  release
  |                     | |        |  |
  ↓                     ↓ ↓        ↓  ↓
._____._____._____._____._____._____._____.
0     1     2     3     4     5     6

In the above:

  • ESR sources means the source code for the upcoming Firefox ESR is available, but the ESR is not officially out yet: it has to go through Mozilla's QA process first. Sources are generally available on Friday night (US time).
  • ESR + Tails release means Mozilla announces the new Firefox ESR, and we release a new version of Tails (roughly) the same day. This usually happens on Tuesday night (US time).

What if things go wrong?

Postponing the final release causes problems for those who have scheduled time for post-release user support, press work, etc..

Also, changing our mind (i.e. releasing a point-release instead of a major one) => switching minor/major release schedule for the future is probably not an option either.

So we need to have a pessimistic enough RC->final schedule to handle unexpected issues.

Reverting the faulty feature branch is an option too.

Remaining issues

  • When to run the test suite: RC1 and/or RC2?

Versioning scheme

  • We always increment the first number when switching to a new major release of Debian.
  • We also increment the first number whenever it make sense for Tails only (user-visible changes).
  • The second number is even for major release (introducing new features), and odd for minor release (that only fix bugs).
  • We allow ourselves to skip numbers if we release two major or two minor releases in a row (eg. 2.0 followed by 2.2).
  • We add an extra, third number for emergency releases.