19.2 FreeBSD-CURRENT vs. FreeBSD-STABLE

There are two development branches to FreeBSD; FreeBSD-CURRENT and FreeBSD-STABLE. This section will explain a bit about each and describe how to keep your system up-to-date with each respective tree. FreeBSD-CURRENT will be discussed first, then FreeBSD-STABLE.

19.2.1 Staying Current with FreeBSD

As you are reading this, keep in mind that FreeBSD-CURRENT is the ``bleeding edge'' of FreeBSD development and that if you are new to FreeBSD, you are most likely going to want to think twice about running it.

19.2.1.1 What Is FreeBSD-CURRENT?

FreeBSD-CURRENT is, quite literally, nothing more than a daily snapshot of the working sources for FreeBSD. These include work in progress, experimental changes and transitional mechanisms that may or may not be present in the next official release of the software. While many of us compile almost daily from FreeBSD-CURRENT sources, there are periods of time when the sources are literally un-compilable. These problems are generally resolved as expeditiously as possible, but whether or not FreeBSD-CURRENT sources bring disaster or greatly desired functionality can literally be a matter of which part of any given 24 hour period you grabbed them in!

19.2.1.2 Who Needs FreeBSD-CURRENT?

FreeBSD-CURRENT is made generally available for 3 primary interest groups:

  1. Members of the FreeBSD group who are actively working on some part of the source tree and for whom keeping ``current'' is an absolute requirement.

  2. Members of the FreeBSD group who are active testers, willing to spend time working through problems in order to ensure that FreeBSD-CURRENT remains as sane as possible. These are also people who wish to make topical suggestions on changes and the general direction of FreeBSD.

  3. Peripheral members of the FreeBSD (or some other) group who merely wish to keep an eye on things and use the current sources for reference purposes (e.g. for reading, not running). These people also make the occasional comment or contribute code.

19.2.1.3 What Is FreeBSD-CURRENT Not?

  1. A fast-track to getting pre-release bits because you heard there is some cool new feature in there and you want to be the first on your block to have it.

  2. A quick way of getting bug fixes.

  3. In any way ``officially supported'' by us. We do our best to help people genuinely in one of the 3 ``legitimate'' FreeBSD-CURRENT categories, but we simply do not have the time to provide tech support for it. This is not because we are mean and nasty people who do not like helping people out (we would not even be doing FreeBSD if we were), it is literally because we cannot answer 400 messages a day and actually work on FreeBSD! Given the choice between improving FreeBSD and answering lots of questions, most developers, and users, would probably opt for the former.

19.2.1.4 Using FreeBSD-CURRENT

  1. Join the FreeBSD-current mailing list and the FreeBSD CVS commit message mailing list . This is not just a good idea, it is essential. If you are not on the FreeBSD-current mailing list , you will not see the comments that people are making about the current state of the system and thus will probably end up stumbling over a lot of problems that others have already found and solved. Even more importantly, you will miss out on important bulletins which may be critical to your system's continued health.

    The FreeBSD CVS commit message mailing list mailing list will allow you to see the commit log entry for each change as it is made along with any pertinent information on possible side-effects.

    To join these lists, send mail to and specify the following in the body of your message:

        subscribe freebsd-current
        subscribe cvs-all
    

    Optionally, you can also say help and Majordomo will send you full help on how to subscribe and unsubscribe to the various other mailing lists we support.

  2. Grab the sources from ftp.FreeBSD.org. You can do this in one of three ways:

    1. Use the cvsup program with this supfile. This is the second most recommended method, since it allows you to grab the entire collection once and then only what has changed from then on. Many people run cvsup from cron and keep their sources up-to-date automatically. For a fairly easy interface to this, simply type:

          # pkg_add -f ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/cvsupit.tgz
      
    2. Use ftp. The source tree for FreeBSD-CURRENT is always ``exported'' on: ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/. Our FTP server also allows compressed/tarred grabbing of whole trees. e.g. you see:

          usr.bin/lex
      

      You can do the following to get the whole directory as a tar file:

          ftp> cd usr.bin
          ftp> get lex.tar
      
    3. Use the CTM facility. If you have very bad connectivity (high price connections or only email access) CTM is an option. However, it is a lot of hassle and can give you broken files. This leads to it being rarely used, which again increases the chance of it not working for fairly long periods of time. We recommend using CVSup for anybody with a 9600bps modem or faster connection.

  3. If you are grabbing the sources to run, and not just look at, then grab all of FreeBSD-CURRENT, not just selected portions. The reason for this is that various parts of the source depend on updates elsewhere, and trying to compile just a subset is almost guaranteed to get you into trouble.

    Before compiling FreeBSD-CURRENT, read the Makefile in /usr/src carefully. You should at least run a make world the first time through as part of the upgrading process. Reading the FreeBSD-current mailing list will keep you up-to-date on other bootstrapping procedures that sometimes become necessary as we move towards the next release.

  4. Be active! If you are running FreeBSD-CURRENT, we want to know what you have to say about it, especially if you have suggestions for enhancements or bug fixes. Suggestions with accompanying code are received most enthusiastically!

19.2.2 Staying Stable with FreeBSD

19.2.2.1 What Is FreeBSD-STABLE?

FreeBSD-STABLE is our development branch from which major releases are made. Changes go into this branch at a different pace, and with the general assumption that they have first gone into FreeBSD-CURRENT first for testing. This is still a development branch, however, and this means that at any given time, the sources for FreeBSD-STABLE may or may not be suitable for any particular purpose. It is simply another engineering development track, not a resource for end-users.

19.2.2.2 Who Needs FreeBSD-STABLE?

If you are interested in tracking or contributing to the FreeBSD development process, especially as it relates to the next ``point'' release of FreeBSD, then you should consider following FreeBSD-STABLE.

While it is true that security fixes also go into the FreeBSD-STABLE branch, you do not need to track FreeBSD-STABLE to do this. Every security advisory for FreeBSD explains how to fix the problem for the releases it affects [1] , and tracking an entire development branch just for security reasons is likely to bring in a lot of unwanted changes as well.

Although we endeavor to ensure that the FreeBSD-STABLE branch compiles and runs at all times, this cannot be guaranteed. In addition, while code is developed in FreeBSD-CURRENT before including it in FreeBSD-STABLE, more people run FreeBSD-STABLE than FreeBSD-CURRENT, so it is inevitable that bugs and corner cases will sometimes be found in FreeBSD-STABLE that were not apparent in FreeBSD-CURRENT.

For these reasons, we do not recommend that you blindly track FreeBSD-STABLE, and it is particularly important that you do not update any production servers to FreeBSD-STABLE without first thoroughly testing the code in your development environment.

If you do not have the resources to do this then we recommend that you run the most recent release of FreeBSD, and use the binary update mechanism to move from release to release.

19.2.2.3 Using FreeBSD-STABLE

  1. Join the FreeBSD-stable mailing list . This will keep you 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.

    The FreeBSD CVS commit message mailing list mailing list will allow you to see the commit log entry for each change as it is made along with any pertinent information on possible side-effects.

    To join these lists, send mail to and specify the following in the body of your message:

        subscribe freebsd-stable
        subscribe cvs-all
    

    Optionally, you can also say help and Majordomo will send you full help on how to subscribe and unsubscribe to the various other mailing lists we support.

  2. If you are installing a new system and want it to be as stable as possible, you can simply grab the latest dated branch snapshot from ftp://releng4.FreeBSD.org/pub/FreeBSD/ and install it like any other release.

    If you are already running a previous release of FreeBSD and wish to upgrade via sources then you can easily do so from ftp.FreeBSD.org. This can be done in one of three ways:

    1. Use the CTM facility. Unless you have a good TCP/IP connection at a flat rate, this is the way to do it.

    2. Use the cvsup program with this supfile. This is the second most recommended method, since it allows you to grab the entire collection once and then only what has changed from then on. Many people run cvsup from cron to keep their sources up-to-date automatically. For a fairly easy interface to this, simply type:

          # pkg_add -f ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/cvsupit.tgz
      
    3. Use ftp. The source tree for FreeBSD-STABLE is always ``exported'' on: ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-stable/

      Our FTP server also allows compressed/tarred grabbing of whole trees. e.g. you see:

          usr.bin/lex
      

      You can do the following to get the whole directory for you as a tar file:

          ftp> cd usr.bin
          ftp> get lex.tar
      
  3. Essentially, if you need rapid on-demand access to the source and communications bandwidth is not a consideration, use cvsup or ftp. Otherwise, use CTM.

  4. Before compiling FreeBSD-STABLE, read the Makefile in /usr/src carefully. You should at least run a make world the first time through as part of the upgrading process. Reading the FreeBSD-stable mailing list will keep you up-to-date on other bootstrapping procedures that sometimes become necessary as we move towards the next release.

Notes

[1]

That's not quite true. We can't continue to support old releases of FreeBSD forever, although we do support them for many years. For a complete description of the current security policy for old releases of FreeBSD, please see http://www.FreeBSD.org/security

This, and other documents, can be downloaded from ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

For questions about FreeBSD, read the documentation before contacting <questions@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.