Debian's Development Procedures
So, you now know the basics of Debian, and you know the history of the Linux based program as well, if you have read the first two parts of this in-depth look at the program. This next part will take you through the development procedures so that you will have a better understanding of how the newest releases are developed by the Debian creators.
There are two different ways that the software packages that are currently in development are uploaded: either to the project branch that is named unstable (or sid) or through the experimental branch. These software packages that are uploaded to sid are usually versions that are stable enough to be released, but they have added Debian-specific packages or another type of modification that was placed into the program by the Debian developers. Since these additions to the Debian software packages are new and untested, they have to be placed in one of these two areas so that the testers can try them out. Any software that is not ready to hit the unstable branch yet is normally placed in the experimental side.
When the software package has been in the unstable stage for a specific length of time determined by the urgency of the changes, it is then automatically placed into the testing branch. The switch over to testing only happens if there are no critical bugs that are reported and if the other software in the package is functioning and ready to be included with it for testing.
Now, the updates to the Debian software packages don't contain any new features in between the official releases. So, many people choose to try out the testing and unstable branches to see what newer packages are out. But, these packages are usually a lot less stable than the ones in the releases, and sometimes they don't get the right security updates that they need. There are several upgrades that go to working unstable packages that can reek some major havoc and destroy software functions. To help remedy this situation, in September of 2005, the testing branches began to provide security testing as well on these newer packages. Once the packages have been tested and have met all of their set goals, they are then released as the next stable release.