<!--
     The FreeBSD Documentation Project

     $FreeBSD$
-->

<chapter id="introduction">
  <chapterinfo>
    <authorgroup>
      <author>
        <firstname>Jim</firstname>
	<surname>Mock</surname>
	<contrib>Restructured, reorganized, and parts
	  rewritten by </contrib>
      </author>
    </authorgroup>
  </chapterinfo>

  <title>Introduction</title>

  <sect1 id="introduction-synopsis">
    <title>Synopsis</title>

    <para>Thank you for your interest in FreeBSD!  The following chapter
      covers various aspects of the FreeBSD Project, such as its history,
      goals, development model, and so on.</para>

    <para>After reading this chapter, you will know:</para>

    <itemizedlist>
      <listitem>
	<para>How FreeBSD relates to other computer operating systems.</para>
      </listitem>
      <listitem>
	<para>The history of the FreeBSD Project.</para>
      </listitem>
      <listitem>
	<para>The goals of the FreeBSD Project.</para>
      </listitem>
      <listitem>
	<para>The basics of the FreeBSD open-source development model.</para>
      </listitem>
      <listitem>
	<para>And of course: where the name <quote>FreeBSD</quote> comes from.</para>
      </listitem>
    </itemizedlist>

  </sect1>

  <sect1 id="nutshell">
    <title>Welcome to FreeBSD!</title>
    <indexterm><primary>4.4BSD-Lite</primary></indexterm> 

    <para>FreeBSD is a 4.4BSD-Lite based operating system for
      Intel (x86 and &itanium;), AMD64, <trademark>Alpha</trademark>, Sun
      &ultrasparc; computers.  Ports to other
      architectures are also underway. 
      You can also
      read about <link linkend="history">the history of FreeBSD</link>,
      or the <link linkend="relnotes">current release</link>.  If you
      are interested in contributing something to the Project (code,
      hardware, unmarked bills), see the <ulink
	url="../../articles/contributing/index.html">Contributing to FreeBSD</ulink> article.</para>

    <sect2 id="os-overview">
      <title>What Can FreeBSD Do?</title>

      <para>FreeBSD has many noteworthy features.  Some of these
        are:</para>

      <itemizedlist>
        <indexterm><primary>preemptive multitasking</primary></indexterm>
	<listitem>
	  <para><emphasis>Preemptive multitasking</emphasis> with
	    dynamic priority adjustment to ensure smooth and fair
	    sharing of the computer between applications and users, even
	    under the heaviest of loads.</para>
	</listitem>

	<indexterm><primary>multi-user facilities</primary></indexterm>
	<listitem>
	  <para><emphasis>Multi-user facilities</emphasis> which allow many
	    people to use a FreeBSD system simultaneously for a variety
	    of things.  This means, for example, that system peripherals
	    such as printers and tape drives are properly shared between
	    all users on the system or the network and that individual
	    resource limits can be placed on users or groups of users,
	    protecting critical system resources from over-use.</para>
	</listitem>
      
	<indexterm><primary>TCP/IP networking</primary></indexterm>
	<listitem>
	  <para>Strong <emphasis>TCP/IP networking</emphasis> with
	    support for industry standards such as SLIP, PPP, NFS, DHCP,
	    and NIS.  This means that your FreeBSD machine can
	    interoperate easily with other systems as well as act as an
	    enterprise server, providing vital functions such as NFS
	    (remote file access) and email services or putting your
	    organization on the Internet with WWW, FTP, routing and
	    firewall (security) services.</para>
	</listitem>

	<indexterm><primary>memory protection</primary></indexterm>      
	<listitem>
	  <para><emphasis>Memory protection</emphasis> ensures that
	    applications (or users) cannot interfere with each other. One
	    application crashing will not affect others in any way.</para>
	</listitem>
      
	<listitem>
	  <para>FreeBSD is a <emphasis>32-bit</emphasis> operating
	    system (<emphasis>64-bit</emphasis> on the Alpha, &itanium;, AMD64, and &ultrasparc;) and was
	    designed as such from the ground up.</para>
	</listitem>

	<indexterm>
    <primary>X Window System</primary>
    <seealso>XFree86</seealso>
  </indexterm>

	<listitem>
	  <para>The industry standard <emphasis>X Window System</emphasis>
	    (X11R6) provides a graphical user interface (GUI) for the cost
	    of a common VGA card and monitor and comes with full
	    sources.</para>
	</listitem>

	<indexterm>
	  <primary>binary compatibility</primary>
	  <secondary>Linux</secondary>
	</indexterm>
	<indexterm>
	  <primary>binary compatibility</primary>
	  <secondary>SCO</secondary>
	</indexterm>
	<indexterm>
	  <primary>binary compatibility</primary>
	  <secondary>SVR4</secondary>
	</indexterm>
	<indexterm>
	  <primary>binary compatibility</primary>
	  <secondary>BSD/OS</secondary>
	</indexterm>
	<indexterm>
	  <primary>binary compatibility</primary>
	  <secondary>NetBSD</secondary>
	</indexterm>
	<listitem>
	  <para><emphasis>Binary compatibility</emphasis> with many
	    programs built for Linux, SCO, SVR4, BSDI and NetBSD.</para>
	</listitem>
	
	<listitem>
	  <para>Thousands of <emphasis>ready-to-run</emphasis>
	    applications are available from the FreeBSD
	    <emphasis>ports</emphasis> and <emphasis>packages</emphasis>
	    collection.  Why search the net when you can find it all right
	    here?</para>
	</listitem>
      
	<listitem>
	  <para>Thousands of additional and
	    <emphasis>easy-to-port</emphasis> applications are available
	    on the Internet.  FreeBSD is source code compatible with most
	    popular commercial &unix; systems and thus most applications
	    require few, if any, changes to compile.</para>
	</listitem>
      
	<indexterm><primary>virtual memory</primary></indexterm>
	<listitem>
	  <para>Demand paged <emphasis>virtual memory</emphasis> and
	    <quote>merged VM/buffer cache</quote> design efficiently
	    satisfies applications with large appetites for memory while
	    still maintaining interactive response to other users.</para>
	</listitem>
      
        <indexterm>
	  <primary>Symmetric Multi-Processing (SMP)</primary>
	</indexterm>
	<listitem>
	  <para><emphasis>SMP</emphasis> support for machines with
	    multiple CPUs.</para>
	</listitem>

	<indexterm>
	  <primary>compilers</primary>
	  <secondary>C</secondary>
	</indexterm>
	<indexterm>
	  <primary>compilers</primary>
	  <secondary>C++</secondary>
	</indexterm>
	<indexterm>
	  <primary>compilers</primary>
	  <secondary>FORTRAN</secondary>
	</indexterm>
	<listitem>
	  <para>A full complement of <emphasis>C</emphasis>,
	    <emphasis>C++</emphasis>, <emphasis>Fortran</emphasis>, and
	    <emphasis>Perl</emphasis> development tools.
	    Many additional languages for advanced research
	    and development are also available in the ports and packages
	    collection.</para>
	</listitem>

	<indexterm><primary>source code</primary></indexterm>
	<listitem>
	  <para><emphasis>Source code</emphasis> for the entire system
	    means you have the greatest degree of control over your
	    environment.  Why be locked into a proprietary solution
	    at the mercy of your vendor when you can have a truly open
	    system?</para>
	</listitem>
      
	<listitem>
	  <para>Extensive <emphasis>online
	    documentation</emphasis>.</para>
	</listitem>
      
	<listitem>
	  <para><emphasis>And many more!</emphasis></para>
	</listitem>
      </itemizedlist>
    
      <indexterm><primary>4.4BSD-Lite</primary></indexterm>
      <indexterm>
        <primary>Computer Systems Research Group (CSRG)</primary>
      </indexterm>
      <indexterm><primary>U.C. Berkeley</primary></indexterm>
      <para>FreeBSD is based on the 4.4BSD-Lite release from Computer
        Systems Research Group (CSRG) at the University of California at
	Berkeley, and carries on the distinguished tradition of BSD
	systems development.  In addition to the fine work provided by
	CSRG, the FreeBSD Project has put in many thousands of hours in
	fine tuning the system for maximum performance and reliability in
	real-life load situations.  As many of the commercial giants
	struggle to field PC operating systems with such features,
	performance and reliability, FreeBSD can offer them
	<emphasis>now</emphasis>!</para>

      <para>The applications to which FreeBSD can be put are truly
        limited only by your own imagination.  From software development
	to factory automation, inventory control to azimuth correction of
	remote satellite antennae; if it can be done with a commercial
	&unix; product then it is more than likely that you can do it with
	FreeBSD too!  FreeBSD also benefits significantly from
	literally thousands of high quality applications developed by
	research centers and universities around the world, often
	available at little to no cost. Commercial applications are also
	available and appearing in greater numbers every day.</para>

      <para>Because the source code for FreeBSD itself is generally
        available, the system can also be customized to an almost unheard
	of degree for special applications or projects, and in ways not
	generally possible with operating systems from most major
	commercial vendors.  Here is just a sampling of some of the
	applications in which people are currently using FreeBSD:</para>
    
      <itemizedlist>
	<listitem>
	  <para><emphasis>Internet Services:</emphasis> The robust TCP/IP
	    networking built into FreeBSD makes it an ideal platform for a
	    variety of Internet services such as:</para>

	  <itemizedlist>
	    <indexterm><primary>FTP servers</primary></indexterm>
	    <listitem>
	      <para>FTP servers</para>
	    </listitem>
	  
	    <indexterm><primary>web servers</primary></indexterm>
	    <listitem>
	      <para>World Wide Web servers (standard or secure
	        [SSL])</para>
	    </listitem>

	    <indexterm><primary>firewall</primary></indexterm>
	    <indexterm><primary>IP masquerading</primary></indexterm>
	    <listitem>
	      <para>Firewalls and NAT (<quote>IP masquerading</quote>)
	        gateways</para>
	    </listitem>
	  
	    <indexterm><primary>electronic mail</primary></indexterm>
	    <listitem>
	      <para>Electronic Mail servers</para>
	    </listitem>
	  
	    <indexterm><primary>USENET</primary></indexterm>
	    <listitem>
	      <para>USENET News or Bulletin Board Systems</para>
	    </listitem>
	  
	    <listitem>
	      <para>And more...</para>
	    </listitem>
	  </itemizedlist>

	  <para>With FreeBSD, you can easily start out small with an
	    inexpensive 386 class PC and upgrade all the way up to a
	    quad-processor Xeon with RAID storage as your enterprise
	    grows.</para>
	</listitem>
      
	<listitem>
	  <para><emphasis>Education:</emphasis>  Are you a student of
	    computer science or a related engineering field?  There is no
	    better way of learning about operating systems, computer
	    architecture and networking than the hands on, under the hood
	    experience that FreeBSD can provide.  A number of freely
	    available CAD, mathematical and graphic design packages also
	    make it highly useful to those whose primary interest in a
	    computer is to get <emphasis>other</emphasis> work
	    done!</para>
	</listitem>
      
	<listitem>
	  <para><emphasis>Research:</emphasis>  With source code for the
	    entire system available, FreeBSD is an excellent platform for
	    research in operating systems as well as other branches of
	    computer science.  FreeBSD's freely available nature also makes
	    it possible for remote groups to collaborate on ideas or
	    shared development without having to worry about special
	    licensing agreements or limitations on what may be discussed
	    in open forums.</para>
	</listitem>
      
	<indexterm><primary>router</primary></indexterm>
	<indexterm><primary>DNS Server</primary></indexterm>
	<listitem>
	  <para><emphasis>Networking:</emphasis>  Need a new router?  A
	    name server (DNS)? A firewall to keep people out of your
	    internal network?  FreeBSD can easily turn that unused 386 or
	    486 PC sitting in the corner into an advanced router with
	    sophisticated packet-filtering capabilities.</para>
	</listitem>
      
	<indexterm>
	  <primary>X Window System</primary>
	  <secondary>XFree86</secondary>
	</indexterm>
	<indexterm>
	  <primary>X Window System</primary>
	  <secondary>Accelerated-X</secondary>
	</indexterm>
	<listitem>
	  <para><emphasis>X Window workstation:</emphasis> FreeBSD is a
	    fine choice for an inexpensive X terminal solution, either
	    using the freely available &xfree86; server or one of the
	    excellent commercial servers provided by <ulink
	    url="http://www.xig.com">Xi Graphics</ulink>.  Unlike an
	    X terminal, FreeBSD allows many applications to be run
	    locally if desired, thus relieving the burden on a central
	    server.  FreeBSD can even boot <quote>diskless</quote>, making
	    individual workstations even cheaper and easier to
	    administer.</para>
	</listitem>
      
	<indexterm><primary>GNU Compiler Collection</primary></indexterm>
	<listitem>
	  <para><emphasis>Software Development:</emphasis>  The basic
	    FreeBSD system comes with a full complement of development
	    tools including the renowned GNU C/C++ compiler and
	    debugger.</para>
	</listitem>
      </itemizedlist>
    
      <para>FreeBSD is available in both source and binary form on CDROM,
	DVD,
        and via anonymous FTP.  Please see <xref linkend="mirrors">
        for more information about obtaining FreeBSD.</para>
    </sect2>

    <sect2>
      <title>Who Uses FreeBSD?</title>

      <indexterm>
	<primary>Users</primary>
	<secondary>Large sites running FreeBSD</secondary>
      </indexterm>

      <para>FreeBSD is used to power some of the biggest sites on the
        Internet, including:</para>

      <itemizedlist>
        <indexterm><primary>Yahoo!</primary></indexterm>
        <listitem>
	  <para><ulink url="http://www.yahoo.com/">Yahoo!</ulink></para>
	</listitem>

	<indexterm><primary>Apache</primary></indexterm>
	<listitem>
	  <para><ulink url="http://www.apache.org/">Apache</ulink></para>
	</listitem>

	<indexterm><primary>Blue Mountain Arts</primary></indexterm>
	<listitem>
	  <para><ulink url="http://www.bluemountain.com/">Blue Mountain
	    Arts</ulink></para>
	</listitem>

	<indexterm><primary>Pair Networks</primary></indexterm>
	<listitem>
	  <para><ulink url="http://www.pair.com/">Pair
	    Networks</ulink></para>
	</listitem>

	<indexterm><primary>Sony Japan</primary></indexterm>
	<listitem>
	  <para><ulink url="http://www.sony.co.jp/">Sony
	    Japan</ulink></para>
	</listitem>

	<indexterm><primary>Netcraft</primary></indexterm>
	<listitem>
	  <para><ulink url="http://www.netcraft.com/">Netcraft</ulink>
	    </para>
	</listitem>

	<indexterm><primary>Weathernews</primary></indexterm>
	<listitem>
	  <para><ulink url="http://www.wni.com/">Weathernews</ulink>
	</para></listitem>

	<indexterm><primary>Supervalu</primary></indexterm>
	<listitem>
	  <para><ulink
	    url="http://www.supervalu.com/">Supervalu</ulink></para>
	</listitem>

	<indexterm><primary>TELEHOUSE America</primary></indexterm>
	<listitem>
	  <para><ulink url="http://www.telehouse.com/">TELEHOUSE
	    America</ulink></para>
	</listitem>

	<indexterm><primary>Sophos Anti-Virus</primary></indexterm>
	<listitem>
	  <para><ulink url="http://www.sophos.com/">Sophos
	    Anti-Virus</ulink></para>
	</listitem>

	<indexterm><primary>JMA Wired</primary></indexterm>
	<listitem>
	  <para><ulink
	    url="http://www.jmawired.com/">JMA Wired</ulink></para>
	</listitem>
      </itemizedlist>

      <para>and many more.</para>
    </sect2>

  </sect1>
  
  <sect1 id="history">
    <title>About the FreeBSD Project</title>

    <para>The following section provides some background information on
      the project, including a brief history, project goals, and the
      development model of the project.</para>

    <sect2 id="intro-history">
      <sect2info role="firstperson">
	<authorgroup>
	  <author>
	    <firstname>Jordan</firstname>
	    <surname>Hubbard</surname>
	    <contrib>Contributed by </contrib>
	  </author>
	</authorgroup>
      </sect2info>

      <title>A Brief History of FreeBSD</title>

      <indexterm><primary>386BSD Patchkit</primary></indexterm>
      <indexterm><primary>Hubbard, Jordan</primary></indexterm>
      <indexterm><primary>Williams, Nate</primary></indexterm>
      <indexterm><primary>Grimes, Rod</primary></indexterm>
      <indexterm>
        <primary>FreeBSD Project</primary>
        <secondary>history</secondary>
      </indexterm>
      <para>The FreeBSD project had its genesis in the early part of 1993,
	partially as an outgrowth of the <quote>Unofficial 386BSD
        Patchkit</quote> by the patchkit's last 3 coordinators: Nate
	Williams, Rod Grimes and myself.</para>
    
      <indexterm><primary>386BSD</primary></indexterm>
      <para>Our original goal was to produce an intermediate snapshot of
	386BSD in order to fix a number of problems with it that the
	patchkit mechanism just was not capable of solving.  Some of you
	may remember the early working title for the project being
	<quote>386BSD 0.5</quote> or <quote>386BSD Interim</quote> in
	reference to that fact.</para>
    
      <indexterm><primary>Jolitz, Bill</primary></indexterm>
      <para>386BSD was Bill Jolitz's operating system, which had been up
	to that point suffering rather severely from almost a year's worth
	of neglect.  As the patchkit swelled ever more uncomfortably with
	each passing day, we were in unanimous agreement that something
	had to be done and decided to assist Bill by providing
	this interim <quote>cleanup</quote> snapshot.  Those plans came to
	a rude halt when Bill Jolitz suddenly decided to withdraw his
	sanction from the project without any clear indication of what
	would be done instead.</para>

      <indexterm><primary>Greenman, David</primary></indexterm>
      <indexterm><primary>Walnut Creek CDROM</primary></indexterm>
      <para>It did not take us long to decide that the goal remained
	worthwhile, even without Bill's support, and so we adopted the
	name <quote>FreeBSD</quote>, coined by David Greenman.  Our initial
	objectives were set after consulting with the system's current
	users and, once it became clear that the project was on the road
	to perhaps even becoming a reality, I contacted Walnut Creek CDROM
	with an eye toward improving FreeBSD's distribution channels for
	those many unfortunates without easy access to the Internet.
	Walnut Creek CDROM not only supported the idea of distributing
	FreeBSD on CD but also went so far as to provide the project with a
	machine to work on and a fast Internet connection.  Without Walnut
	Creek CDROM's almost unprecedented degree of faith in what was, at
	the time, a completely unknown project, it is quite unlikely that
        FreeBSD would have gotten as far, as fast, as it has today.</para>

      <indexterm><primary>4.3BSD-Lite</primary></indexterm>
      <indexterm><primary>Net/2</primary></indexterm>
      <indexterm><primary>U.C. Berkeley</primary></indexterm>
      <indexterm><primary>386BSD</primary></indexterm>
      <indexterm><primary>Free Software Foundation</primary></indexterm>
      <para>The first CDROM (and general net-wide) distribution was
	FreeBSD&nbsp;1.0, released in December of 1993.  This was based on the
	4.3BSD-Lite (<quote>Net/2</quote>) tape from U.C. Berkeley, with
	many components also provided by 386BSD and the Free Software
	Foundation.  It was a fairly reasonable success for a first
	offering, and we followed it with the highly successful FreeBSD
	1.1 release in May of 1994.</para>

      <indexterm><primary>Novell</primary></indexterm>
      <indexterm><primary>U.C. Berkeley</primary></indexterm>
      <indexterm><primary>Net/2</primary></indexterm>
      <indexterm><primary>AT&amp;T</primary></indexterm>
      <para>Around this time, some rather unexpected storm clouds formed
	on the horizon as Novell and U.C. Berkeley settled their
	long-running lawsuit over the legal status of the Berkeley Net/2
	tape.  A condition of that settlement was U.C. Berkeley's
	concession that large parts of Net/2 were <quote>encumbered</quote>
	code and the property of Novell, who had in turn acquired it from
	AT&amp;T some time previously.  What Berkeley got in return was
	Novell's <quote>blessing</quote> that the 4.4BSD-Lite release, when
	it was finally released, would be declared unencumbered and all
	existing Net/2 users would be strongly encouraged to switch.  This
	included FreeBSD, and the project was given until the end of July
	1994 to stop shipping its own Net/2 based product.  Under the
	terms of that agreement, the project was allowed one last release
	before the deadline, that release being FreeBSD&nbsp;1.1.5.1.</para>

      <para>FreeBSD then set about the arduous task of literally
	re-inventing itself from a completely new and rather incomplete
	set of 4.4BSD-Lite bits.  The <quote>Lite</quote> releases were
	light in part because Berkeley's CSRG had removed large chunks of
	code required for actually constructing a bootable running system
	(due to various legal requirements) and the fact that the Intel
	port of 4.4 was highly incomplete.  It took the project until
	November of 1994 to make this transition, at which point it
	released FreeBSD&nbsp;2.0 to the net and on CDROM (in late December).
	Despite being still more than a little rough around the edges,
	the release was a significant success and was followed by the
	more robust and easier to install FreeBSD&nbsp;2.0.5 release in June of
	1995.</para>

      <para>We released FreeBSD&nbsp;2.1.5 in August of 1996, and it appeared
	to be popular enough among the ISP and commercial communities that
	another release along the 2.1-STABLE branch was merited.  This was
	FreeBSD&nbsp;2.1.7.1, released in February 1997 and capping the end of
	mainstream development on 2.1-STABLE.  Now in maintenance mode,
	only security enhancements and other critical bug fixes will be
	done on this branch (RELENG_2_1_0).</para>

      <para>FreeBSD&nbsp;2.2 was branched from the development mainline
	(<quote>-CURRENT</quote>) in November 1996 as the RELENG_2_2
	branch, and the first full release (2.2.1) was released in April
	1997.  Further releases along the 2.2 branch were done in the
	summer and fall of '97, the last of which (2.2.8) appeared in
	November 1998. The first official 3.0 release appeared in
	October 1998 and spelled the beginning of the end for the 2.2
	branch.</para>

      <para>The tree branched again on Jan 20, 1999, leading to the
	4.0-CURRENT and 3.X-STABLE branches.  From 3.X-STABLE, 3.1 was
	released on February 15, 1999, 3.2 on May 15, 1999, 3.3 on
	September 16, 1999, 3.4 on December 20, 1999, and 3.5 on
	June 24, 2000, which was followed a few days later by a minor
	point release update to 3.5.1, to incorporate some last-minute
	security fixes to Kerberos. This will be the final release in the
	3.X branch.</para>

      <para>There was another branch on March 13, 2000, which saw the
	emergence of the 4.X-STABLE branch, now considered to be the
	<quote>current -stable branch</quote>.  There have been several releases
	from it so far: 4.0-RELEASE was introduced in March 2000, and
	the most recent &rel2.current;-RELEASE came out in
	&rel2.current.date;.  There will be additional releases
	along the 4.X-stable (RELENG_4) branch well into 2003.</para>

      <para>The long-awaited 5.0-RELEASE was announced on January 19,
      2003.  The culmination of nearly three years of work, this
      release started FreeBSD on the path of advanced multiprocessor
      and application thread support and introduced support for the
      &ultrasparc; and <literal>ia64</literal> platforms.  This release was followed by 5.1 in
      June of 2003.  Besides a number of new features, the 5.X
      releases also contain a number of major developments in the
      underlying system architecture. Along with these advances,
      however, comes a system that incorporates a tremendous amount of
      new and not-widely-tested code. For this reason, the 5.X
      releases are considered <quote>New Technology</quote> releases, while the 4.X
      series function as <quote>Production</quote> releases.  In time, 5.X will be
      declared stable and work will commence on the next development
      branch, 6.0-CURRENT.</para>

      <para>For now, long-term development projects continue to take place in the
	5.X-CURRENT (trunk) branch, and SNAPshot releases of 5.X on
	CDROM (and, of course, on the net) are continually made available
	from <ulink url="ftp://current.FreeBSD.org/pub/FreeBSD/snapshots/">
	the snapshot server</ulink> as work progresses.</para>
    </sect2>
      
    <sect2 id="goals">
      <sect2info>
        <authorgroup>
          <author>
            <firstname>Jordan</firstname>
	    <surname>Hubbard</surname>
   	    <contrib>Contributed by </contrib>
	  </author>
        </authorgroup>
      </sect2info>

      <title>FreeBSD Project Goals</title>
    
      <indexterm>
        <primary>FreeBSD Project</primary>
        <secondary>goals</secondary>
      </indexterm>
      <para>The goals of the FreeBSD Project are to provide software that
	may be used for any purpose and without strings attached.  Many of
	us have a significant investment in the code (and project) and
	would certainly not mind a little financial compensation now and
	then, but we are definitely not prepared to insist on it.  We
	believe that our first and foremost <quote>mission</quote> is to
	provide code to any and all comers, and for whatever purpose, so
	that the code gets the widest possible use and provides the widest
	possible benefit.  This is, I believe, one of the most fundamental
	goals of Free Software and one that we enthusiastically
	support.</para>

      <indexterm>
        <primary>GNU General Public License (GPL)</primary>
      </indexterm>
      <indexterm>
        <primary>GNU Lesser General Public License (LGPL)</primary>
      </indexterm>
      <indexterm><primary>BSD Copyright</primary></indexterm>
      <para>That code in our source tree which falls under the GNU
        General Public License (GPL) or Library General Public License
        (LGPL) comes with slightly more strings attached, though at
        least on the side of enforced access rather than the usual
        opposite.  Due to the additional complexities that can evolve
        in the commercial use of GPL software we do, however, prefer
        software submitted under the more relaxed BSD copyright when
        it is a reasonable option to do so.</para>
    </sect2>
  
    <sect2 id="development">
      <sect2info>
        <authorgroup>
          <author>
            <firstname>Satoshi</firstname>
	    <surname>Asami</surname>
   	    <contrib>Contributed by </contrib>
	  </author>
        </authorgroup>
      </sect2info>

      <title>The FreeBSD Development Model</title>
    
      <indexterm>
        <primary>FreeBSD Project</primary>
        <secondary>development model</secondary>
      </indexterm>
      <para>The development of FreeBSD is a very open and flexible
	process, being literally built from the contributions
	of hundreds of people around the world, as can be seen from
	our <ulink
	url="../../articles/contributors/article.html">list of
	contributors</ulink>.  FreeBSD's development infrastructure allow
	these hundreds of developers to collaborate over the Internet.
	We are constantly on the lookout for
	new developers and ideas, and those interested in becoming
	more closely involved with the project need simply contact us
	at the &a.hackers;.  The &a.announce; is also available to
	those wishing to make other FreeBSD users aware of major areas
	of work.</para>

      <para>Useful things to know about the FreeBSD project and its
	development process, whether working independently or in close
	cooperation:</para>

      <variablelist>
	<varlistentry>
	  <term>The CVS repository<anchor
	    id="development-cvs-repository"></term>

	  <indexterm>
      <primary>CVS</primary>
      <secondary>repository</secondary>
    </indexterm>
	  <indexterm>
	    <primary>Concurrent Versions System</primary>
      <see>CVS</see>
	  </indexterm>
	  <listitem>
	    <para>The central source tree for FreeBSD is maintained by
	      <ulink url="http://www.cvshome.org/">CVS</ulink>
	      (Concurrent Versions System), a freely available source code
	      control tool that comes bundled with FreeBSD.  The primary
	      <ulink url="http://www.FreeBSD.org/cgi/cvsweb.cgi">CVS
	      repository</ulink> resides on a machine in Santa Clara CA, USA
	      from where it is replicated to numerous mirror machines
	      throughout the world.  The CVS tree, which contains the <link
	      linkend="current">-CURRENT</link> and <link
	      linkend="stable">-STABLE</link> trees,
	      can all be easily replicated to your own machine as well.
	      Please refer to the <link linkend="synching">Synchronizing
	      your source tree</link> section for more information on
	      doing this.</para>
	  </listitem>
	</varlistentry>
      
	<varlistentry>
	  <term>The committers list<anchor
	    id="development-committers"></term>
	      
	  <indexterm><primary>committers</primary></indexterm>
	  <listitem>
	    <para>The <firstterm>committers</firstterm>
	      are the people who have <emphasis>write</emphasis> access to
	      the CVS tree, and are authorized to make modifications
	      to the FreeBSD source (the term <quote>committer</quote>
	      comes from the &man.cvs.1; <command>commit</command>
	      command, which is used to bring new changes into the CVS
	      repository).  The best way of making submissions for review
	      by the committers list is to use the &man.send-pr.1;
	      command. If something appears to be jammed in the
	      system, then you may also reach them by sending mail to
	      the &a.committers;.</para>
	  </listitem>
	</varlistentry>
      
	<varlistentry>
	  <term>The FreeBSD core team<anchor id="development-core"></term>

	  <indexterm><primary>core team</primary></indexterm>
	  <listitem>
	    <para>The <firstterm>FreeBSD core team</firstterm>
	      would be equivalent to the board of directors if the FreeBSD
	      Project were a company.  The primary task of the core team
	      is to make sure the project, as a whole, is in good shape
	      and is heading in the right directions.  Inviting dedicated
	      and responsible developers to join our group of committers
	      is one of the functions of the core team, as is the
	      recruitment of new core team members as others move on.
	      The current core team was elected from a pool of committer
	      candidates in June 2002.  Elections are held every 2 years.
	      </para>

	    <para>Some core team members also have specific areas of
	      responsibility, meaning that they are committed to
	      ensuring that some large portion of the system works as
	      advertised.  For a complete list of FreeBSD developers
	      and their areas of responsibility, please see the <ulink
	      url="../../articles/contributors/article.html">Contributors
	      List</ulink></para>

	    <note>
	      <para>Most members of the core team are volunteers when it
	        comes to FreeBSD development and do not benefit from the
		project financially, so <quote>commitment</quote> should
		also not be misconstrued as meaning <quote>guaranteed
		support.</quote>  The <quote>board of directors</quote>
		analogy above is not very accurate, and it may be
		more suitable to say that these are the people who gave up
		their lives in favor of FreeBSD against their better
		judgment!</para>
	    </note>
	  </listitem>
	</varlistentry>
      
	<varlistentry>
	  <term>Outside contributors</term>

	  <indexterm><primary>contributors</primary></indexterm>
	  <listitem>
	    <para>Last, but definitely not least, the largest group of
	      developers are the users themselves who provide feedback and
	      bug fixes to us on an almost constant basis.  The primary
	      way of keeping in touch with FreeBSD's more non-centralized
	      development is to subscribe to the &a.hackers where such
              things are discussed.  See <xref
              linkend="eresources"> for more information about
              the various FreeBSD mailing lists.</para>
	  
	    <para><citetitle><ulink
	      url="../../articles/contributors/article.html">The
	      FreeBSD Contributors List</ulink></citetitle> is a long
	      and growing one, so why not join it by contributing
	      something back to FreeBSD today?</para>

	    <para>Providing code is not the only way of contributing to
	      the project; for a more complete list of things that need
	      doing, please refer to the <ulink
	      url="../../../../index.html">FreeBSD Project web
	      site</ulink>.</para>
	  </listitem>
	</varlistentry>
      </variablelist>
    
      <para>In summary, our development model is organized as a loose set
        of concentric circles.  The centralized model is designed for the
        convenience of the <emphasis>users</emphasis> of FreeBSD, who are
        provided with an easy way of tracking one central code
	base, not to keep potential contributors out! Our desire is to
	present a stable operating system with a large set of coherent
	<link linkend="ports">application programs</link> that the users
	can easily install and use &mdash; this model works very well in
	accomplishing that.</para>
    
      <para>All we ask of those who would join us as FreeBSD developers is
        some of the same dedication its current people have to its
	continued success!</para>
    </sect2>

    <sect2 id="relnotes">
      <title>The Current FreeBSD Release</title>

      <indexterm><primary>NetBSD</primary></indexterm>
      <indexterm><primary>OpenBSD</primary></indexterm>
      <indexterm><primary>386BSD</primary></indexterm>
      <indexterm><primary>Free Software Foundation</primary></indexterm>
      <indexterm><primary>U.C. Berkeley</primary></indexterm>
      <indexterm>
        <primary>Computer Systems Research Group (CSRG)</primary>
      </indexterm>
      <para>FreeBSD is a freely available, full source 4.4BSD-Lite based
        release for Intel &i386;, &i486;, &pentium;,
        &pentium;&nbsp;Pro,
        &celeron;,
        &pentium;&nbsp;II,
        &pentium;&nbsp;III,
        &pentium;&nbsp;4 (or compatible),
        &xeon;, DEC <trademark>Alpha</trademark>
        and Sun &ultrasparc; based computer
        systems.  It is based primarily on software from U.C. Berkeley's
        CSRG group, with some enhancements from NetBSD, OpenBSD, 386BSD, and
        the Free Software Foundation.</para>

      <para>Since our release of FreeBSD&nbsp;2.0 in late 94, the performance,
        feature set, and stability of FreeBSD has improved dramatically.
	<!-- XXX is the rest of this paragraph still true ? -->
        The largest change is a revamped virtual memory system with a merged
        VM/file buffer cache that not only increases performance, but also
        reduces FreeBSD's memory footprint, making a 5&nbsp;MB configuration a
        more acceptable minimum.  Other enhancements include full NIS client
        and server support, transaction TCP support, dial-on-demand PPP,
        integrated DHCP support, an improved SCSI subsystem, ISDN support,
        support for ATM, FDDI, Fast and Gigabit Ethernet (1000&nbsp;Mbit)
        adapters, improved support for the latest Adaptec controllers, and
        many thousands of bug fixes.</para>

      <para>In addition to the base distributions, FreeBSD offers a
        ported software collection with thousands of commonly
        sought-after programs.  At the time of this printing, there
        were over &os.numports; ports!  The list of ports ranges from
        http (WWW) servers, to games, languages, editors, and almost
        everything in between.  The entire ports collection requires
        approximately &ports.size; of storage, all ports being expressed as
        <quote>deltas</quote> to their original sources.  This makes
        it much easier for us to update ports, and greatly reduces the
        disk space demands made by the older 1.0 ports collection.  To
        compile a port, you simply change to the directory of the
        program you wish to install, type <command>make
        install</command>, and let the system do the rest.  The full
        original distribution for each port you build is retrieved
        dynamically off the CDROM or a local FTP site, so you need
        only enough disk space to build the ports you want.  Almost
        every port is also provided as a pre-compiled
        <quote>package</quote>, which can be installed with a simple
        command (<command>pkg_add</command>) by those who do not wish
        to compile their own ports from source.  More information on
	packages and ports can be found in <xref linkend="ports">.</para>

      <para>A number of additional documents which you may find very helpful
        in the process of installing and using FreeBSD may now also be found
        in the <filename>/usr/share/doc</filename> directory on any recent
        FreeBSD machine.  You may view the locally installed
        manuals with any HTML capable browser using the following
        URLs:</para>

      <variablelist>
        <varlistentry>
	  <term>The FreeBSD Handbook</term>

	  <listitem>
	    <para><ulink type="html"
	      url="file://localhost/usr/share/doc/handbook/index.html"><filename>/usr/share/doc/handbook/index.html</filename></ulink></para>
	  </listitem>
        </varlistentry>
      
        <varlistentry>
	  <term>The FreeBSD FAQ</term>

	  <listitem>
	    <para><ulink type="html"
	      url="file://localhost/usr/share/doc/faq/index.html"><filename>/usr/share/doc/faq/index.html</filename></ulink></para>
	  </listitem>
        </varlistentry>
      </variablelist>
    
      <para>You can also view the master (and most frequently updated)
        copies at <ulink
	url="../../../../index.html">http://www.FreeBSD.org/</ulink>.</para>
    </sect2>
  </sect1>
</chapter>

<!-- 
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "part" "chapter")
     End:
-->
