was born in the womb of Bell Labs
, then a division of AT&T
, in 1969. Since then it has had a long and convoluted history resulting in a multitude of flavors and versions. One of the most dominant of Unix's progeny is FreeBSD
, as well as its cousins NetBSD
In 1969, Ken Thompson, Dennis Ritchie, and others at Bell Labs began developing an operating system on a little-used PDP-7. They called it Unix, playing on the title of an earlier OS, MULTICS. Originally, this operating system was written in assembler, which meant it was not portable (and so, fairly ordinary); however, in 1973 they made the decision to rewrite it in C, halfway sealing its fate as the dominant operating system of the next few decades.
In November of the same year, Ken Thompson and Dennis Ritchie presented a paper on Unix at the Symposium on Operating Systems Principles at Purdue University, at which Bob Fabry of the University of California at Berkeley was in attendance. He took an immediate interest, and obtained a PDP-11/45 (DEC's machines had advanced since '69) running the then-current Unix V4 for Berkeley. There were problems with this machine involving overlapped seeks, but Ken Thompson remotely debugged the system from New Jersey, setting a trend of collaboration and cooperation between Berkeley and Bell Labs. This machine, bought by a Math/Statistics/Computer Science coalition, was soon running Unix only 8 hours a day, as the Math and Statistics departments both preferred DEC's older RSTS system.
The Birth of BSD
To alleviate this problem, the Computer Science department bought in the fall of 1975 DEC's newest machine, a PDP-70. At the same time, Ken Thompson took a one-year sabbatical to be a visiting professor at his alma mater, Berkeley. Also in the fall of 1975 arrived two graduate students, Bill Joy and Chuck Haley. These three elements combined to give birth to BSD.
Ken Thompson brought with him the latest Unix, V6, and got it installed on the PDP-70. Joy and Haley took an immediate interest in the system, and improved a rudimentary Pascal interpreter that Thompson had hacked together to the point that it became the language of choice for students due to its excellent error recovery and compile times. With the replacement of teletypes with screen terminals, Joy and Haley also put together a line editor ex to replace the old ed. At the end of the summer of '76, Thompson departed, and Joy and Haley began to take an interest in the actual Unix kernel. They cut their teeth on the "fifty changes" tape provided by Bell Labs, which was a series of kernel patches; having learned their way around the source, they proceeded to begin making their own small changes to streamline the kernel. Meanwhile, interest in the Pascal system grew, and requests started coming in, and in early 1977, Joy put together what he called the Berkeley Software Distribution. This distribution, originally, was just the Pascal compiler and (hidden in a subdirectory) ex.
Over the next two years, advances in hardware brought terminals with screen-addressable cursors to Berkeley; and Joy turned ex into vi, a screen-based text editor. In order to keep everything backwards compatible, Joy consolidated the screen code into a separate layer, and termcap was born. The Pascal system, too, was continuously being improved as user input and suggestions were incorporated into the system. In mid-1978, Joy put out the Second Berkeley Software Distribution, soon shortened to 2BSD, which included all this new software. Joy distributed around 75 tapes of 2BSD over the next year, and 2BSD lives on; 2.11BSD (which included, in addition to 2BSD's software, the C shell and many of the other small programs that make up a UNIX distribution today) still runs on (antiquated) PDPs the world over.
Earlier that year, Berkeley had acquired a 32-bit VAX-11/780 for the Macsyma project. This machine came running DEC's VMS, but the faculty at Berkeley had gotten used to Unix, so they acquired Bell Labs's VAX port of Unix V7, 32/V. However, the VAX had virtual memory capabilities which 32/V did not take advantage of, and another student, Ozalp Babaolgu, was recruited to implement a working set paging system on the VAX. Babaoglu approached Joy for help; Joy saw that the 32-bit VAX would soon make the PDP obsolete, and not only helped Babaoglu finish his project but began porting 2BSD to the VAX. By the end of 1979, 3BSD was out, and it included the virtual memory kernel, the standard 32/V utlities, and the 2BSD ports. This was the first BSD to be a full-fledged operating system distribution.
Bell Labs put out their last Unix with V7; AT&T moved Unix to a different group that worked toward commercial releases with System III and the famous System V. The research community continued to modify the Unix system, but they needed an organization to act as a clearing-house for new releases, and Berkeley soon found that it had stepped into that role. This is the historic split between the two Unices and the resulting OS wars (thats right, folks, MS vs Linux is a rerun) between the academic and the commercial communities through the 80s and early 90s. Eventually, System V "won" and had most of its interfaces into the formal standards; but in reality, each borrowed innovations from the other, and many differences were ironed out. But more about that later; let us now return to BSD and see what happened there.
Enter the Feds
One of the Defense Advanced Research Projects Agency's (DARPA) first and biggest successes was ARPAnet, the nationwide network that connected the major research centers. But the hardware that ran ARPAnet was becoming old, and one of the biggest costs of upgrading would be porting all the software. The systems had to be unified at some level, and the most obvious and practical level was the operating system. Unix was chosen for its proven portability, and in the fall of 1979 (before 3BSD was actually out) Bob Fabry wrote a proposal suggesting that Berkeley develop an enhanced version of 3BSD for use by DARPA. When he presented this paper at a meeting of DARPA people and the contractors who developed the original ARPAnet, the audience had some reservations as to Berkeley's abilit to put out a full working distribution, but in December 3BSD was released and Fabry was vindicated. In April of 1980 Berkeley was awarded an 18-month contract to add features needed by DARPA.
Fabry immediately set up the Computer Systems Research Group (CSRG) to handle BSD and hired a project administrator, Laura Tong. Although Fabry was unsure if Joy would want to head the group, a call from Joy settled that and Joy was hired to take charge of further development of BSD. In October 1980, 4BSD was released. This release included job control, an auto reboot, a 1k block file system, and support for the latest hardware, the VAX-11/750. This distribution ran on around 500 machines.
Popularity breeds criticism, and criticism of BSD soon emerged. David Kashtan at the Stanford Research Institute wrote a paper comparing benchmarks on VMS vs 4BSD that showed severe performance problems with 4BSD on the VAX. Within weeks, Joy had tuned up the kernel to surpass the VMS benchmarks and wrote a rebuttal paper. These tuneups were incorporated, along with some other new software, into 4.1BSD.
At the end of the first contract, DARPA was sufficiently satisfied with the results to award CSRG a new two-year contract with almost five times the funding. BSD was to be given a more efficient file system with support for multi-gigabyte drives, interprocess communication, and networking support - TCP/IP. In 1981, an early version of the TCP/IP protocols were provided to Berkeley, and Joy integrated them into the system and tuned their performance; he also realized that the system could carry much more than the standard ARPAnet protocols and restructured it to be able to carry multiple protocols simultaneously. At this point, the rtools (rsh, rcp, rlogin, etc) were created to allow local users access to remote resources. This system was distributed locally in 1982 as 4.1a, but copies were leaked and impatient system administrators installed it anyway. Feedback from the users of 4.1a allowed for the creation of the 4.2BSD System Manual, which described the interfaces and facilities that would be implemented in 4.2BSD. Later on a 4.1b was released with a new, more efficient file system.
In late spring in 1982, Joy announced that he would be leaving to work for Sun Microsystems, and in the fall when he left Sam Leffler took over the project. He had a tight deadline: to have the 4.2BSD ready to go by spring of 1983. Various parts of the system were put on the backburner and eventually shelved (like the most sophisticated parts of the IPC mechanism). He put out an intermediate release in April 1983, 4.1c, to help prepare administrators to port to 4.2, which was finally released in August 1983 with almost everything described in the System Manual. At this point, Leffler left to work for Lucasfilm and was replaced by Mike Karels and Kirk McKusick. 4.2BSD was immensely popular, and over 1000 site licenses were shipped, more than all the previous BSDs combined (previous numbers were machines; these are site licences). It even surpassed System V in the commercial arena, and most vendors shipped systems with it preinstalled, both for the Berkeley Fast filesystem and networking.
Over the next three years, 4.2BSD was polished and tuned, as it suffered from the same problem as 4BSD: it was slow and inefficient, mainly because none of the new code had been tuned. The networking system was updated with code from BBN (Bolt, Beranek, and Newman). They were the original contractors of ARPAnet who were supposed to have done the implementation of the networking, but a third party ascertained that BSD's hacked-up code was marginally better, and so the BBN code was simply integrated into it rather than replace it. In June 1986, 4.3BSD was released.
In October 1986, Keith Bostic ported 4.3BSD to the PDP-11 (to the amazement of those on the 4.3BSD project); this was released as 2.11BSD. Bostic then promptly joined the CSRG. Over the next couple of years, it became increasingly obvious that the VAX architecture was outliving its usefulness, and it was decided to finally split 4.3BSD into machine-dependent and machine-independent parts. 4.3BSD was ported to a short-lived architecture known as the Power 6/32, and this release was known as 4.3BSD-Tahoe, in June 1988; the main reason for porting it was to complete the kernel split. It is important to note that all the BSDs had been distributed with the source; this meant that each licensee of BSD had to go through AT&T and get an AT&T source license first. AT&T was charging more and more for these, and vendors requested that Berkeley extract the TCP/IP code from BSD and provide it on terms that did not require the prohibitively expensive AT&T source license. The BSD originated networking code and supporting utilities were released in June 1989 as Networking Release 1, the first freely-redistributable code from Berkeley, under a license very similar to the current open source BSD license.
Development on 4.3BSD itself continued; the virtual memory system described in the 4.2BSD System Manual was finally implemented by adapting the code from Carnegie-Mellon's MACH kernel; a SunOS-compatible NFS system was also added. CSRG considered releasing this as 4.4BSD, but instead released it as an interim release, 4.3BSD-Reno (the Nevada reference was to remind users that installing it was a bit of a gamble).
At this point, only the networking code was free. Bostic wanted to remove all the proprietary code and release the entire thing under the BSD license, but the rest of CSRG felt that it was too great a task. They agreed that if Bostic could reimplement all the hundreds of supporting utilities, they would begin work on the kernel, assuming that that would put the idea to rest. Undaunted, Bostic launched a massive online effort to get users of 4.3BSD to rewrite the UNIX utilities using only the published descriptions, for no compensation but having their name listed among the BSD contributors. Slowly the code trickled in, and within 18 months Bostic had almost all the important utilities and libraries done. Over the next several months, the CSRG team went through the kernel file by file rewriting everything that had the mark of 32/V on it, until there were only six major files left with code that originated in 32/V. Rather than wait to rewrite those, they released what they had as Networking Release 2 in 1991. The CSRG team had created an operating system almost completely free of AT&T code.
Filling in the gap did not take long; within six months, William Jolitz had written replacements for the six files, ported the entire thing to the new PC architecture, and released the system online as 386BSD, free for download from anonymous ftp. However, Jolitz had a full-time, separate job, and so could not keep up with the flood of patches and bugfixes.
Enter the Daemons
The NetBSD group was formed by a core group of 386BSD users with the intent of pooling their development resources, continuing development in the CSRG style, and porting BSD to as wide a range of platforms as possible. Within a few months, the FreeBSD group also spun off from 386BSD.
In 1992-93, Jordan K. Hubbard, Rod Grimes, and Nate Williams were working on 386/BSD and released a series of patches known as the "Unofficial 386BSD Patchkit". As the patchkit grew, the authors incorporated it into the BSD tree itself and planned to release it as 386BSD 0.5. However, in 1993 Jolitz removed his approval and the group renamed the project to FreeBSD at the suggestion of David Greenman at Walnut Creek. They contacted Walnut Creek when they were ready for a CDROM distribution channel, and Walnut Creek offered them not only that but also high bandwidth servers to develop on, and in December of 1993 FreeBSD 1.0 was released.
In the meantime, a legal war had been waged over copyright infringment and trade secret theft claims between Novell (who had come to own AT&T's Unix) and Berkeley/BSDI (BSDI was spin-off company that sold Net/2 and Jolitz's six files commercially). The outcome was that three more files in Net/2 were rewritten, Novell copyrights were added to 70 more files (although the license remained the same), and the entire system was released as 4.4BSD-Lite. One outcome of the suit was that Novell agreed not to sue anyone using 4.4BSD-Lite, meaning that all the other BSDs, including FreeBSD, had to upgrade to 4.4BSD-Lite. This resulted in FreeBSD 2.0 in November 1994.
Since then, FreeBSD has been enhanced and extended to version 4.5; Walnut Creek merged with BSDI; and FreeBSD 5.0 is in the works. Among the improvements that have been made is a Linux-emulation layer, which has allowed FreeBSD to benefit from enormous amount of development done for Linux. It also speaks volumes of FreeBSD's target userbase: while NetBSD goes after the people who need UNIX to run on anything from a toaster to the Atari ST, and OpenBSD goes after the heavily technical security professional types, FreeBSD goes for much the same market as Linux (albeit those with less of a need for the cutting edge and more for stability): the mainstream server market. As Walnut Creek said, "17 years of development has made it the world's most mature and robust network operating system."