The following section provides some background information on the project, including a
brief history, project goals, and the development model of the project.
The FreeBSD Project had its genesis in the early part of 1993, partially as an
outgrowth of the “Unofficial 386BSD Patchkit” by the patchkit's last 3
coordinators: Nate Williams, Rod Grimes and myself.
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 “386BSD
0.5” or “386BSD Interim” in reference to that fact.
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 “cleanup”
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.
It did not take us long to decide that the goal remained worthwhile, even without
Bill's support, and so we adopted the name “FreeBSD”, 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.
The first CD-ROM (and general net-wide) distribution was FreeBSD 1.0, released in
December of 1993. This was based on the 4.3BSD-Lite (“Net/2”) 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.
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 “encumbered” code and the property of Novell, who
had in turn acquired it from AT&T some time previously. What Berkeley got in return
was Novell's “blessing” 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 1.1.5.1.
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 “Lite”
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 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 FreeBSD 2.0.5 release in June of
1995.
We released FreeBSD 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 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).
FreeBSD 2.2 was branched from the development mainline (“-CURRENT”)
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.
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.
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.
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 ia64 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.
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.
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.3-RELEASE came out in Jan 2008. There will be additional releases from the RELENG_6
branch.
The RELENG_7 branch was created in October 2007. The most recent release of this
branch was 7.0-RELEASE, which came out in Feb 2008. There will be additional releases
from the RELENG_7 branch.
For now, long-term development projects continue to take place in the 8.X-CURRENT
(trunk) branch, and SNAPshot releases of 8.X on CD-ROM (and, of course, on the net) are
continually made available from the snapshot
server as work progresses.
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 “mission” 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.
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.
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 list of contributors. 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 FreeBSD
technical discussions mailing list. The FreeBSD
announcements mailing list is also available to those wishing to make other FreeBSD
users aware of major areas of work.
Useful things to know about the FreeBSD Project and its development process,
whether working independently or in close cooperation:
The SVN and CVS repositories
For several years, the central source tree for FreeBSD was maintained by CVS (Concurrent Versions System), a
freely available source code control tool that comes bundled with FreeBSD. In June 2008,
the Project switched to using SVN (Subversion). The switch was deemed necessary, as the technical
limitations imposed by CVS were becoming obvious due to the
rapid expansion of the source tree and the amount of history already stored. While the
main repository now uses SVN, client side tools like CVSup and csup that depend on the
older CVS infrastructure, continue to work normally -- changes
in the SVN repository are backported to CVS for this purpose. Currently, only the central source tree is
controlled by SVN. The documentation, World Wide Web, and
Ports repositories are still using CVS. The primary repository resides on a
machine in Santa Clara CA, USA from where it is replicated to numerous mirror machines
throughout the world. The SVN tree, which contains the -CURRENT and -STABLE trees, can all be easily replicated to your
own machine as well. Please refer to the Synchronizing your
source tree section for more information on doing this.
The committers list
The committers are the people who have write access to the CVS tree, and are
authorized to make modifications to the FreeBSD source (the term “committer”
comes from the cvs(1)commit 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 send-pr(1) command. If
something appears to be jammed in the system, then you may also reach them by sending
mail to the FreeBSD committer's mailing list.
The FreeBSD core team
The FreeBSD core team 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 July 2008. Elections are held every 2 years.
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
Contributors List
Note: Most members of the core team are volunteers when it comes to FreeBSD
development and do not benefit from the project financially, so “commitment”
should also not be misconstrued as meaning “guaranteed support.” The
“board of directors” 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 judgement!
Outside contributors
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 FreeBSD technical discussions mailing list where such things are
discussed. See Appendix C for more information about the
various FreeBSD mailing lists.
The FreeBSD Contributors List is a long and growing one, so why not
join it by contributing something back to FreeBSD today?
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 FreeBSD Project web site.
In summary, our development model is organized as a loose set of concentric circles.
The centralized model is designed for the convenience of the users 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 application programs that the users can easily install and use --
this model works very well in accomplishing that.
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!
FreeBSD is a freely available, full source 4.4BSD-Lite based release for Intel i386™, i486™, Pentium®, Pentium Pro,
Celeron®, Pentium II, Pentium III, Pentium 4
(or compatible), Xeon™, DEC Alpha™ 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.
Since our release of FreeBSD 2.0 in late 1994, the performance, feature set, and
stability of FreeBSD has improved dramatically. 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 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 Mbit) adapters, improved support for the latest Adaptec controllers, and many
thousands of bug fixes.
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 19,000 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 445 MB of storage, all ports being expressed as
“deltas” 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 make install, 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 “package”, which
can be installed with a simple command (pkg_add) by those who do
not wish to compile their own ports from source. More information on packages and ports
can be found in Chapter 4.
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 /usr/share/doc directory on any recent FreeBSD machine. You may
view the locally installed manuals with any HTML capable browser using the following
URLs: