From Unix to Linux: Key Trends in the Evolution of Operating Systems (Part 2)

The Unix operating system is somewhat like the cuckoo, laying its eggs in other nests. Although Bell Labs invented the transistor, it didn't build its own computers. As we saw in the previous article in this series, Unix ran first on Digital Equipment Corporation computers, throughout the 1970s. But Digital had its own operating systems, as did IBM and every other manufacturer. Unix began as a quirky tool for researchers, seeping out only minimally into commercial use. We'll see in this article how Unix came to be the dominant operating system, with an indelible impact on computing and the Internet. The focus of this article will be the Berkeley variant, BSD.

You can also consult the timeline of events at the end of the previous article, which provides an overview of milestones discussed in the series.

BSD develops the Internet

This leg of our operating system journey starts on the opposite coast from Bell Labs, where computer science professors at the University of California, Berkeley decided to try Unix on their systems as early as 1974. They and their students found Unix congenial to their research and started enhancing it with all manner of new system calls and new tools. You can get a comprehensive history of BSD in an article by Marshall Kirk McKusick, a key leader of the BSD community over the years. The kind of detail lavished on the topic by McKusick is what I am avoiding in my own series of articles. Instead, I will stick to some big-picture points.

BSD evolved quite gradually, like Darwin's finches, from a collection of small improvements to an entirely new beast. Different students—some of whom became leaders of computing—added new features large and small. One of the larger enhancements was the vi editor, invoked daily by manyUnix users and now GNU/Linux users. Bill Joy, who invented vi during his early work on Berkeley’s Unix system as a student, organized the first release with the name “Berkeley Software Distribution” in 1977. Joy later went on to found the company that allowed Unix to take over large-scale computing, Sun Microsystems. 

Putting Unix to heavy use, especially for networking, the BSD developers found many of its system calls lacking. They added new system calls as well as library calls (which run in user space rather than in the kernel). The link between Bell Labs and Berkeley became bidirectional, as the Unix developers incorporated their favorite system and library calls from BSD.

The networking stack was BSD's most important contribution to computing. We are taught that Bolt Beranek and Newman Inc. (BBN Technologies) created the Internet under contract from the ARPA defense agency (later DARPA). But when the Internet became mainstream, it was running protocol stacks, network services, and tools created by the BSD project.

Take, for instance, the Berkeley Internet Name Daemon (BIND), which carries out the crucial task of finding the IP address associated with a domain name (e.g., FOSSlife.org) and communicating with other daemons (services) across the highly distributed Domain Name System (DNS). For a long time, every system administrator had to learn to administer BIND, and it truly did bind together Internet users everywhere in the world.

Another BSD invention, Sendmail, was equally dominant. This was the service that delivered email to users. To accommodate a huge variety of systems (Internet and non-Internet) while keeping configurations brief in an age of highly restricted memory, Sendmail used a notoriously complex and compressed configuration language, and the classic O'Reilly book on Sendmail came to about 1,200 pages. A popular quip went something like, "To be a real system administrator, you have to configure Sendmail once, but you hope never to do it again."

The BIND syntax was originally somewhat thorny, too. Eventually, the developers adopted a syntax of nested curly braces such as:

zone "fosslife.org" {
 type forward;
};

This syntax was taken from the C language, which was familiar to many system administrators. Web developers will see here an anticipation of JSON (or perhaps an echo, because both syntaxes were developed around 2000). The syntax should be familiar to the users of many other modern tools as well.

The impact of freedom

AT&T, which owned Bell Labs, made a nice income licensing Unix. (Incidentally, the name should officially be capitalized as UNIX, according to the trademark registration.) As we saw in the previous article, the source code came with the system. But Berkeley did something much more radical: it released its own code under a license that allowed users to make changes and do anything they wanted, including selling systems with their changes. The BSD license was one of the first free and open source licenses and is still used by a lot of projects.

According to the McKusick article cited earlier, BSD's popularity seems to stem from the cost-free distribution of the system, more than from any technical superiority over Bell Labs’ Unix. As I mentioned, AT&T had no scruples about folding BSD innovations back into Unix. The C code in BSD now looks dated and sometimes a bit scary, but the tools and operating system were production-ready and popular.

When Digital Equipment Corporation brought out their VAX minicomputers as a replacement for the PDP series, the Berkeley crew grabbed the VAX Unix port from AT&T and built a new version of BSD on it. Mini-computers became a central part of the computing landscape in the late 1970s and early 1980s (before personal computers became commercially available), and BSD's popularity grew along with the VAX. A popular warning was, "All the world is not a VAX." This referred to bad habits that computer science students were picking up because the VAX helpfully did things such as provide them with zeroed-out memory if they failed to initialize the memory explicitly. If programmers relied on finding zeros in uninitialized memory, their programs would go horribly wrong when ported to other systems. This was now a world where programmers expected to move between computer systems, and take their programs with them. That world was created by Unix and BSD.

BSD was also the impetus for the great eruption that brought Unix into the commercial mainstream: the founding of Sun Microsystems. Bill Joy and his colleagues took advantage of the permissive BSD license to sell computers with their enhanced version of BSD, called SunOS. Sun Microsystems’ workstations and mini-computer servers wiped out a generation of other mini-computer companies and started to set the standard for modern computing and networking—all based on SunOS, which meant BSD. 

In part three of this series, we’ll look at further impacts of BSD as well as other milestones in Unix history. 

See also:

Comments