The Evolution of NetBSD

In 1969, the Defense Department started the ARPAnet. That same year, a Bell Labs hacker1 invented Unix. The ARPAnet evolved into the Internet, and one of the descendents of Unix is NetBSD.

Ken Thompson had been working on a time-sharing system for Bell Labs when the project was cancelled. Meanwhile, Dennis Ritchie had invented a new programming language called C. While operating systems had previously been written in machine code, these two realized that computers were powerful enough to allow an operating system to be written in C instead. This meant that an operating system could present the same capabilities on any hardware system. Programmers could use the same toolkits on different machines, instead of rewriting the toolkit each time a machine became obsolete. Thompson and Ritchie called this new operating system Unix. (Raymond 8-9)

The first paper on Unix was presented in November 1973. A professor at the University of California at Berkeley was interested in obtaining a copy of the system to experiment with, so the Computer Science, Mathematics, and Statistics departments jointly purchased a PDP-11 to run Version 4 of Unix. In the fall of 1975, two "unnoticed graduate students", Bill Joy and Chuck Haley, began exploring the new system. The two first worked on a Pascal compiler, then a new editing program, and finally began exploring the Unix kernel itself. Other institutions were interested in their code and their changes, so the first "Berkeley Software Distribution" was created in early 1977. Over the next two years, the students at Berkeley continued producing software. The second Berkeley Software Distribution, or 2BSD, was put together in 1978. The final version of this distribution was a complete operating system, which is still used on the PDP-11s running around the world. (McKusick)

Meanwhile, the planners at the Defense Advanced Research Projects Agency (DARPA) were faced with a problem on the ARPAnet. Older computers were being replaced and entirely new sites were joining. The diversity of hardware meant that there was no standard for sharing information. If they chose a hardware standard, they would be dependent on one manufacturer, so they decided to choose an operating system standard instead. Unix was chosen because it had been proven to be portable across many different system architectures. As the ARPAnet developed, its new standards were integrated into the Berkeley distributions. Among these new standards was TCP/IP. The BSD implementation of these standards passed all of the testing, more efficiently than its competitors. (McKusick)

Ten years passed. DARPA continued to fund the Berkeley research, and the BSD systems were released all around the world. However, these systems were never released as binary-only. The availability of the source meant that users were actively part of the design teams, helping to find and fix bugs, sometimes adding completely new features. But since Bell Labs still technically owned Unix, all recipients of the code needed an AT&T source license. The cost of this license was growing rapidly, though, and companies or universities that really wanted just the networking code often couldn't afford the new license. So all of the original-to-Berkeley code - the TCP/IP networking code, all the networking utilities - was split out of the rest and released as Networking Release 1 in June 1989. The licensing terms were simple: a tape of the code cost $1000, but infinite copies could be made. The only requirements were that the copyright notices be left intact. (McKusick)

Networking Release 1 was extremely popular. Keith Bostic suggested that more of the code be released. However, this was a huge task, since AT&T owned most of the code, and rewriting it would be a monstrous project. Bostic recruited people on the Internet to help rewrite the utilities, saving the kernel itself for later. Within eighteen months, nearly everything had been rewritten. Over the next several months, Bostic, along with Marshall McKusick and Mike Karels, went over the kernel, removing and rewriting "contaminated" files. All but six were purified, and Networking Release 2 was distributed in June 1991. (McKusick)

Six months later, Bill Jolitz had written replacements for these last kernel files. He then released a fully operational system for 386-based computers, calling it 386/BSD. The distribution was done almost entirely on the Internet, and was completely free. As the demand for this system grew, so did the flood of returning bug fixes. Jolitz couldn't keep up, so a group of users formed the NetBSD group. Their emphasis was on supporting as many platforms as possible, while continuing the research-style development that had been started at Berkeley. The "Net" in the name stemmed from the fact that many of the contributors never met each other in person, and all distributions were done over the Internet until 1998. (McKusick)

The FreeBSD group formed a few months later, specializing on the 386-based architecture and focusing on the same type of users as Linux. Meanwhile, Berkeley Software Design, Incorporated, was formed to distribute a commercial version of the code. They began selling their source in January of 1992 at a more than 90% discount on the AT&T license. Shortly afterwards, the subsidiary of AT&T responsible for Unix demanded that BSDI stop promoting their product as Unix - and then filed suit to keep them from selling it at all. In December, a judge in New Jersey heard the arguments for the injunction. Six weeks later, he denied the request. (McKusick)

When the dust settled, Novell had purchased Unix from AT&T. By January of 1994, a settlement was reached out of court. Due to this settlement, all three release groups - NetBSD, FreeBSD and BSDI - had to merge their codebase back into the approved release. While this initially seemed like a setback, it meant that the three years of Berkeley development could merge with the innovations from each group. (McKusick)

Theo de Raadt disagreed with the way that the NetBSD core team was directing the project. Feeling that his concerns were going unheeded, he started his own project, and the first release was distributed in November 1995. At the time, the NetBSD group was still forbidden by US law to include much of the cryptography code for release outside the country. Since de Raadt was a Canadian citizen, he was not hampered by these laws, and included the encryption code in the very beginning. (Howard)

However, the NetBSD project continued to evolve without de Raadt. By 1998, there were distribution media separate from the Internet, and companies willing to sell support for NetBSD, much like the Linux distributors. The difference between these companies and the Linux distributions is that the system of included software, or "packages", is the same no matter where it is obtained.

Those familiar with the BSD projects will recognize the little daemon or beastie. Marshall McKusick designed this creature in 1988, a play on the operating system term "daemon". (Background processes are called daemons, and sometimes are referred to as if they were living creatures. For example: "Network daemons... will kill themselves rather than live in a corrupt environment.... There may be times when you need to kill a daemon.... Be sure to get the parent daemon." (Hunter 309, emphasis original))

Some people have protested that the daemon looks "Satanic". But for the most part, the renderings of the daemon are cute and innocent. For example, the BSD Mall has an architect daemon while Wasabi Systems has a ninja daemon.

This brings us to the present day. The NetBSD project still focuses on portability between different architectures - as of May 2002, there were 50 supported platforms, all of which compile from the same source tree. Platforms are differentiated by the type of CPU they use, the word size of the CPU, and the bus architecture. Portability means more than two systems acting alike, too. As Hubert Feyrer puts it, "Making two technical systems [show] the same behaviour on defined input/output situations doesn't make them portable - it just makes them "compatible"." (Feyrer)

Portability is the goal that Thompson and Ritchie had when writing Unix: the same toolkits available on any machine. If the source code, with only minor redundancy, can present toolkits on any machine, the operating system is portable. This original goal is the same goal of the NetBSD project. (Feyrer)

In conclusion, NetBSD has come a long way from the days when the University of California was releasing its first software distributions. It is still one of the most stable operating systems in existence, used in places as different as a home computer and the International Space Station. This makes the slogan of the NetBSD Project very appropriate: "Of course it runs NetBSD."


[1] Hacker, for the purposes of this document, is defined as "one who programs enthusiastically (even obsessively) or who enjoys programming rather than just theorizing about programming." (Jargon File)

Reference List


The above was written by Anne Robinson (cheyan @ endersgame . net) for her CSSE 103 term paper in May 2002. Comments are welcome.