Debian Release Nomenclature

While helping out on #debian, I see a lot of apparent confusion as to Debian's naming policy for branches and releases. Phrases like "I'm running Debian Sarge Stable" get thrown around, which makes me think that people don't really understand what they're doing. This document exists to aid clarification, promote greater understanding and help Debian users.

For more information, please see the Debian Releases page on the Debian website, or the Debian FAQ.

Disclaimer: Some of the information here has been simplified to make it easier to understand. This document does not represent Debian policy, nor is it written by anybody officially affiliated with the Debian Project.

Glossary

There's a slight difficulty in explaining the way Debian releases work, because the Debian Project itself uses inconsistent terminology. The Debian Releases page for example refers to the "actively maintained releases" as "distributions" when describing them, despite the fact that "distribution" is used to refer to an entire implementation of an operating system (such as Debian GNU/Linux). I shall therefore in this document use the common terminology I see in use on the Internet in general and in particular in #debian.

TermDebian Project equivalentDescriptionExample
DistributionDistributionAn implementation of an operating system.Debian GNU/Linux
ReleaseReleaseA mostly static set of Debian packages, collectively identified with a version number.Debian GNU/Linux 2.2
BranchRelease / DistributionA (mostly) concurrent set of Debian packages, under active maintenance, collectively identified with a functional name.Debian testing
CodenameCodenameA name, taken from Toy Story, used to uniquely identify a release or branch.Debian etch
RevisionRevisionA re-release of a Debian release, incorporating security updates.Debian GNU/Linux 3.1r1

Actively Maintained Branches

There are three actively maintained branches of Debian at any given time, known as stable, testing and unstable.

For twelve months after a new release of Debian, there is an extra actively maintained branch, called oldstable. Like the stable branch, this only receives security updates, and represents a wide window for people to upgrade their servers.

There is also a repository called experimental but this does not usually contain a complete set of Debian packages, and cannot be used in the same manner as the actively maintained branches.

How Releases Happen

Debian developers package up new versions of software for Debian, and release it into the unstable branch. If no major bugs are filed against it in a certain period of time then the package filters through into the testing branch.

Periodically, the Release Managers prepare the testing branch for release. They stop accepting new packages from unstable, except for those which fix outstanding bugs. This is called a freeze. When the bug count in testing reaches zero, they take all the packages in their current state in testing, and this becomes the new stable branch. A new, empty testing branch is then created and packages begin to pour into it from unstable as before.

Version Numbers and Revisions

Whenever a new release of Debian happens, and a new stable branch is formed, that stable branch is assigned a version number. The latest release at the time of writing has the version number 3.1. The version number is decided as part of the release process.

As the number of security updates for a release build up over time, it can be time-consuming and awkward to install the original released version and then perform security updates over the Internet, particularly if security updates have been released for large packages such as kernels. Hence periodic revisions are made, incorporating those updates into the base release. This is much like being able to obtain a copy of Windows with security packs included, rather than having to install the OS and then update.

There are other ways to obtain the updates incorporated in a revision, however - rather than replacing your previous Debian installation media with new ones, you can usually obtain an "update disk" or similar which includes all the updated packages in one bundle. This is particularly useful when the original media are expensive to produce, such as pressed DVDs.

Codenames

Each branch and release of Debian has a codename used to uniquely identify it throughout its lifecycle. When a new release is made and a new testing branch is created, that branch is assigned a codename. It cannot be given a version number, since the Release Managers don't know how it will look when it is finally released, hence they do not know whether it will require a minor or major version increment.

This codename can be used to refer to the branch before it is released, and the release afterwards. For example, "potato" was the testing branch created when the "slink" testing branch was released as the stable branch, and called "Debian GNU/Linux 2.1". When "potato" was released, it became the stable branch and was assigned the version number "2.2", and a new testing branch called "woody" was created. Now "potato" is obsolete - it is no longer a "testing" branch, or a "stable" branch, or even an "oldstable" branch. However, it is still "Debian GNU/Linux 2.2".

The important things to remember are:

  1. Stable and testing branches change over time. When a new release is made, the packages which were in the testing branch become the stable branch, those which were in the stable branch become the oldstable for twelve months, and a new testing branch is created.
  2. The unstable branch never changes. It is never released, it never "becomes" a testing branch, and it is never assigned a version number. It is always known by the codename "sid". See the #debian sid FAQ for more info.
  3. A new release is given a version number, which is permanently synonymous from then on with its codename.

Example

As a final example, let us observe what happened when Debian GNU/Linux 3.1 ("sarge") was released:

Before Release

BranchCodenameRelease
unstablesid
testingsarge
stablewoodyDebian GNU/Linux 3.0

After Release

BranchCodenameRelease
unstablesid
testingetch
stablesargeDebian GNU/Linux 3.1
oldstablewoodyDebian GNU/Linux 3.0

Note that the "oldstable" branch is only actively maintained for twelve months after release, so in July 2006 (12 months after sarge's release, six months before the proposed release date for etch), things will look like this:

12 Months After Release

BranchCodenameRelease
unstablesid
testingetch
stablesargeDebian GNU/Linux 3.1
woodyDebian GNU/Linux 3.0

Common Mistakes

I'd welcome any additions to this section.

Redundancy

I see many people on #debian referring to "Debian 3.1 sarge" or "Debian stable 3.1" or similar, in a way that suggests they don't understand the process outlined above. "Debian 3.1" is the same as "Debian sarge", is (currently) the same as "Debian stable". The terms can largely be used interchangably, though I personally prefer to avoid referring to the branch names as these will change over time.

"Debian sarge stable" is also a common one, I'm finding.

Other Distributions

This mistake is so wrong I'm not even sure it should be in this document, but I guess it's worth mentioning here just to be on the safe side.

Some GNU/Linux distributions have taken some, or most, of their code from Debian, and created their own distributions ("forks") based on them. These include Ubuntu, Kanotix, Kurumin and others. This ability to fork and redistribute is part of the freedoms granted to us by Free Software, and we should be grateful for it, regardless of our personal opinions of the merits of individual instances of forking. However, to refer to such forked distributions as "Debian Ubuntu" or "Debian Knoppix" is just plain wrong. The source code may have come from Debian's repositories at some point, but it is no longer associated with the Debian Project, or supported by them.

After all, most of the source code in Debian and other distributions comes from other sources first - for example, Debian's Linux kernels are taken from kernel.org, forked and redistributed as part of Debian, but it would not be correct to refer to Debian as "kernel.org Debian".


© 2006 Dave "PerfDave" Page