Diagrams of the Debian Release Cycle

These are some diagrams I drew to illustrate the Debian release cycles and their distribution names. I drew them for inclusion on Kamaraju Kusumanchi's "Choosing a Debian Distribution" page. The diagrams and this text are public domain. You can do whatever you want with them, including releasing them under other licenses.

These are purely subjective and qualitative descriptions of the "maintainance problems" associated with a release over time. They do not represent the number of bugs over time, even though that is strongly related. It includes problems such as the level of support, the intuitiveness or continuity with previous iterations, usability, and just generally the feeling of "finishedness" of the distribution.

The first diagram shows the various releases named after characters in Toy Story: "Wheezy", "Jessie", "Stretch" and "Sid".

Sodipodi SVG source file

The second diagram shows the various descriptive release names: "Stable", "Unstable" and "Testing".

Sodipodi SVG source file

Description of the diagrams

Debian follows a regular release cycle. Although the roles of the various named distributions changes radically over time, the overall picture of what Debian looks like follows a regular pattern.

The unstable branch is similar to the testing branch. The difference is that unstable is, well, less stable. Many bugs get introduced into unstable that are fixed before the package gets to testing, so more bugs are introduced into unstable than testing. However, unstable reacts quicker - bugs take less time to get fixed. As a result, at any given moment, on average, there will be just as many bugs in testing as in unstable. The choice depends on what bothers you more: having a bug pop up, or having a bug take ages to get fixed. If it's the former, choose testing; if it's the latter, choose unstable.

To show this, the unstable curve wobbles around at a high frequency, representing bugs being introduced and fixed rapidly. The testing curve is smoother, representing a smaller rate of bug introduction and a smaller rate of bug fixing.

When a freeze is declared, changes stop flowing from unstable to testing. No new bugs are introduced from testing, so the testing distribution becomes more stable while the testing doesn't. In fact, bugs might be found and fixed in testing but not in unstable, which means the unstable bug count will start to rise. Thus, unstable and testing really start to diverge once the freeze is declared.

When the bug count in testing reaches a threshold acceptable for a stable distribution, it's released. The "stable" symlink is switched to the distribution that was in testing. A new copy of the testing repository is made and this becomes the new testing branch. Thus, at this point the "testing" and "stable" curves touch. The unstable branch however is at this point off in its own little world.

A stable distribution will still have bugfixes applied, it just won't have new features introduced; which means it shouldn't have new bugs introduced either. Thus, the stable distribution should become more stable over time.

That means that when a new stable distribution is released, users who are tracking "stable" will see a sudden sharp increase in the instability of their system. Them's the breaks I guess. For that reason it may be beneficial to stick to the old stable distribution for six months or so until the new stable distribution has settled down a bit.

If you stick to a particular version, say Wheezy, over the really long term, past the release of Stretch, the instability may actually increase. At this stage, Wheezy isn't even the stable distribution, and so there will be very few users using it and very few developers supporting it. Bugs that were previously unnoticeable can become very noticeable due to changing circumstances (think of the recent wall of spam, phishing attacks, or even the millenium bug). To avoid trouble, it's probably a good idea to stick to a supported system.

As soon as a release happens, developers will start bringing in all those upgrades that have been hanging around in unstable into the testing branch. Thus the testing branch will rapidly accumulate a raft of new bugs, shown by a tight slope of the curve.

More and more bugs will accumulate until about three quarters of the way through the cycle, when the release team will start to panic about all the bugs and start throwing bug squashing parties. During the crunch, there will be rapid progress in eliminating bugs and the curve will turn down sharply.

The diagrams show seven lines, representing seven different options you have for setting up your sources.list (including Stretch, which will only be possible after the release of Jessie). There are reasons why you might choose any of these:

The colours are warning sign red for Jessie and safe soothing blue for Wheezy. Er, and futuristic green and testingy yellow. Actually yellow works because it's light and so doesn't obscure the other lines when it passes over them.

Back to my homepage
Matthew Exon
Last modified: Tue Apr 5 15:48:26 CEST 2005