Explaining BSD

Last updated $Date: 2011/06/07 22:42:09 $

Note: Despite the "last update" date, most of this document dates from mid-2001. I had intended to update it, but it's unlikely to happen soon. There is a more up-to-date version on the FreeBSD web site. Consider this a historical document.

In the open source world, the word Linux is almost synonymous with Operating System, but it's not the only open source “UNIX” operating system. According to the Internet Operating System Counter, as of April 1999 31.3% of the world's network connected machines run Linux. 14.6% run BSD UNIX. Some of the world's largest web operations, such as Yahoo!, run BSD. In 2001, the world's busiest ftp server was ftp.cdrom.com. It used BSD to transfer 1.4 TB of data a day. Even Microsoft's flagship Hotmail service used BSD for much longer than they were prepared to admit, and they may still do so. Clearly this is not a niche market: BSD is a well-kept secret.

So what's the secret? Why isn't BSD better known? This white paper addresses these and other questions:

This paper notes differences between BSD and Linux in italic font.

What is BSD?

BSD stands for “Berkeley Software Distribution”. It is the name of distributions of source code from the University of California, Berkeley, which were originally extensions to AT&T's Research UNIX operating system. Several open source operating system projects are based on a release of this source code known as 4.4BSD-Lite. In addition, they comprise a number of packages from other Open Source projects, including notably the GNU project. The overall operating system comprises:

What, a real UNIX?

The BSD operating systems are not clones, but open source derivatives of AT&T's Research UNIX operating system, which is also the ancestor of the modern UNIX System V. This may surprise you. How could that happen when AT&T has never released its code as open source?

It's true that AT&T UNIX is not open source, and in a copyright sense BSD is very definitely not UNIX, but on the other hand, AT&T has imported sources from other projects, noticeably the Computer Sciences Research Group of the University of California in Berkeley, CA. Starting in 1976, the CSRG started releasing tapes of their software, calling them Berkeley Software Distribution or BSD.

Initial BSD releases consisted mainly of user programs, but that changed dramatically when the CSRG landed a contract with the Defense Advanced Projects Research Agency (DARPA) to upgrade the communications protocols on their network, ARPANET. The new protocols were known as the Internet Protocols, later TCP/IP after the most important protocols. The first widely distributed implementation was part of 4.2BSD, in 1982.

In the course of the 1980s, a number of new workstation companies sprang up. Many preferred to license UNIX rather than developing operating systems for themselves. In particular, Sun Microsystems licensed UNIX and implemented a version of 4.2BSD, which they called SunOS. When AT&T themselves were allowed to sell UNIX commercially, they started with a somewhat bare-bones implementation called System III, to be quickly followed by System V. The System V code base did not include networking, so all implementions included additional software from the BSD, including the TCP/IP software, but also utilities such as the csh shell and the vi editor. Collectively, these enhancements were known as the Berkeley Extensions.

The BSD tapes contained AT&T source code and thus required a UNIX source license. By 1990, the CSRG's funding was running out, and it faced closure. Some members of the group decided to release the BSD code, which was Open Source, without the AT&T proprietary code. This finally happened with the Networking Tape 2, usually known as Net/2. Net/2 was not a complete operating system: about 20% of the kernel code was missing. One of the CSRG members, William F. Jolitz, wrote the remaining code and released it in early 1992 as 386BSD. At the same time, another group of ex-CSRG members formed a commercial company called Berkeley Software Design Inc. and released a beta version of an operating system called BSD/386, which was based on the same sources. The name of the operating system has since changed to BSD/OS.

386BSD never became a stable operating system. Instead, two other projects split off from it in 1993: NetBSD and FreeBSD. The two projects originally diverged due to differences in patience waiting for improvements to 386BSD: the NetBSD people started early in the year, and the first version of FreeBSD wasn't ready until the end of the year. In the meantime, the code base had diverged sufficiently to make it difficult to merge. In addition, the projects had different aims, as we'll see below. In 1996, a further project, OpenBSD, split off from NetBSD.

Why isn't BSD better known?

For a number of reasons, BSD is relatively unknown:
  1. The BSD developers are often more interested in polishing their code than marketing it.
  2. Much of Linux's popularity is due to factors external to the Linux projects, such as the press, and to companies formed to provide Linux services. Until recently, the open source BSDs had no such proponents.
  3. BSD developers tend to be more experienced than Linux developers, and have less interest in making the system easy to use. Newcomers tend to feel more comfortable with Linux.
  4. In 1992, AT&T sued BSDI, the vendor of BSD/386, alleging that the product contained AT&T-copyrighted code. The case was settled out of court in 1994, but the spectre of the litigation continues to haunt people. As recently as March 2000 an article published on the web claimed that the court case had been “recently settled”.

    One detail that the lawsuit did clarify is the naming: in the 1980s, BSD was known as “BSD UNIX”. With the elimination of the last vestige of AT&T code from BSD, it also lost the right to the name UNIX. Thus you will see references in book titles to “the 4.3BSD UNIX operating system” and “the 4.4BSD operating system”

  5. There is a perception that the BSD projects are fragmented and belligerent. The Wall Street Journal recently spoke of “balkanization” of the BSD projects. Like the law suit, this perception bases mainly on ancient history.

Comparing BSD and Linux

So what's really the difference between, say, Debian Linux and FreeBSD? For the average user, the difference is surprisingly small: Both are UNIX-like operating systems. Both are developed by non-commercial projects (this doesn't apply to many other Linux distributions, of course). In the following section, we'll look at BSD and compare it to Linux. The description applies most closely to FreeBSD, which accounts for an estimated 80% of the BSD installations, but the differences from NetBSD and OpenBSD are small. Specifically, we'll look at the following questions: Who owns BSD?

No one person or corporation owns BSD. It is created and distributed by a community of highly technical and committed contributors all over the world. Some of the components of BSD are Open Source projects managed by a different project maintainer.

How is BSD developed and updated?

The BSD kernels are developed and updated following the Open Source development model. Each project maintains a publicly accessible source tree under the Concurrent Versions System (CVS), which contains all source files for the project, including documentation and other incidental files. CVS allows users to “check out” (in other words, to extract a copy of) any desired version of the system.

A large number of developers worldwide contribute to improvements to BSD. They are divided into three kinds:

This arrangement differs from Linux in a number of ways: BSD releases

Each BSD project provides the system in three different “releases”. As with Linux, releases are assigned a number such as 1.4.1 or 3.5. In addition, the version number has a suffix indicating its purpose:

  1. The development version of the system is called CURRENT. FreeBSD assigns a number to CURRENT, for example FreeBSD 5.0-CURRENT. NetBSD uses a slightly different naming scheme and appends a single-letter suffix which indicates changes in the internal interfaces, for example NetBSD 1.4.3G. OpenBSD does not assign a number ("OpenBSD-current"). All new development on the system goes into this branch.
  2. At regular intervals, between two and four times a year, the projects bring out a RELEASE version of the system, which is available on CD-ROM and for free download from ftp sites, for example OpenBSD 2.6-RELEASE or NetBSD 1.4-RELEASE. The RELEASE version is intended for end users and is the normal version of the system. NetBSD also provides patch releases with a third digit, for example NetBSD 1.4.2.
  3. As bugs are found in a RELEASE version, they are fixed, and the fixes are added to the CVS tree. In FreeBSD, the resultant version is called the STABLE version, while in NetBSD and OpenBSD it continues to be called the RELEASE version. Smaller new features can also be added to this branch after a period of test in the CURRENT branch.
By contrast, Linux maintains two separate code trees: the stable version and the development version. Stable versions have an even minor version number, such as 2.0, 2.2 or 2.4. Development versions have an odd minor version number, such as 2.1, 2.3 or 2.5. In each case, the number is followed by a further number designating the exact release. In addition, each vendor adds their own userland programs and utilities, so the name of the distribution is also important. Each distribution vendor also assigns version numbers to the distribution, so a complete description might be something like “TurboLinux 6.0 with kernel 2.2.14”

What versions of BSD are available?

In contrast to the numerous Linux distributions, there are only three open source BSDs. Each BSD project maintains its own source tree and its own kernel. In practice, though, there appear to be fewer divergences between the userland code of the projects than there is in Linux.

It's difficult to categorize the goals of each project: the differences are very subjective. On the other hand, each project has a slogan which indicates their views:

There are also two additional BSD operating systems which are not open source, BSD/OS and Apple's Mac OS X:

How does the BSD license differ from the GNU Public license?

Linux is available under the GNU General Public License (GPL), which is designed to eliminate closed source software. In particular, any derivative work of a product released under the GPL must also be supplied with source code if requested. By contrast, the BSD license is less restrictive: binary-only distributions are allowed. This is particularly attractive for embedded applications.

What else should I know?

Since fewer applications are available for BSD than Linux, the BSD developers created a Linux compatibility package, which allows Linux programs to run under BSD. The package includes both kernel modifications, in order to correctly perform Linux system calls, and Linux compatibility files such as the C library. There is no noticeable difference in execution speed between a Linux application running on a Linux machine and a Linux application running on a BSD machine of the same speed.

The “all from one supplier” nature of BSD means that upgrades are much easier to handle than is frequently the case with Linux. BSD handles library version upgrades by providing compatibility modules for earlier library versions, so it is possible to run binaries which are several years old with no problems.

Which should I use, BSD or Linux?

What does this all mean in practice? Who should use BSD, who should use Linux?

This is a very difficult question to answer. Here are some guidelines:

Who provides support, service, and training for BSD?

BSDi have always supported BSD/OS, and since 2000 they offer support contracts for FreeBSD. In April 2001 Wind River Systems announced that they would be buying out BSDi's software division. It remains to be seen what affect this will have on the support division.

In addition, each of the projects has a list of consultants for hire: FreeBSD, NetBSD and OpenBSD.

The BSD project home pages

BSDi
FreeBSD
NetBSD
OpenBSD
Wind River Systems

Other references to BSD

Riding the web wave
Twenty Years of Berkeley Unix
Whatever Happened to BSD?
Keith Bostic on the BSD tradition.
A new thorn in Microsoft's side?
BSD's Big Break?
Three Unixlike systems may be better than Linux.
BSD a better OS than Linux?
The legend of BSD
Getting to know OpenBSD
BSD Unix: Power to the people, from the code

Books on BSD

The Design and Implementation of the 4.4BSD Operating System
The Complete FreeBSD
Building Linux and OpenBSD Firewalls