Over on our Discord channel recently we had an Engineer ask us to go over a fairly unique topic. He asked if we could cover the split between BSD and System V (System Five). Now, I love retro-tech, so I got suckered right into this one. To some degree, I felt as though this was the article I was born to write, maybe just 35 years too late.
In the beginning there was Multics, which stood for Multiplexed Information and Computing Service. It was an early time-sharing operating system based on a single-level memory architecture. Now, single level memory is a little hard to wrap your head around and at times seems almost philosophical. But, it ultimately resulted in what we now commonly refer to as virtual memory. Essentially, an operating system just maps a process to a memory address and that page is stored either in RAM or written out to a storage medium if no RAM is available. A “page fault,” which some Engineers may have heard of before, occurs when the processes accesses RAM and the page has been pushed to the storage medium instead. All of that is to say, the operating system sees a single plane of address space and does not care where its data is being stored.
Look, this was ground-breaking stuff at the time.
Multics was first made through a collaborative process by General Electric and Bell Labs and they wrapped up around 1967 for a full release. Two unknown computer scientists were on the development team, named Ken Thompson and Dennis Ritchie. Today you may have heard of them, but back then they were just like you and I. Let’s keep moving along. Multics was very novel for its time. For starters, it used dynamic linking, which introduced a new method of allowing processes to access external routines that were not present at the time of original binary compilation. This allowed programs to be more modular and, in turn, update more rapidly. Plus, applications could share libraries and save on storage space. The operating system also allowed for a rudimentary version of hot-swapping called on-line reconfiguration. And, in some ways it was actually more advanced, because it allowed for the swapping of central processing units, memory banks, disk drives, and more. Multics was actually one of the earliest systems to support multiple central processing units. It was even considered the first operating system to provide a hierarchical file system. Files names could be almost any length, as well. Many years later, MS-DOS would not even support this in its first several versions! But, after a while Bell Labs withdrew from the MULTICS project, leaving Dennis and Ken with a lot of spare time on their hands.
All of this spare time left a lot of room for creative thinking. One day Ken Thompson started playing with an old PDP-7 he had found sitting around the office. So, he started re-writing a game called Space Travel on it. Now, in order to do this, he had to create his own tools, as one did back then. With the help of Dennis and his team, they actually ended up writing an entire operating system. It included a hierarchical file system, processes, device files, a command-line interpreter, piping for inter-process communication, and several other utilities and functionalities. And, let me tell you, they were proud. When it was all done in 1970 they jokingly called it Unix, which was a play on the name Multics.
As many of our well-read Engineers may already know, UNIX was originally made by AT&T in the 1970s by Ken Thompson and Dennis Ritchie, plus their team of highly skilled computer scientists. (And, if you don’t know the stories of these two heroes, you should look them up. They were truly pioneers. Thompson was born in New Orleans.) During their development of this new operating system Dennis Ritchie ended up creating a new high-level language called C. That is how incredibly intelligent these men were. These were ground-breaking times. Ken Thompson once said, “…the C language ‘grew up with one of the re-writings of the system and, as such, it became perfect for writing systems.'” The C language is still used today and is incredibly fast.
During one of these long development cycles in the evolution of UNIX, Ken Thompson took a sabbatical in 1975. In his free time made his way down to UC Berkeley to work as a visiting professor. UC Berkley was his alma mater. While he was there he helped them install a PDP-11. And what did he install on it? Why, Version 6 of their UNIX operating system licensed by AT&T. It is this very installation of UNIX that would eventually grow into what is now considered the Berkeley Software Distribution (BSD) based on Research Unix. Although, at the time BSD was merely called Berkeley Unix.
After Ken went back to AT&T, two graduate students started maintaining this beloved PDP-11 and working on Berkeley Unix. Their names were Chuck Haley and Bill Joy. They worked hard to improve Ken’s Pascal implementation and even created a text editor called ex, which is still around today. Pretty soon, word started getting around about the cool new software they had down in Berkeley and other universities wanted it on their computers, too. All of these requests led Bill to create the first software distribution of BSD in 1978, which contained ex and a few other modified files. It wasn’t a complete operating system though; that would come in time. I would also like to note, due to the software included in the distribution, that there was a second release. It included software with familiar names such as vi and C Shell. Several more BSD distributions were also released over the next several years. Now, it should be understood that the reason these were released as software compilation packages was because AT&T still owned the license for the source code on which the Berkeley Distribution was built. In order for a university to use the Berkeley Distribution, they had to have a licensed version of AT&T’s UNIX. But, as the computer industry was rapidly growing, that became a glaring problem at Berkeley where early computer hackers wanted to share software as freely as they shared ideas.
In 1989 plans were laid to change just that. Slowly, portions of AT&T code were re-written under a new BSD license, which made them freely redistributable. First a new network stack was written that supported TCP/IP, which System V didn’t have. All of those modifications were released as Network Release 1 and did not come with strings attached to AT&T; therefore, there were no licensing conflicts. After Network Release 1, Keith Bostic took it upon himself to re-write several more AT&T UNIX utilities without referencing AT&T source code. And, after 18 months he had replaced every single AT&T utility in UNIX with a new one under the BSD license. All that was left was the kernel. Work on the kernel was a little tougher, but was finished a few months later. Then, in 1991 a new Networking Release 2 distribution was released as an entire operating system. Networking Release 2 quickly rose to popularity in the Unix Wars. It even led to the development of NetBSD and FreeBSD. But, popularity does not come without a price.
Not too long after the release of Networking Release 2, a new company formed in 1991 called Berkeley Software Design that set out to create a proprietary BSD for the Intel 80386 CPU. And in 1993 they had a release based on UC Berkeley’s Networking Release 2 that went head to head with Goliath: AT&T’s System V. This naturally led to a lawsuit.
UNIX System Laboratories vs Berkeley Software Design alleged that Berkeley Software Design had breached AT&T’s license contract, infringed on their copyrights, diluted their UNIX trademark, and misappropriate AT&T’s trade secrets. Because so much of the software originated out of Networking Release 2 from UC Berkeley, they were quickly involved and launched a counter-suit in 1993. The University alleged that AT&T had failed to credit them for the use of BSD code in System V! Oh, how the turn tables … turn.
Following the counter-suit, AT&T sold UNIX System Laboratories to Novell. Novell’s CEO, Ray Noorda, led the lawsuit to a settlement in 1994, under the following conditions.
- A new version of BSD was to be released with no disputed files and UC Berkeley would have to encourage Networking Release 2 licensees to switch.
- UNIX System Laboratories, under Novell, would grant a three-month grace period for users of disputed files to switch.
- Certain files distributed by the University would carry a UNIX System Laboratories copyright notice.
- Certain files distributed by UNIX System Laboratories would carry a BSD copyright notice.
- UC Berkeley would have to actively assist in legal attempts to challenge UNIX System Laboratories’ right to certain files.
Ultimately, only three files had to be removed from the BSD and 70 had to be modified to show a UNIX System Laboratories copyright notice. One last condition of the settlement was that UNIX System Laboratories would not file new lawsuits against users and distributors of the new version of BSD that would be released in the terms of the settlement. Not long after the lawsuit the group within UC Berekley would be dissolved and development of BSD at Berkeley would halt. Since then the version of BSD we have today as base directly or indirectly on this last version of BSD 4.4. That list includes FreeBSD, NetBSD, OpenBSD, and DragonFly BSD.
But, little did all of these computer scientists and large organizations know, a student of computer science studying at the University of Helsinki would soon be disappointed with all of them and soon make a new kernel that would put all of their hard-fought work in jeopardy.
If you enjoyed this look back in time, let us know on LinkedIn. I would be especially delighted if you dropped by our Discord and gave us a shout or put something in the Show Feedback channel. These types of stories take time to write and any feedback would be all the payment I need to keep going.