[[!meta title="Release schedule"]]

[[!toc levels=2]]

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

* [Google calendar](https://www.google.com/calendar/embed?src=mozilla.com_2d37383433353432352d3939%40resource.calendar.google.com)
* [Release schedule](https://wiki.mozilla.org/RapidRelease/Calendar)

The rationale was originally [written on
tails-dev](https://mailman.boum.org/pipermail/tails-dev/2012-April/001132.html).

The idea is to put a major Tails release out every 12 weeks, plus
a point release in between. See the [[contribute/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?

<a id="versioning"></a>

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.
