*unstable: The application first starts in the unstable branch. It is in this branch that it is tested and refined. Ideally, bugs that are found in an application get passed upstream to the application developer(s) and the application is blocked until critical bugs are resolved. Unstable is generally a rapidly rolling product testing branch. (http://packages.debian.org/unstable/) *testing: Once the application has been tested in unstable and deemed fit, it is moved into testing. In testing, the application is tested even more rigorously. It is tested against other applications on the system and under many diverse circumstances. The testing branch as a whole is continuously tested until the entire branch is considered "stable" enough for release. (http://packages.debian.org/testing/) *stable: After the entire distribution has been tested, and bad applications weeded out, the contents of the testing branch move into the stable branch and a major release is made. Because Debian developers are so very rigourous in their testing, once they do release a stable branch, that branch can really be considered stable. Unfortunately, this comes at a price: the versions of the applications in stable can sometimes be quite old. (http://packages.debian.org/stable/)
*unstable: The application first starts in the unstable branch. It is in this branch that it is tested and refined. Ideally, bugs that are found in an application get passed upstream to the application developer(s) and the application is blocked until critical bugs are resolved. Unstable is generally a rapidly rolling product testing branch. (http://packages.debian.org/unstable/, sid) *testing: Once the application has been tested in unstable and deemed fit, it is moved into testing. In testing, the application is tested even more rigorously. It is tested against other applications on the system and under many diverse circumstances. The testing branch as a whole is continuously tested until the entire branch is considered "stable" enough for release. (http://packages.debian.org/testing/, sarge) *stable: After the entire distribution has been tested, and bad applications weeded out, the contents of the testing branch move into the stable branch and a major release is made. Because Debian developers are so very rigourous in their testing, once they do release a stable branch, that branch can really be considered stable. Unfortunately, this comes at a price: the versions of the applications in stable can sometimes be quite old. (http://packages.debian.org/stable/, woody)
stable, testing and unstable
Debian really consists of three main branches of development: stable, testing and unstable. The typical testing cycle that an application goes through when accepted into Debian is as follows:
unstable: The application first starts in the unstable branch. It is in this branch that it is tested and refined. Ideally, bugs that are found in an application get passed upstream to the application developer(s) and the application is blocked until critical bugs are resolved. Unstable is generally a rapidly rolling product testing branch. (http://packages.debian.org/unstable/, sid)
testing: Once the application has been tested in unstable and deemed fit, it is moved into testing. In testing, the application is tested even more rigorously. It is tested against other applications on the system and under many diverse circumstances. The testing branch as a whole is continuously tested until the entire branch is considered "stable" enough for release. (http://packages.debian.org/testing/, sarge)
stable: After the entire distribution has been tested, and bad applications weeded out, the contents of the testing branch move into the stable branch and a major release is made. Because Debian developers are so very rigourous in their testing, once they do release a stable branch, that branch can really be considered stable. Unfortunately, this comes at a price: the versions of the applications in stable can sometimes be quite old. (http://packages.debian.org/stable/, woody)
So how does all this help the potential Debian system administrator? Well, that all depends on how paranoid you are. If you have a critical system which cannot tolerate any bugs whatsoever, and you don't need the latest, bleeding edge applications, then stable will work for you. If you are a little less reserved, and possibly want the equivalent of a Red Hat distribution, then you may want to live in testing. If you need the latest, greatest, bleeding edge applications and don't mind a little bit of instability, then you will want to use unstable.
NOTE: You can, technically, work out of two or more of these branches at a given time. So if you want the stability of stable, and yet you need the versions of KDE, Gnome, and XFree86 found in unstable, it can be done. It's tricky, and will not be covered here, but you can read an overview of how it's done [here].
Debian as a Meta-Distribution
One of Debian's strengths is that it is not just one distribution but many. In fact, it can be considered a meta-distribution that can be morphed and modified to meet many different needs. Some notable Debian internal projects:
Debian-Med : The goal of Debian-Med is a complete system for all tasks in medical care which is build completely on free software. (http://www.debian.org/devel/debian-med/)
Debian-LEX : Project to develop Debian into an operating system that is particularly well fit for the requirements for legal offices. (http://www.debian.org/devel/debian-lex/)