Picking up where we left off last week, our story now brings us to Berkeley Software Distribution (BSD). Unix first came to the University of California, Berkeley in 1975. Ken Thompson took at sabbatical to come help set up Unix version 6 on their PDP-11. Initially, BSD was just an enhanced Unix, sporting an extra layer of patches that provided additional functions. This layered approach was partly a result of budget constraints which had the PDP-11/45 split between various departments, limiting Unix to run just a third of the day.
However, fortunes changed with the acquisition of the beefier PDP-11/70, accelerating the development of Ken’s Pascal implementation of Unix. Ken worked on this version with graduate students Chuck Haley and Bill Joy, who helped improve the code, and enriched it further by adding additional software, notably the text editor, ex. By 1977, other institutions became interested in using Berkeley’s version of Unix. So, Bill Joy compiled what would become the first Berkeley Software Distribution (1BSD), which he released on March 9, 1978.
This was very popular, and in 1979 version 2 of BSD (2BSD) was released. It included the venerable programs Vi and Cshell, both created by Bill Joy, and which are still used today. But 3BSD, also birthed in 1979, was the milestone where BSD began its distinct evolution from Unix. Following on the heels of the first successful port of Unix to a non PDP system, the Interdata 7/32, 3BSD was released on the 32Bit VAX-11/780 computer.
In the paper, by Özalp Babaoglu and Bill Joy that followed, they describe… “modifications made to the UNIX operating system for the VAX-11/780 to convert it from a swap-based segmented system to a paging-based virtual memory system.” this allowed the operating system to make use of primary physical memory (E.G RAM) and secondary storage (like a hard disk) to simulate a large contiguous block of addressable memory space. This required many changes in the kernel as well as the operating system. The large virtual memory space was necessary to aid in the development of complex lisp programs using Berkeley’s Franz Lisp. Because BSD was ported to work with the VAX computers it also became the defacto operating system on that platform. This continued all the way up until 1983 with the release of the commercial version of Unix named System V.
3BSD caught the eye of the Defense Advanced Research Projects Agency (DARPA), and convinced them to fund the Berkeley team to develop what would later become the 4BSD system. One of 4BSD’s primary objectives was to integrate the DARPA Internet protocols (TCP/IP). It was realized that the networking implementation was general enough to communicate across a diverse network of facilities, such as local networks and long distance networks like the ARPANET. So they got to work.
Up until this point BSD had been released with Proprietary AT&T code, and thus required an AT&T software license. This was expensive at the time, and institutions expressed interest in a version of BSD that did not contain the proprietary AT&T code, and instead just contained the networking code developed for the DARPA project. This led to the creation of Networking release 1 (Net/1 or v4.1 of BSD) in 1989, which also happened to be the first BSD under the BSD license. After Net/1 BSD was a success, the team at Berkeley decided that all future code would be licensed under the BSD license. They also decided to reimplement many of the Unix programs so that all software on the OS fell under one license. It took a couple of years to complete, but in 1991 this effort was done and coincided with the Net/2 (v4.2) release of BSD.
Net/2 became the foundation for two distinct BSD ports to the Intel 80386 architecture. One port became the free as in gratis 386BSD by Lynne Jolitz and William Jolitz, and the other became the proprietary BSD/386 AKA BSD/OS. This landed BSD in hot water. UNIX System Laboratories (USL), a subsidiary of AT&T who were the maintainers of System V, a commercial port of Unix, thought that BSD was infringing on their copyright by selling BSD/OS. The lawsuit titled, UNIX System Laboratories, Inc. v. Berkeley Software Design, Inc (USL vs BSDi), was filed in 1992.
USL argued that a significant portion of the BSD operating system was using proprietary AT&T code. This turned out to be false, and only portions of six files in the BSD operating system were found to be infringing. The judge threw out the preliminary injunction, and the University then counter sued USL for using BSD code in their System V operating system. The legal battle took 2 years to resolve, but after much back and forth, eventually a settlement was reached in February of 1994.
While the BSD/OS version of BSD was locked in a legal battle, the free version of BSD, 386BSD was short lived. Soon after its first release it was forked due to differences of opinion over the direction of future releases between the Jolitzes and the community members. Community members had been collecting bug fixes and enhancements, releasing them as an unofficial patch. But the timing around when those patches would be integrated back into the main OS if ever, could not be resolved between the two parties. This caused two separate groups within the community to create their own BSD versions.
FreeBSD was the brainchild of Nate Williams, Rod Grimes and Jordan Hubbard, three of the unofficial patch kit maintainers. They consulted with the 368BSD’s users to come up with the initial goals for the project. One of the main ones early on was to improve the distribution channels for FreeBSD. This lead to a fortunate partnership with Walnut Creek, a company that specialized in distribution of software through discs. Taking a chance on the unknown project, they not only published FreeBSD, they distributed it through their FTP channels, and even employed Jordan Hubbard. This gave FreeBSD the traction it needed to continue growing.
The first version of FreeBSD was released in 1993. It was based off of the Net/2 release of BSD. This was unfortunate as the lawsuit between USL and Berkeley would be settled soon after. Under the terms of the settlement 3 of the 18,000 files in Net/2 were considered encumbered and the intellectual property of USL and needed to be removed. These terms also affected FreeBSD and they were required to make the changes to their version of BSD to remove the files but were allowed one more release using the old Net/2 code. The terms of the deal also said that the next release of BSD, 4.4BSD-Lite would be blessed by USL and they would seek no further legal action against the operating system.
Unfortunately while only 3 files had to be removed, version 4.4 of BSD was very different from the previous versions (and 368BSD), so it ended up being a lot of work to get FreeBSD to be based off the new release. It took over a year and a half of concerted effort, but in December of 1994 FreeBSD 2.0 was released into the world. Since then FreeBSD has seen 11 more major releases and is up to version 13.2 at the time of this post.
But FreeBSD was not the only BSD that was born in 1993. NetBSD, also started its life then as well. The 4 founders of NetBSD were Chris Demetriou, Theo de Raadt, Adam Glass, and Charles Hannum. Their goals for the project were to create a well designed operating system that was extremely portable, which are still the driving forces behind this project today. NetBSD actually has a fantastic timeline of BSD on their webpage that covers what we’ve talked about so far. I’ve reproduced part of it here.
The UNIX system family tree: Research and BSD
---------------------------------------------
First Edition (V1)
|
Second Edition (V2)
|
Third Edition (V3)
|
Fourth Edition (V4)
|
Fifth Edition (V5)
|
Sixth Edition (V6) -----*
\ |
\ |
\ |
Seventh Edition (V7) |
\ |
\ 1BSD
32V |
\ 2BSD---------------*
\ / |
\ / |
\/ |
3BSD |
| |
4.0BSD 2.79BSD
| |
4.1BSD --------------> 2.8BSD
| |
4.1aBSD -----------\ |
| \ |
4.1bBSD \ |
| \ |
*------ 4.1cBSD --------------> 2.9BSD
/ | |
Eighth Edition | 2.9BSD-Seismo
| | |
+----<--- 4.2BSD 2.9.1BSD
| | |
+----<--- 4.3BSD -------------> 2.10BSD
| | / |
Ninth Edition | / 2.10.1BSD
| 4.3BSD Tahoe-----+ |
| | \ |
| | \ |
v | 2.11BSD
Tenth Edition | |
| 2.11BSD rev #430
4.3BSD NET/1 |
| v
4.3BSD Reno
|
*---------- 4.3BSD NET/2 -------------------+-------------*
| | | |
386BSD 0.0 | | BSD/386 ALPHA
| | | |
386BSD 0.1 ------------>+ | BSD/386 0.3.[13]
| \ | 4.4BSD Alpha |
| 386BSD 1.0 | | BSD/386 0.9.[34]
| | 4.4BSD |
| | / | |
| | 4.4BSD-Encumbered | |
| -NetBSD 0.8 | BSD/386 1.0
| / | | |
FreeBSD 1.0 <-----' *--NetBSD 0.9 | BSD/386 1.1
NetBSD has seen 9 major releases in its lifetime since its inception. It has done many interesting things including being the first implementation of a Rump Kernel, a type of kernel that can compile drivers to run either directly in the Kernel (like most drivers are made today) or run in user space. This opens up the possibility of portable drivers to other operating systems, and is a topic I’m very interested in.
NetBSD and FreeBSD are not the only BSDs around today, many other operating systems can trace their lineages to both of them including OpenBSD, DragonFlyBSD, macOS, and others. They are all descendants of Unix, and share as many similarities as they do differences. But while the landscape today is dominated by computers that can trace there origin all the way back to an operating system created by accident back in 1969, not all operating systems heritage go back to Unix. The next topic of our story, Plan 9, will be a drastic departure from what we have seen before. But that will have to wait another day :)
Call To Action 📣
If you made it this far thanks for reading! If you are new welcome! I like to talk about technology, niche programming languages, AI, and low-level coding. I’ve recently started a Twitter and would love for you to check it out. I also have a Mastodon if that is more your jam. If you liked the article, consider liking and subscribing. And if you haven’t why not check out another article of mine! Thank you for your valuable time.
Thanks Diego, really enjoying this series. Looking forward to the Plan 9 write-up! :D