We caught up with the pioneers who brought us the Unix operating system and asked them to share some memories of the early days of Unix development.
Unix co-developer Ken Thompson worked at Bell Labs from 1966 until he retired in December 2000. He recalls this prank:
“The Unix room was on the sixth floor at one end of Bell Labs. The cafeteria was on the ground floor about a quarter of a mile away. There were dozens of ways to walk to lunch. You could pick one of four or five staircases and any segment of the six floors. One day, we were walking through the fourth floor, which was being renovated. It looked like a bombed out city. The walls and ceilings were open with pipes and wires hanging everywhere. I noticed that there were, what looked like, speakers throughout the ceiling. I had always wanted to tap into the Bell Labs PA system and thought this was a perfect chance.”
[ALSO: The last days of Unix]
“At night, I examined the speakers more closely and discovered that they were not really speakers, but white noise transducers. I chased the wires back to a panel that contained the generator and amplifier. Without anything specific on my mind, I borrowed the keys to the panel, duplicated them and put them back. Months later, after the construction was all done, I discovered the keys in my desk and decided to investigate. The generator was active and the amplifier volume was set to 1. In the office area, I could hear the noise, but only because I knew it was there.”
“OK, I started turning the volume up by one notch every week. I would walk through the office area at least once a week on the way to the cafeteria. By the time that the volume was up to 8, still no one had noticed it but, to me, it sounded like Niagara. Everyone in the offices was screaming at each other. At that point, I couldn't help but laugh. On questioning, I told my lunch buddies what was going on. The word spread like a virus and, the very next day, the panel was open and the amplifier was removed. I still have a mental image of two people sitting across a table from each other yelling at each other in a normal conversation.”
Doug McIlroy remembers Unix co-developer Dennis Ritchie, who died in 2011.
“Ken Thompson was undoubtedly the original moving spirit for Unix, but Dennis Ritchie was in on it from the start. And it is Dennis we have to thank for the C language. C made Unix easy to modify and, eventually, easy to install on new hardware. With hindsight, one might view C as a distillation of previous practice. Not so. Dennis discussed at length the puzzle of how to fully exploit byte-addressed machines. He finally came up with a beautiful way to reconcile address arithmetic with indexing — one of those inventions that is so right that once you see it, you think you always knew it. The rightness of C is further attested by the fact that while Unix spread to all kinds of computers, C and its descendents spread even further. C became the language of choice for implementing all kinds of system software, both in and outside of Unix shops. C even influenced hardware architecture: proposed instruction sets came to be evaluated partly on the basis of how well they could be exploited by a C compiler.
“Ritchie and Thompson made an amazing team; and they played Unix and C like a fine instrument. They sometimes divided up work almost on a subroutine-by-subroutine basis with such rapport that it almost seemed like the work of a single person. In fact, as Dennis has recounted, they once got their signals crossed and both wrote the same subroutine. The two versions did not merely compute the same result; they did it with identical source code. Their output was prodigious. Once I counted how much production code they had written in the preceding year — 100,000 lines. Prodigious didn’t mean slapdash. Ken and Dennis have unerring design sense. They write code that works, code that can be read, code that can evolve.”
Peter Neumann remembers Joe Ossanna, who died in 1977.
“Joe and Stan Dunten at MIT were the two people with the deepest experience on input-output system issues. They became the ‘go-to’ folks at Bell Labs and MIT for the Multics I/O subsystem, in addition to what it had to do in order to fit in with the rest of Multics.
“Joe had an amazing grasp of everything in that area. He was invaluable to the Multics effort. He was also a warm and thoughtful person. I miss him very much.”
Douglas McIlroy shares vivid memories from the Unix lab
“Personal high for me was the introduction of pipes — a story that's often been told. I had been smitten with stream processing back in 1964 when Conway published the idea of co-routines. I had lobbied for direct process-to-process IO for some time, but only when I came up with the catchy name, ‘pipe’ and suggested a workable shell syntax did Ken Thompson vow to do it. It happened overnight and, the next day, we had a wonderful orgy of ‘look at this one.’ Within a week, even our secretaries were using pipes as if the feature had always been there.
“The birth of C, which I think can fairly be called the baseline workhorse language even today — it is the implementation language for myriad other languages and systems.
“I don't know the counts of Unix and Linux servers. I do know that my heart sinks whenever I look under the hood in Linux. It is has been so overfed by loving hands. Over 240 system calls! Gigabytes of source! AC compiler with a 250-page user manual (not counting the language definition)! A simple page turner, ‘less,’ has over 40 options and 60 commands! It's proof that open-source can breed monsters just like the commercial pros. Miraculously, though, this monster works.”
Peter Neumann explains the etymology of Unix.
“Don't fall for the story in Peter Salus's book that I coined the name Unics. I don't think I ever claimed that, although I certainly contributed to the pun on the original version of Ken's system being a castrated one-user Multics (Eunuchs). Brian Kernighan may well have been the initiator of ‘unics.’ The Bell Labs PR folks eventually wanted it changed to Unix, probably to avoid the pun.”
“I remember Ken coming in for lunch one day (he tended to program into the wee hours) with a thousand-line operating system kernel that he had written to run on a PDP-7, which Max Matthews had that no one was using. I suggested that it was only a one-user system, so the next morning, Ken came in with another thousand lines and it had become a multiuser system. The rest is history...”
Rudd Canaday shares fond memories, plus why he left.
“Because I had children, I tended to work normal hours. With no such restriction, both Ken and Dennis usually would come to work in the early afternoon and work well into the night. Early in the design of Unix, Ken, Dennis and I fell into the habit of having lunch every day in the service dining room, which closed, as I remember, at 1:30 pm. Most days around noon, I would have to call Ken and Dennis at home to remind them to come to work before the dining room closed. We would go for lunch just before they closed and work at our lunch table well into the afternoon. The staff got used to cleaning up around us and then leaving us there to work.
“One day Ken, Dennis, and I were in my office using the blackboard to design the Unix file system. Bell Labs had just inaugurated a new telephone dictation system available 24/7, which I had wanted to try. So, when we finished for the day, I picked up the phone and dictated notes on our design. The next day the notes arrived on my desk. The notes were useful even though the typist's attempts to make sense of the technical jargon were hilarious. After using the notes to continue our design work, I threw them away. I would love to have those notes now. Several years after I left the Unix project, a patent application for the Unix file system by me, Ken, and Dennis arrived for my signature. I signed it, but did not keep a copy. I wish I had. Subsequently the patent was denied because, I was told, the U.S. Patent Office, at that time, was unsure about and uncomfortable with software patents.
“I left because Ken, Dennis, and I had gone about as far as we could with Unix without a machine. But, when we asked for funds to buy a machine, we were told that BTL, which had just abandoned MULTICS, was not willing to fund another operating system. I believed management and left the Unix project to start a new research group (which built the back-end database machine). I've often said that was the last time I believed what my management told me. Ken and Dennis went to (I was told) the patent department and promised a system that would do their paperwork if they supplied a machine. That's why, I believe, the early Unix had so many text processing tools (nroff, troff, etc.).”
Brian Kernighan chats about pipes and pipelines:
“It's hard to imagine just how far Unix systems have come in the past 40 years. A bit of searching reminded me of the wonderful remark by Dennis Ritchie that ‘the number of Unix installations has grown to 10, with more expected,’ which I think dates from about 1972, probably around the time of the third or fourth edition. I do recall one occasion, a few years after that, when someone brought in a classified advertisement from the New York Times (remember when papers still had classifieds?) that was seeking Unix programmers; the consensus in the Unix room at Bell Labs was that in some way Unix had made the big leagues; it had ‘arrived.’”
“In his 1979 paper on The Evolution of Unix, Dennis Ritchie said, ‘One of the comforting things about old memories is their tendency to take on a rosy glow. The memory fixes on what was good and what lasted, and on the joy of helping to create the improvements that made life better.’ I cherish a lot of memories of those good old days.”
“The Unix room was, in some ways, ahead of the curve in providing a large open space with tables where people could work or just hang out. It was often noisy, but it made for very effective communication. Everyone had a private office, but everyone spent some time in the communal space, perhaps just for coffee, or to ask a question about how something worked. And when the system was small and the group was compact, it was also the place to hear about new ideas and new programs.”
“I remember one day where the new ‘pipe’ feature had just been implemented in the shell. What a neat idea: take the output of one program and make it the input of another program. There was a frenzy of activity as people modified programs, so that they would work in pipelines, not just from file arguments. It probably only lasted a day (in my rosy memory) but, in some ways, it changed the world forever.”
“Unix also was created at a time when we had keyboard input and minimal graphics capabilities. So the text processing software lost out to WYSIWYG methods. The result is that it's easier for me to create a table when writing it by hand; but it's more difficult to generate a table out of a software script. This suits the industry — when success is measured by counting eyeballs, the industry likes programs that require the user to be personally present and paying attention. But it raises the effort required to link up multiple applications, which was a great strength of the ‘pipe’ mechanism on Unix.”
Bill Joy reveals the beginnings of Berkeley Unix: “More than 30 years ago, I had changed Unix to run with virtual memory on the VAX. I was at Bell Labs in Murray Hill, N.J., hanging out with the original Unix research group. I was talking with Steve Bourne who, like me, had written a new ‘shell’ (command line interpreter) for Unix.”
“He mentioned another machine, in a different department, where they would love to have my new-fangled Unix. One night, we stayed up all night and changed the OS — when people came in the next morning, they had Berkeley Unix, rather than the internal (non-research) Bell Labs version they were previously running. It was quite an audacious change to make with no wide notice or permission requested (and; therefore, denied).”
“But it all went quite smoothly; the new system was more reliable and faster. It was a ‘coals to Newcastle’ moment and, for me, marked the arrival of Berkeley Unix as a real thing. Berkeley Unix, as it is well known, brought a quality implementation of the TCP/IP Internet protocols. It was really the first high-performance one and with, what is now called, ‘software defined networking.’"
“I have never understood the focus on hardware black boxes for networking. To me, software defined networking was the way to go. Perhaps that's why Sun and Cisco were separate companies, even though both came out of Stanford and on similar hardware.”
David Korn tells the cookie story, plus ‘a true Woody Allen moment’:
“When I joined Bell Telephone Laboratories in 1976, my supervisor was Mike Pilla, who was one of the first Unix adopters for an internal operations support system. Mike liked to play practical jokes on his people; often as a learning experience. One day, Mike was trying to resolve a Unix problem, so he called Ken Thompson, the co-inventor of Unix. While he was on the phone in front of his terminal deep in conversation, one of the members of the group named John, used the ‘write’ command to write on his terminal, ‘Panic; no cookie.’ Mike then reported to Ken, ‘Ken, I just got a panic, no cookie, what does this mean?’ After a couple of minutes back and forth between Mike and Ken, John came into his room with a box of cookies and reported what he had done.”
“Years later, in the mid 90s, I started on the UWIN (Unix for Windows) project. In the late 90s, there was a workshop in Seattle aimed at Unix users with an interest in Windows NT, which I attended. Since the audience was primarily Unix or Linux users, I knew many of the people. One talk that was presented by a speaker from Microsoft was an announcement and description of their Unix on Windows product.”
“At one point, the speaker stated that their product comes with ksh, the KornShell. I knew that they were using MKS toolkit version of ksh, which is not completely compatible with the real ksh, and I raised my hand to point this out. He insisted that it, indeed, was the real ksh, and when I started going through the incompatibilities, he started arguing with me. After a few minutes and a few back and forth, someone in the audience blurted out, ‘Don’t you know who you are talking to?’ The speaker turned red faced and the audience burst into laughter. It was a true Woody Allen moment from Annie Hall.”
Andrew Tanenbaum tells how one comment changed everything:
“When Unix V6 was released, it became very popular at universities, and people began teaching it in courses. AT&T, for some incomprehensible reason, decided that having lots of students learn about Unix was a bad idea, so the V7 license said you couldn't teach it anymore. I needed an example for my operating systems course, so I decided to write a clone of Unix to teach from. This became Minix. But late in the development, it kept crashing, and I couldn't find the bug. It seemed completely random. So I wrote an interpreter for the IBM PC so I could run Minix in a reproducible environment. It ran perfectly on the interpreter, but still crashed on the hardware. (If I’d been smart, I could have turned the interpreter into something more like what is now VMware, but my focus was finding the bug).”
“I was about to abandon the entire Minix project when one of my students mentioned that the Intel 088 gave interrupt 15 when it got too hot. I said there was nothing in the manual about this, but he said he heard this somewhere. So I changed the code to expect interrupt 15 and print out something when it happened. Sure enough, within an hour, I got the message ‘Hi. I am interrupt 15. You will never see this message. Have a nice day.’ As a result of this off-hand comment from my student, Robbert van Renesse, Minix happened and became a phenomenon. One of the early users was Linus Torvalds, who said he bought an IBM PC just to run and study Minix. Eventually, he began modifying it and that led to Linux. Many of the early aspects of Linux were taken directly from Minix (file system, directory layout, etc.).”
“If Robbert had not made that comment, there would have been no Minix and no Linux. If there were no Linux, there would not have been an Android, since that is just a version of Linux. If there were no Android, probably the relative stock prices of Apple and Samsung would be quite different than they are now, since Apple's IOS is not based on Linux, but an earlier version of Unix that goes back to BSD. So, Robbert's casual comment changed the history of the world in a significant way.”
Rick Rashid shares the birth of Mach/Unix
My first USENIX conference was also the coming out event for Mach within the Unix community. It was summer of 1986 in Atlanta and the paper I presented was Mach: A New Kernel Foundation for Unix Development. One of the decisions that I and my graduate students at CMU made early in the development of Mach was to layer Unix on top of it so we could make our OS research accessible to the large community of Unix users. Submitting a paper on our system’s performance and features to the USENIX community was an important first step toward that goal.
Unix and its various versions have changed so much over the years, it is important to remember that, back in 1986, concepts that are accepted today were quite controversial then. Unix on Mach broke ground in a number of areas including machine independent-virtual memory management and support for large-scale multiprocessors including Uniform Memory Access (UMA) architectures, Non-Uniform Memory Access (NUMA) architectures, and No Remote Memory Access (NORMA) architectures.
Probably the most controversial feature of Mach was its support for copy-on-write virtual memory management and the integration of that feature both with Mach’s inter-process communication and Unix’s fork mechanism. As luck, or fate, would have it, the USENIX talk that preceded mine specifically discussed the idea of including copy-on-write in Unix and concluded that it could not be done cost effectively. This lead-in gave me a chance to look like a magician pulling a rabbit out of my hat when I stepped up on stage and showed that, not only could copy-on-write be done cost effectively, but that we, in fact, had done it. That USENIX paper and talk was a turning point both for our system efforts at CMU, at the time, and for me personally. For much of the rest of the conference, people approached me to talk about Mach and its impact on their thinking. Not long later, Steve Jobs and Bud Tribble came to visit me at Carnegie Mellon to talk about using our work on Mach as the basis for NeXTStep. Later, Mach became the basis for OSF/1, Digital Unix, and a number of other commercial Unix versions, and it became the first 64-bit Unix implementation.
Gordon Bell recommends Unix as a standard for compatibility:
“I’m a standards advocate. [I believe that] you either make the standard or follow it. If you fail to make the standard, you get to do it twice.”
“When we designed VAX, Ken Thompson and Dennis Ritchie were the only outside reviewers of the architecture. I was on the Posix board when we put it forward as a standard, working with IEEE. At NSF, when CISE was started in 1986, I pushed our vendors at the supercomputer centers to have all the supercomputers adopt Unix as a way of getting compatibility among all levels of computing including mini-supers etc.”
“It is important to note that the earlier Unixes were all proprietary and controlled by specific vendors with products that were derived from either the Berkeley or ATT Unix. DEC tried to create a single standard, but all the hardware guys wanted control. The big deal was Stallman’s base tools (GNU) that allowed Linus to build Linux at zero cost, which was not controlled by any hardware vendor.”
“Unix was the key enabler that allowed workstation companies to form, most notably Sun.”