<!-- $Id: current.sgml,v 1.8 1996/01/31 14:26:01 mpp Exp $ -->
<!-- The FreeBSD Documentation Project -->


<chapt><heading>Staying current with FreeBSD<label id="current"></heading>

<p><em>Contributed by &a.jkh;.</em>

<!--

                        THE FREEBSD CURRENT POLICY 

Last updated: $Date: 1996/01/31 14:26:01 $

This document attempts to explain the rationale behind
FreeBSD-current, what you should expect should you decide to run it,
and states some prerequisites for making sure the process goes as
smoothly as possible.
-->

<sect><heading>What is FreeBSD-current?</heading>

<p>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!

Under certain circumstances we will sometimes make binaries for parts
of FreeBSD-current available, but only because we're interested in
getting something tested, not because we're in the business of
providing binary releases of current.  If we don't offer, please don't
ask!  It takes far too much time to do this as a general task.

<sect><heading>Who needs FreeBSD-current?</heading>

<p>FreeBSD-current is made generally available for 3 primary interest groups:
<enum>
    <item>  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.

    <item>  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.

    <item>  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 <em>reading</em>, not running).  These
        people also make the occasional comment or contribute code.
</enum>

<sect><heading>What is FreeBSD-current <em>NOT</em>?</heading>

<p><enum>
    <item>  A fast-track to getting pre-release bits because you heard there's
        some cool new feature in there and you want to be the first on
        your block to have it.

    <item>  A quick way of getting bug fixes.

    <item>  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 <em>do not
        have the time</em> to help every person who jumps into FreeBSD-current
        with more enthusiasm than knowledge of how to deal with
        experimental system software.  This is not because we're mean and
        nasty people who don't like helping people out (we wouldn't even be
        doing FreeBSD if we were), it's literally because we can't answer
        400 messages a day <em>and</em> actually work on FreeBSD!  I'm sure
        that, if given the choice between having us answer lots of questions or
        continuing to improve FreeBSD, most of you would vote for us
        improving it.
</enum>

<sect><heading>Using FreeBSD-current</heading>

<p><enum> <item> Join the freebsd-current and cvs-all
    mailing lists.  This is not just a good idea, it's
    <em>essential</em>.  If you aren't on freebsd-current, you
    won't 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
    potentially critical information (e.g. ``Yo, Everybody!
    Before you rebuild <tt>/usr/src</tt>, you <em>must</em>
    rebuild the kernel or your system will crash horribly!").

    The cvs-all mailing list will allow you to see the commit log
    entry for each change as it's made along with any pertinent
    information on possible side-effects.

        To join these lists, send mail to
        <htmlurl url="mailto:majordomo@FreeBSD.ORG"
        name="majordomo@FreeBSD.ORG"> and say:
<verb>
            subscribe current
            subscribe cvs-all
</verb>
        In the body of your message.  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.

    <item>  Grab the sources from ftp.FreeBSD.ORG.  You can do this in
        three ways:

    <enum>
	<item> Using the CTM facility described below.  Unless you 
            have a good TCP/IP connection at a flat rate, this is 
            the way to do it.

        <item>  Use the CMU `sup' program (Software Update
	     Protocol), also described below.
            This is the second most recommended method, since it allows 
	    you to grab the entire collection once and then only what's
            changed from then on.  Many people run sup from cron
            and keep their sources up-to-date automatically.

        <item>  Use ftp.  The source tree for FreeBSD-current is always
            "exported" on:
            <htmlurl url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/FreeBSD-stable"
            name="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/FreeBSD-current">
            We also use `wu-ftpd' which allows compressed/tar'd grabbing
            of whole trees.  e.g. you see:
<verb>
            usr.bin/lex
</verb>
            You can do:
<verb>
            ftp> cd usr.bin
            ftp> get lex.tar.Z
</verb>
            And it will get the whole directory for you as a compressed
            tar file.
    </enum>

    <item>  Essentially, if you need rapid on-demand access to the source and
    communications bandwidth is not a consideration, use sup or ftp.
    Otherwise, use CTM.

    <item>  If you're grabbing the sources to run, and not just look at,
    then grab <em>all</em> of 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.

    <item>  Before compiling 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 freebsd-hackers will keep you up-to-date on other
        bootstrapping procedures that sometimes become necessary as we move
        towards	the next release.

    <item>  Be active!  If you're 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! 
</enum>
