Stable
From FBSD_tips
"I tried to upgrade to STABLE but i got 6.3-PRERELEASE instead"
[edit] FreeBSD development process.
First there is HEAD. This is the 'top' of the repo, and where most code not directly related to a release goes. Developers commit things from their private branches to HEAD. All development goes on in HEAD, not anywhere else. This branch is usually given the name X-CURRENT. where X is the next major version number.; as an example, right now HEAD is 8-CURRENT. Major changes in HEAD at this time, will eventually make it into to 8-STABLE and 8.0-RELEASE.
After a number of months (or years, depending.), a group of developers decide to cut what is called a 'STABLE' branch, from the HEAD tree. They give a portion of the tree a name, for example, 'RELENG_7', which is at this time just a snapshot of HEAD. After this snapshot is finished and committed, HEAD again becomes the developer playground.
Now, in this context, STABLE means stable ABI, it means syscalls remain binary compatible, ioctls don't change, kvm stays the same, etc. It is 'STABLE' in the developer sense, not the 'I'm going to use this on production on 2,000 machines that I'm deathly afraid to upgrade' sense.
[edit] Releases
Now, when a 'STABLE' branch is created, it is given a number. In our example, 7. From this 'RELENG_7' will come every 7 release, 7.0, 7.1, 7.2. To create the release, they will first start to stabilize the source tree. They first change the name to be -PRERELEASE, for example, right now RELENG_7 is '7.0-PRERELEASE'. During this time the -BETAs are built from the source tree, and are posted on the ftp servers. This step is necessary, so that people can merge in changes/bugfixes for code, and so that tricky pieces can be turned off or removed from STABLE before release.
After STABLE has been sufficently stabilized, the release engineering team tags the STABLE branch, much like HEAD is branched, into a 'RELENG_7_0' tag. At this point, we start seeing -RC builds hitting the ftp servers, and package builds start getting put together. When all the showstoppers have been fixed, after a few -RC builds, the final step is done. the RELENG_7_0 tree is tagged 'RELENG_7_0_RELEASE', and the builds for the true 7.0-RELEASE are made. These are what you find on the CDs and FTP servers.
After the release is made, the STABLE branch's name is changed to '7.0-STABLE', to signify that this part of the STABLE branch is after the 7.0 release, and before 7.1 is started.
For more information about the release engineering process, and it's current status, visit [1].
[edit] Release Branches
Now, RELENG_7_0 will get more attention after the release. Critical security fixes and bug fixes in RELENG_7 will normally be backported to RELENG_7_0, so users running RELENG_7_0 won't be stuck running insecure or critically broken software. This is what you also install using freebsd-update's update method. Normal Users will typically stay on a RELENG_7_0 or RELENG_6_2 branch, rather then RELENG_6 or RELENG_7 because there is a distinct guarentee on the quality of commits. Only what's necessary gets committed to those branches, after a -RELEASE.
