23.4.Â Tracking a Development Branch

FreeBSD has two development branches: FreeBSD-CURRENT and
FreeBSD-STABLE.

This section provides an explanation of each branch and its
intended audience, as well as how to keep a system up-to-date
with each respective branch.

23.4.1.Â Using FreeBSD-CURRENT

FreeBSD-CURRENT is the “bleeding edge” of FreeBSD
development and FreeBSD-CURRENT users are expected to have a
high degree of technical skill. Less technical users who wish
to track a development branch should track FreeBSD-STABLE
instead.

FreeBSD-CURRENT is the very latest source code for FreeBSD and
includes works in progress, experimental changes, and
transitional mechanisms that might or might not be present in
the next official release. While many FreeBSD developers compile
the FreeBSD-CURRENT source code daily, there are short periods of
time when the source may not be buildable. These problems are
resolved as quickly as possible, but whether or not
FreeBSD-CURRENT brings disaster or new functionality can be a
matter of when the source code was synced.

FreeBSD-CURRENT is made available for three primary interest
groups:

Members of the FreeBSD community who are actively
working on some part of the source tree.

Members of the FreeBSD community who are active testers.
They are willing to spend time solving problems, making
topical suggestions on changes and the general direction
of FreeBSD, and submitting patches.

Users who wish to keep an eye on things, use the
current source for reference purposes, or make the
occasional comment or code contribution.

FreeBSD-CURRENT should not be
considered a fast-track to getting new features before the
next release as pre-release features are not yet fully tested
and most likely contain bugs. It is not a quick way of
getting bug fixes as any given commit is just as likely to
introduce new bugs as to fix existing ones. FreeBSD-CURRENT is
not in any way “officially supported”.

To track FreeBSD-CURRENT:

Join the freebsd-current and the
svn-src-head lists. This is
essential in order to see the
comments that people are making about the current state
of the system and to receive important bulletins about
the current state of FreeBSD-CURRENT.

The svn-src-head list records the commit log
entry for each change as it is made, along with any
pertinent information on possible side effects.

To join these lists, go to http://lists.FreeBSD.org/mailman/listinfo,
click on the list to subscribe to, and follow the
instructions. In order to track changes to the whole
source tree, not just the changes to FreeBSD-CURRENT,
subscribe to the svn-src-all list.

Due to the size of the repository, some users choose
to only synchronize the sections of source that interest
them or which they are contributing patches to. However,
users that plan to compile the operating system from
source must download all of
FreeBSD-CURRENT, not just selected portions.

Be active! FreeBSD-CURRENT users are encouraged to
submit their suggestions for enhancements or bug fixes.
Suggestions with accompanying code are always
welcome.

23.4.2.Â Using FreeBSD-STABLE

FreeBSD-STABLE is the development branch from which major
releases are made. Changes go into this branch at a slower
pace and with the general assumption that they have first been
tested in FreeBSD-CURRENT. This is still a
development branch and, at any given time, the sources for
FreeBSD-STABLE may or may not be suitable for general use. It is
simply another engineering development track, not a resource
for end-users. Users who do not have the resources to perform
testing should instead run the most recent release of
FreeBSD.

Those interested in tracking or contributing to the FreeBSD
development process, especially as it relates to the next
release of FreeBSD, should consider following FreeBSD-STABLE.

While the FreeBSD-STABLE branch should compile and run at all
times, this cannot be guaranteed. Since more people run
FreeBSD-STABLE than FreeBSD-CURRENT, it is inevitable that bugs and
corner cases will sometimes be found in FreeBSD-STABLE that were
not apparent in FreeBSD-CURRENT. For this reason, one should not
blindly track FreeBSD-STABLE. It is particularly important
not to update any production servers to
FreeBSD-STABLE without thoroughly testing the code in a
development or testing environment.

To track FreeBSD-STABLE:

Join the freebsd-stable list in order to stay
informed of build dependencies that may appear in
FreeBSD-STABLE or any other issues requiring special
attention. Developers will also make announcements in
this mailing list when they are contemplating some
controversial fix or update, giving the users a chance to
respond if they have any issues to raise concerning the
proposed change.

Join the relevant svn list
for the branch being tracked. For example, users
tracking the 9-STABLE branch should join the
svn-src-stable-9 list. This list records the
commit log entry for each change as it is made, along
with any pertinent information on possible
side effects.

To install a new FreeBSD-STABLE system, install the most
recent FreeBSD-STABLE release from the FreeBSD mirror sites or use a
monthly snapshot built from FreeBSD-STABLE. Refer to www.freebsd.org/snapshots
for more information about snapshots.

To compile or upgrade to an existing FreeBSD system to
FreeBSD-STABLE, use svn to check out the source for the desired
branch. Branch names, such as
stable/9, are listed at www.freebsd.org/releng.