Archive

Debian Release Process

Debian’s release process is frequently misunderstood, and the large number of overlapping and shifting code-names can be confusing. This page attempts to explain how the development of Debian works.

First of all, Debian has three development “distributions”:

  • unstable: Rapidly-changing development distribution. Expect things to break
  • testing: Packages that have undergone a (minimal) QA process
  • stable: The current stable release

Any one of these can be installed and used with apt (aptitude, synaptic, …) to perform automated package updates. Updates to stable will only be security fixes, and will not change the version of the package.

Secondly, each of the three distributions has a code-name. The code-names for testing and stable change over time as releases are made. At the time of writing, the code-names are:

  • unstable = sid
  • testing = etch
  • stable = sarge

The development process

The main Debian development process is that packages are put together by Debian Developers, and uploaded into unstable. After 10 days in unstable without having any release-critical (RC) bugs filed against them, they are moved to testing, where they can get wider testing by people. The only time that a stable package is changed is when it has a security bug, and the bug-fixed package is placed directly in stable, bypassing unstable and testing.

The release process

At some point, a release process is started. Over time, the requirements to move a package from unstable to testing become more restrictive (base packages bug-fixes only; no changes to base packages; all packages bug-fixes only). This slows down the rate of change of the testing distribution. At some point, testing has some very limited number of release-critical bugs (usually fewer than 10), and a release is made.

When a release is made, testing is copied wholesale to stable. The code-name for testing is also copied to stable, and testing is given a new code-name. So, before the last release Debian made, the three distributions looked like:

  • unstable = sid
  • testing = sarge
  • stable = woody

After the release, they were:

  • unstable = sid
  • testing = etch
  • stable = sarge

and, immediately following the release, testing and stable were identical. Then the restrictions on packages moving from unstable to testing were relaxed back to normal, and testing started diverging from stable again with new versions of packages moving from unstable.

Note that in a release, unstable doesn’t change its name, and that at no point is unstable copied as a whole to testing.

Leave a Reply