By Wael

Posted :

What is freebsd-current , freebsd-stable , dot-zero release , and point release ?

FreeBSD is formed from :

The source code for the FreeBSD base system, ports and documentation , is stored by using a central subversion repository .

The repository has the following structure :

svnweb-freebsd-org
Table of contents What is -current or freebsd-current ? What is -stable or freebsd-stable and the dot-zero release ? What is a point release ? What are alpha builds ?

1- What is -current or freebsd-current ?

Development of the FreeBSD base system , is done in the -current trunk , also known as : freebsd-current . It is where new features are tested , added , and removed . This is where code will be first reviewed, and tested , by FreeBSD users , and other FreeBSD developers .

The freebsd-current trunk , is not to be used in production environment. freebsd-current has a tag of head .

svnweb-freebsd-org-base

2- What is -stable or freebsd-stable and the dot-zero release ?

Every two to three years , the FreeBSD release engineering team , creates a stable branch from the -current trunk . For example, the stable branch 6 , was created in 2005 , the stable branch 7 was created in 2008 , the stable branch 8 was created in 2010

There exists only one -current trunk , but there might be several -stable branch , at a given time .

To create a -stable branch , the FreeBSD release engineering team , requests from developers , to focus on stability , and on fixing existing bugs , instead of adding new features to freebsd-current . At this stage, commits approval to the -current branch , is not yet enforced , by the release engineering team . This stage is known as code slush.

After a period of time , after code slush , the release engineering team , freezes the freebsd-current trunk . During the freeze period , commits to the -current trunk , must be approved by the release engineering team . The kind of commits which are approved , are security and bug fixes, device drivers update …

After a period of time , a new branch is created from -current , this is the stable branch . The -stable branch version number is incremented , so if the previous -stable branch version was 11 , the newly created -stable branch version , will be 12 .

svnweb-freebsd-org-base-stable

A stable branch has a tag of RELENG_n , where n is the stable version number . For example RELENG_12 , is the tag for freebsd-stable 12 , and RELENG_11 is the tag for freebsd-stable 11 .

After the creation of a -stable branch from -current , the -current branch is thawed . This means , it is not necessary for commit to be approved , by the release engineering team .

The -current branch revision number is incremented , for example , if the revision number was 12 , before the creation of a new -stable branch 12 , after the creation of a new -stable branch 12 , the -current branch revision number , will become 13.

The code of the newly created -stable branch from -current , is frozen, and is used to create beta releases . After beta builds , and when ready , a releng branch is created .

svnweb-freebsd-org-base-releng

For example after the stable branch 12 is created from -current , and after beta builds are created from this stable branch , the releng branch 12.0 is created from the stable branch 12 . A releng branch , has a tag of RELENG_n_n . For example , the releng branch 12.0 has a tag of RELENG_12_0 .

The releng branch code is frozen , and is used to create release candidates . After the first release candidates is released ,the -stable branch is thawed .

Multiple release candidates are created from the releng branch , and when ready a final release is created . This final release is called the dot-zero release.

To create the dot zero release , a release branch is created from the releng branch . For example to create the dot zero release from the releng 12.0 branch , the release 12.0.0 branch is created .

svnweb-freebsd-org-base-release

A release branch has a tag of RELENG_n_n_n_RELEASE . For example the release 12.0.0 branch has a tag of RELENG_12_0_0_0_RELEASE .

After a release is created from the releng branch , the releng branch is handed to the freebsd security team , for security and critical bugs updates .

3- What is a point release ?

A stable branch is used for the creation and development of production releases . Production releases , can be used in production sites . The first release from the stable branch , is called : dot zero release .

A point release is created from the stable branch around four times a year . A point release and a dot-zero release , are updated by the FreeBSD security team for a period of three months . A point release and a dot-zero release recieve security and critical bugs updates .

A stable branch is updated for a period of five years . A stable branch , recieves security and bugs updates , and new features , which do not break , application binary interface compatibility , across , different releases , from the stable branch .

What this means , is that if a call is made to a function , it will return the same result , across different releases from stable . For example ABI stability between the dot-zero release 12.0.0, and the point release 12.1.0 is maintained .

ABI compatibility , can be broken between different stable versions , for example between the -stable version 11 and the -stable version 12 .

Once a stable branch has been created , bugs , new features , and security fixes , are added , after being tested in the -current branch , for a period , of at least three days . Once bugs and security fixes have accumulated, a point release is created from the stable branch.

To create a point release , the release engineering team slush , the stable branch code . Next , the -stable branch is frozen , and beta releases are created from the frozen code .

After a period of time , and when ready , the releng branch is created . The releng branch code , is frozen , and release candidates , are created from this branch . After the first release candidate , the -stable branch is thawed .

After multiple release candidates , from the releng branch , a point release is created by creating a release branch . After having created the release branch , the releng branch , is handed to the freebsd security team , by the freebsd release engineering team , for security and critical bug updates .

4- What are alpha builds ?

Alpha builds or snapshots , are created every week , from freebsd-current and freebsd-stable . They are used for testing and to report bugs . Alpha builds includes : ISO and virtual machine images .