Believe it or not, FreeBSD as a whole is a really big project. The practice of keeping kernel and userland together in an operating system results in about 45,000 files that comprise the system's source. As with other big projects, some degree of control is needed.
(This article is intended for end-users, not developers; developers have a better inside view so they will have to ovelook omitted details)
It goes something like this (or at least it did/will be for 8.0-RELEASE):
- An approximate date is set on one of the DevSummits - this is usually of the granularity of "autumn 2009" rather than a specific day.
- As the set date approaches, a more specific deadline is set for a "code freeze".
- Developers try to get as much code into the tree as they can before the code freeze - this is still "free-for-all" time.
- After the code freeze, only code specifically approved by the release engineering (releng) team can go in.
- During various BETA releases, a RELENG branch - what is known for the users as a "STABLE" branch is created from VCS "head". Some early beta releases might be cut of the "head" of the tree, latter from the RELENG branch.
- Release candidates are cut from the RELENG (STABLE) branch. This is where debugging is turned off system-wide and the performance is as it should be in the released versions. Debugging is never turned back on for STABLE branches (except of course that developers have it on by themeselves).
- After a certain amount of BETA and RC releases, the number of which is determined ad-hoc as needed, a release comes out. Everyone is happy, especially developers who can now commit freely to "head" again.
The release engineering period for a major .0 release takes any time from a month to several months.
For some additional information, see these pages:
- Release engineering section of the official web (sometimes outdated)
- 8.0 TODO
- My list of new features for 8.0