Despite the fact that over 90% of the cloud’s workloads are run today, Unix (and Linux with it) had a humble beginning. Jim Hall discusses how Unix from Bell Labs in the 1970s became the backbone of many modern operating systems.
The origin of Unix
During the early computers, users interacted with the computer in various Byzantine ways. The original ENIAC did not even have a “programming interface”; as we think of such things today; instead, programmers connected separate “functional units” together using plugs and wires. As computers became more practical, they became a platform for batch operations, for example via stacks of punched data cards.
Later, more “modern” systems such as the mainframe, system management remained complex. Creating a file is required that specifies how much disk space to allocate plus other attributes. Operators typically interacted with the typewriter-like paper terminal device system. And in the early days, people expected to work with computers.
In the mid to late 1960s, MIT, Bell Labs and GE collaborated on a new system called MULTICS, Multiplexed Information and Computing Service. MULTICS would be a revolution in computers. But with its development, MULTICS also became increasingly complex. Frustrated with the project, Bell Labs pulled out and left others to later take the project forward, albeit very late.
Meanwhile, Ken Thompson returned from MULTICS to Bell Labs to work on other projects. An effort involved a particularly fast hard drive connected to a DEC PDP-7 minicomputer. Thompson wanted to optimize the throughput of this device – and in addition to any storage device. So he started working on a turntable.
As he handled this project, Thompson realized that his test project was on its way into the operating system. For the next three weeks while his wife was on vacation to visit her parents, Thompson filled in the missing pieces and added an exec call interface, an editor and editor, and a shell. And from the very beginning, Unix was born.
During the entire development at Bell Labs, there was no “master design” that defined what Unix would do or become. Instead, Unix grew organically as different users required new features.
One of my favorite stories from early Unix is how the Unix researchers managed to buy a new computer system to continue their work and at the same time created a new Unix command. The patent department planned to purchase a new dedicated computer system for writing patent applications on behalf of Bell Labs. The Unix team suggested that the patent department buy a new DEC PDP-11 minicomputer and the Unix team would put Unix on it and write custom software to help the patent department write patent applications. The new software for writing patents? A new implementation of the Roff document formatting system, in itself a derivation of a previous CTSS program called RUNOFF. Today, “New Roff” or
nroff, is an important part of Unix.
The Unix commands were given very short names. The
mv, and other common Unix commands were so short because the early Model 33 telecommunications terminals used at Bell Labs required significant effort to type each letter. It was easier to write
rm than a more descriptive command name such as
One of Unix’s defining features, the “tube”, which allowed a command to send output to another command for further processing, was also added on behalf of another Bell Labs researcher, Douglas McIlroy. Until then, commands acted on individual files at a time. But with tubes, you can string together several commands to create more interesting results. For example
ls the command lists the files in a directory and
wc the command counts the lines for the entry. If you connect the two commands as
ls|wc , you get the number of files in a directory.
Other commands were also added because someone asked for them. Thompson wrote
grep command based on a suggestion from McIlroy that Unix should have a tool for finding text in files. Thompson reused code from Unix
ed editor to create a tool to perform a “global regular expression print” of any text that matches the user’s common expression. This command for “global regular expression” is simply called
grep, now a standard Unix command.
Unix continued to grow, mostly as research and as a platform for projects within Bell Labs until the mid-1980s. Around that time, a lot of different vendors began selling their own versions of Unix, including Hewlett Packard’s HP-UX, IBM’s AIX, Microsoft’s Xenix, Sun’s SunOS (later renamed Solaris), among others. In 1983, Richard Stallman started a new project to create a free software version of Unix, called GNU (a recursive acronym, meaning “GNU is not Unix”).
Each distribution of Unix was a little different and incompatible with each other. Some are descended from the original AT&T Bell Labs Unix, such as HP-UX and AIX. Other versions of Unix are derived from a popular university variant from the University of California at Berkeley, called BSD for “Berkeley Software Distribution.” Many of the commands were the same or similar between the different Unix versions, but the details of how to handle the system usually differed greatly. An important difference was how Unix started itself: AT & T “System V” Unix uses run levels controlled by a central
/etc/inittab file, while BSD Unix starts everything using run control scripts that start with
Other Unix systems came and went during the 1980s and 1990s. Steve Jobs, after being fired as Apple’s CEO in 1985, founded NeXT, which produced its own variant of Unix, derived from BSD. NeXT brought several innovations to Unix, including a micro-core based on Mach. NeXT’s graphical desktop, NeXTSTEP, added other new ideas, such as Display PostScript for creating on-screen graphics, a “dock” of available and running applications, and an object-oriented application layer with toolkits.
In 1991, a Finnish student named Linus Torvalds began working on a project that later became the Linux kernel. On August 25, 1991, Torvalds published a short message to a Usenet discussion group about his hobby project and invited others to contribute to it. Torvalds released Linux under the GNU General Public License, which meant that anyone could modify Linux to fix bugs or add new features. This “open source” or “free software” model quickly drove new Linux development.
Communities appeared around Linux, ported GNU tools, and other Unix commands to run on Linux. In 1992, developers ported the X Window System, giving Linux its first graphical user interface. The result is what most people think of when we say “Linux” Linux is actually just the core that drives everything.
While proprietary Unix systems still exist, most Unix systems are Linux. At least on web servers, Linux dominates. Linux is also common for many workloads for businesses, including application servers and database servers. It is difficult to calculate exactly how many Linux servers run things, but many estimates suggest that Linux runs more than two-thirds of web servers and other Internet infrastructure. Microsoft also supports Linux; The Azure platform runs Linux, as does the Windows Subsystem for Linux on Windows computers.
On the desktop, Linux never gained a significant foothold. An ongoing gag in the Linux community is “Next year it will be Year for Linux Desktop. “But Windows rules at the top of the desktop. However, if you’re looking for Unix on your desktop, you might want to consider Apple’s macOS. In 1996, as part of Steve Jobs’ return to Apple as CEO, Apple bought NeXT and used NeXT as the basis for next-generation operating systems on new Macs. MacOS is truly Unix under the hood; open a terminal window and you can find a Unix shell using the standard Unix tools. In fact, macOS is an official Unix, recognized by Open Group.
Where is Unix heading next? I’m not sure if “Unix” is the right label anymore. At a time when Linux systems are much more than Unix servers, we may have passed the point where “Unix” is very important. It is no longer about “Unix as a platform” but about “Linux as a platform.” And just as Unix grew beyond its original design and added new features where needed, Linux continues to evolve to meet new needs. At least for the foreseeable future, it’s about “Linux” not “Unix.”