doc/en_US.ISO8859-1/books/handbook/introduction/chapter.sgml
Gabor Kovesdan 7ba98a21ad MFH
Approved by:	doceng (implicit)
2012-08-19 23:05:52 +00:00

1048 lines
40 KiB
XML

<?xml version="1.0" encoding="ISO8859-1" standalone="no"?>
<!--
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 &os;! The following chapter
covers various aspects of the &os;&nbsp;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 &os; relates to other computer operating systems.</para>
</listitem>
<listitem>
<para>The history of the &os;&nbsp;Project.</para>
</listitem>
<listitem>
<para>The goals of the &os;&nbsp;Project.</para>
</listitem>
<listitem>
<para>The basics of the &os; open-source development model.</para>
</listitem>
<listitem>
<para>And of course: where the name <quote>&os;</quote> comes
from.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="nutshell">
<title>Welcome to &os;!</title>
<indexterm><primary>4.4BSD-Lite</primary></indexterm>
<para>&os; is a 4.4BSD-Lite based operating system for
Intel (x86 and &itanium;), AMD64, Sun
&ultrasparc; computers. Ports to other
architectures are also underway. You can also
read about <link linkend="history">the history of &os;</link>,
or the <link linkend="relnotes">current release</link>. If you
are interested in contributing something to the Project (code,
hardware, funding), see the <ulink
url="&url.articles.contributing;/index.html">Contributing to &os;</ulink> article.</para>
<sect2 id="os-overview">
<title>What Can &os; Do?</title>
<para>&os; has many noteworthy features. Some of these
are:</para>
<itemizedlist>
<listitem>
<indexterm><primary>preemptive multitasking</primary></indexterm>
<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>
<listitem>
<indexterm><primary>multi-user facilities</primary></indexterm>
<para><emphasis>Multi-user facilities</emphasis> which allow many
people to use a &os; 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>
<listitem>
<indexterm><primary>TCP/IP networking</primary></indexterm>
<para>Strong <emphasis>TCP/IP networking</emphasis> with
support for industry standards such as SCTP, DHCP, NFS,
NIS, PPP, SLIP, IPsec, and IPv6. This means that your &os;
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>
<listitem>
<indexterm><primary>memory protection</primary></indexterm>
<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>&os; is a <emphasis>32-bit</emphasis> operating
system (<emphasis>64-bit</emphasis> on the &itanium;,
AMD64, and &ultrasparc;) and was designed as such from the ground
up.</para>
</listitem>
<listitem>
<indexterm>
<primary>X Window System</primary>
</indexterm>
<para>The industry standard <emphasis>X Window System</emphasis>
(X11R7) provides a graphical user interface (GUI) for the cost
of a common VGA card and monitor and comes with full
sources.</para>
</listitem>
<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>
<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 &os;
<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. &os; is source code compatible with most
popular commercial &unix; systems and thus most applications
require few, if any, changes to compile.</para>
</listitem>
<listitem>
<indexterm><primary>virtual memory</primary></indexterm>
<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>
<listitem>
<indexterm>
<primary>Symmetric Multi-Processing (SMP)</primary>
</indexterm>
<para><emphasis>SMP</emphasis> support for machines with
multiple CPUs.</para>
</listitem>
<listitem>
<indexterm>
<primary>compilers</primary>
<secondary>C</secondary>
</indexterm>
<indexterm>
<primary>compilers</primary>
<secondary>C++</secondary>
</indexterm>
<para>A full complement of <emphasis>C</emphasis>
and <emphasis>C++</emphasis>
development tools.
Many additional languages for advanced research
and development are also available in the ports and packages
collection.</para>
</listitem>
<listitem>
<indexterm><primary>source code</primary></indexterm>
<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>&os; 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 &os;&nbsp;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, &os; can offer them
<emphasis>now</emphasis>!</para>
<para>The applications to which &os; 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
&os; too! &os; 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 &os; 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 &os;:</para>
<itemizedlist>
<listitem>
<para><emphasis>Internet Services:</emphasis> The robust TCP/IP
networking built into &os; makes it an ideal platform for a
variety of Internet services such as:</para>
<itemizedlist>
<listitem>
<indexterm><primary>FTP servers</primary></indexterm>
<para>FTP servers</para>
</listitem>
<listitem>
<indexterm><primary>web servers</primary></indexterm>
<para>World Wide Web servers (standard or secure
[SSL])</para>
</listitem>
<listitem>
<para>IPv4 and IPv6 routing</para>
</listitem>
<listitem>
<indexterm><primary>firewall</primary></indexterm>
<indexterm><primary>NAT</primary></indexterm>
<para>Firewalls and NAT (<quote>IP masquerading</quote>)
gateways</para>
</listitem>
<listitem>
<indexterm>
<primary>electronic mail</primary>
<see>email</see>
</indexterm>
<indexterm>
<primary>email</primary>
</indexterm>
<para>Electronic Mail servers</para>
</listitem>
<listitem>
<indexterm><primary>USENET</primary></indexterm>
<para>USENET News or Bulletin Board Systems</para>
</listitem>
<listitem>
<para>And more...</para>
</listitem>
</itemizedlist>
<para>With &os;, 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 &os; 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, &os; is an excellent platform for
research in operating systems as well as other branches of
computer science. &os;'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>
<listitem>
<indexterm><primary>router</primary></indexterm>
<indexterm><primary>DNS Server</primary></indexterm>
<para><emphasis>Networking:</emphasis> Need a new router? A
name server (DNS)? A firewall to keep people out of your
internal network? &os; can easily turn that unused 386 or
486 PC sitting in the corner into an advanced router with
sophisticated packet-filtering capabilities.</para>
</listitem>
<listitem>
<indexterm>
<primary>X Window System</primary>
</indexterm>
<indexterm>
<primary>X Window System</primary>
<secondary>Accelerated-X</secondary>
</indexterm>
<para><emphasis>X Window workstation:</emphasis> &os; is a
fine choice for an inexpensive X terminal solution,
using the freely available X11 server.
Unlike an X terminal, &os; allows many applications to be run
locally if desired, thus relieving the burden on a central
server. &os; can even boot <quote>diskless</quote>, making
individual workstations even cheaper and easier to
administer.</para>
</listitem>
<listitem>
<indexterm><primary>GNU Compiler Collection</primary></indexterm>
<para><emphasis>Software Development:</emphasis> The basic
&os; system comes with a full complement of development
tools including the renowned GNU C/C++ compiler and
debugger.</para>
</listitem>
</itemizedlist>
<para>&os; is available in both source and binary form on CD-ROM,
DVD, and via anonymous FTP. Please see <xref linkend="mirrors"/>
for more information about obtaining &os;.</para>
</sect2>
<sect2 id="introduction-nutshell-users">
<title>Who Uses &os;?</title>
<indexterm>
<primary>users</primary>
<secondary>large sites running &os;</secondary>
</indexterm>
<para>&os; is used as a platform for devices and products from
many of the world's largest IT companies, including:</para>
<itemizedlist>
<listitem>
<indexterm><primary>Apple</primary></indexterm>
<para><ulink url="http://www.apple.com/">Apple</ulink></para>
</listitem>
<listitem>
<indexterm><primary>Cisco</primary></indexterm>
<para><ulink url="http://www.cisco.com/">Cisco</ulink></para>
</listitem>
<listitem>
<para><ulink url="http://www.juniper.net/">Juniper</ulink></para>
</listitem>
<listitem>
<indexterm><primary>NetApp</primary></indexterm>
<para><ulink url="http://www.netapp.com/">NetApp</ulink></para>
</listitem>
</itemizedlist>
<para>&os; is also used to power some of the biggest sites on the
Internet, including:</para>
<itemizedlist>
<listitem>
<indexterm><primary>Yahoo!</primary></indexterm>
<para><ulink url="http://www.yahoo.com/">Yahoo!</ulink></para>
</listitem>
<listitem>
<indexterm><primary>Yandex</primary></indexterm>
<para><ulink url="http://www.yandex.ru/">Yandex</ulink></para>
</listitem>
<listitem>
<indexterm><primary>Apache</primary></indexterm>
<para><ulink url="http://www.apache.org/">Apache</ulink></para>
</listitem>
<listitem>
<indexterm><primary>Rambler</primary></indexterm>
<para><ulink url="http://www.rambler.ru/">Rambler</ulink></para>
</listitem>
<listitem>
<indexterm><primary>Sina</primary></indexterm>
<para><ulink url="http://www.sina.com/">Sina</ulink></para>
</listitem>
<listitem>
<indexterm><primary>Pair Networks</primary></indexterm>
<para><ulink url="http://www.pair.com/">Pair Networks</ulink></para>
</listitem>
<listitem>
<indexterm><primary>Sony Japan</primary></indexterm>
<para><ulink url="http://www.sony.co.jp/">Sony Japan</ulink></para>
</listitem>
<listitem>
<indexterm><primary>Netcraft</primary></indexterm>
<para><ulink url="http://www.netcraft.com/">Netcraft</ulink></para>
</listitem>
<listitem>
<indexterm><primary>NetEase</primary></indexterm>
<para><ulink url="http://www.163.com/">NetEase</ulink></para>
</listitem>
<listitem>
<indexterm><primary>Weathernews</primary></indexterm>
<para><ulink url="http://www.wni.com/">Weathernews</ulink></para>
</listitem>
<listitem>
<indexterm><primary>TELEHOUSE America</primary></indexterm>
<para><ulink url="http://www.telehouse.com/">TELEHOUSE
America</ulink></para>
</listitem>
<listitem>
<indexterm><primary>Experts Exchange</primary></indexterm>
<para><ulink url="http://www.experts-exchange.com/">Experts
Exchange</ulink></para>
</listitem>
</itemizedlist>
<para>and many more.</para>
</sect2>
</sect1>
<sect1 id="history">
<title>About the &os;&nbsp;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 &os;</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 &os;&nbsp;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>&os;</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 &os;'s distribution channels for
those many unfortunates without easy access to the Internet.
Walnut Creek CDROM not only supported the idea of distributing
&os; 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
&os; 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 CD-ROM (and general net-wide) distribution was
&os;&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 &os;
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 &os;, 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 &os;&nbsp;1.1.5.1.</para>
<para>&os; 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 &os;&nbsp;2.0 to the net and on CD-ROM (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 &os;&nbsp;2.0.5 release in June of
1995.</para>
<para>We released &os;&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
&os;&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>&os;&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. There have been several releases
from it so far: 4.0-RELEASE was introduced in March 2000, and
the last 4.11-RELEASE came out in January 2005.</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 &os; 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. The last 5.X release from the
-CURRENT branch was 5.2.1-RELEASE, introduced in February 2004.</para>
<para>The RELENG_5 branch, created in August 2004, was followed by
5.3-RELEASE, which marked the beginning of the 5-STABLE branch
releases. The most recent 5.5-RELEASE release came out in May 2006.
There will be no additional releases from the RELENG_5 branch.</para>
<para>The tree was branched again in July 2005, this time for RELENG_6.
6.0-RELEASE, the first release of the 6.X branch, was released in
November 2005. The most recent 6.4-RELEASE came out in
November 2008. There will be no additional releases from the
RELENG_6 branch. This branch is the last branch to support the
Alpha architecture.</para>
<para>The RELENG_7 branch was created in October 2007. The first
release of this branch was 7.0-RELEASE, which came
out in February 2008. The most recent 7.4-RELEASE came out
in February 2011. There will be no additional releases from the
RELENG_7 branch.</para>
<para>The tree was branched again in August 2009, this time for
RELENG_8. 8.0-RELEASE, the first release of the 8.X branch, was
released in November 2009. The most recent
&rel2.current;-RELEASE came out in &rel2.current.date;. There will
be additional releases from the RELENG_8 branch.</para>
<para>The RELENG_9 branch was created in September 2011. The first
release of this branch was &rel.current;-RELEASE, which came
out in &rel.current.date;. There will be additional releases
from the RELENG_9 branch.</para>
<para>For now, long-term development projects continue to take place
in the 10.X-CURRENT (trunk) branch, and SNAPshot releases of 10.X on
CD-ROM (and, of course, on the net) are continually made available
from <ulink
url="ftp://ftp.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>&os;&nbsp;Project Goals</title>
<indexterm>
<primary>FreeBSD Project</primary>
<secondary>goals</secondary>
</indexterm>
<para>The goals of the &os;&nbsp;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 &os; Development Model</title>
<indexterm>
<primary>FreeBSD Project</primary>
<secondary>development model</secondary>
</indexterm>
<para>The development of &os; 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="&url.articles.contributors;/article.html">list of
contributors</ulink>. &os;'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 &os; users aware of major areas
of work.</para>
<para>Useful things to know about the &os;&nbsp;Project and its
development process, whether working independently or in close
cooperation:</para>
<variablelist>
<varlistentry>
<term>The SVN and CVS repositories<anchor
id="development-cvs-repository"/></term>
<listitem>
<indexterm>
<primary>CVS</primary>
<secondary>repository</secondary>
</indexterm>
<indexterm>
<primary>Concurrent Versions System</primary>
<see>CVS</see>
</indexterm>
<indexterm>
<primary>SVN</primary>
<secondary>repository</secondary>
</indexterm>
<indexterm>
<primary>Subversion</primary>
<see>SVN</see>
</indexterm>
<para>For several years, the central source tree for &os;
was maintained by
<ulink url="http://www.nongnu.org/cvs/">CVS</ulink>
(Concurrent Versions System), a freely available source code
control tool that comes bundled with &os;. In June 2008, the
Project switched to using <ulink
url="http://subversion.tigris.org">SVN</ulink> (Subversion).
The switch was deemed necessary, as the technical limitations
imposed by <application>CVS</application> were becoming obvious
due to the rapid expansion of the source tree and the amount
of history already stored. The Documentation Project
and Ports Collection repositories also moved from
<application>CVS</application> to
<application>SVN</application> in May 2012 and July
2012, respectively.</para>
<para>While the <literal>src/</literal> and
<literal>ports/</literal> repositories now use
<application>SVN</application>, client side tools like
<application>csup</application> that depend on the older
<application>CVS</application> infrastructure, continue to
work normally &mdash; changes in the
<application>SVN</application> repository are backported to
<application>CVS</application> for this purpose.
Unlike <literal>src/</literal> and
<literal>ports/</literal>,
the documentation <application>SVN</application>
repository is not backported to
<application>CVS</application>.</para>
<para>The primary <application>CVS</application>
<ulink
url="http://www.FreeBSD.org/cgi/cvsweb.cgi">repository</ulink>
resides on a machine in Santa Clara CA, USA
from where it is replicated to numerous mirror machines
throughout the world. The <application>SVN</application> 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>
<listitem>
<indexterm><primary>committers</primary></indexterm>
<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 &os; 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>
<listitem>
<indexterm><primary>core team</primary></indexterm>
<para>The <firstterm>&os; core team</firstterm>
would be equivalent to the board of directors if the
&os;&nbsp;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 July 2012. 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 &os; developers
and their areas of responsibility, please see the <ulink
url="&url.articles.contributors;/article.html">Contributors
List</ulink></para>
<note>
<para>Most members of the core team are volunteers when it
comes to &os; 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 &os; against their better
judgement!</para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>Outside contributors</term>
<listitem>
<indexterm><primary>contributors</primary></indexterm>
<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 &os;'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 &os; mailing lists.</para>
<para><citetitle><ulink
url="&url.articles.contributors;/article.html">The
&os; Contributors List</ulink></citetitle> is a long
and growing one, so why not join it by contributing
something back to &os; 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="&url.base;/index.html">&os;&nbsp;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 &os;, 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 &os; developers is
some of the same dedication its current people have to its
continued success!</para>
</sect2>
<sect2 id="relnotes">
<title>The Current &os; 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>&os; 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;,
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 &os;&nbsp;2.0 in late 1994, the performance,
feature set, and stability of &os; 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 &os;'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, &os; 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 CD-ROM 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>All recent &os; versions provide an option in the installer
(either &man.sysinstall.8; or &man.bsdinstall.8;) to install
additional documentation under <filename
class="directory">/usr/local/share/doc/freebsd</filename> during
the initial system setup. Documentation may also be installed at
any later time using packages as described in <xref
linkend="doc-ports-install-package"/>.
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/local/share/doc/freebsd/handbook/index.html"><filename>/usr/local/share/doc/freebsd/handbook/index.html</filename></ulink></para>
</listitem>
</varlistentry>
<varlistentry>
<term>The FreeBSD FAQ</term>
<listitem>
<para><ulink type="html"
url="file://localhost/usr/local/share/doc/freebsd/faq/index.html"><filename>/usr/local/share/doc/freebsd/faq/index.html</filename></ulink></para>
</listitem>
</varlistentry>
</variablelist>
<para>You can also view the master (and most frequently updated)
copies at <ulink url="http://www.FreeBSD.org/"></ulink>.</para>
</sect2>
</sect1>
</chapter>