The history of Unix is covered in several books. I have read A Quarter Century of Unix by Peter Salus; he is reasonably accurate about the history that I know personally (I sent him a few corrections). I am going to stick to my first-hand knowledge in this note.
When Bell Telephone Laboratories (BTL) joined with MIT MIT Project MAC and General Electric's computer department in 1964 to create the Multics project, BTL contributed some of the finest programmers in the world to the team. I first met Ken Thompson because he had written a slick editor for CTSS called QED. It was descended from QED on the SDS-940, but was quite different because Ken had added regular expressions to it, and made many other changes. (Ken had published a paper on compiling regular expressions into machine code just before joining the Multics project.) Ken worked on the Multics I/O switch design. Dennis Ritchie and Rudd Canaday were BCPL jocks. Joe Ossanna worked on the I/O system design and wrote one of the original six Multics papers; Bob Morris, Doug McIlroy, Dolores Leagus, Dave Farber, and Jim Gimpel worked on EPL, Stu Feldman worked on the I/O switch, Peter Neumann managed the team and worked on file system design, Brian Kernighan worked on the support tools.
The late Prof. Mike Mahoney of Princeton interviewed several Bell Labs Multics participants; their interviews are available in the Charles Babbage Institute collection. One of these is "Unix: an Oral History" by Gordon M. Brown. In this article, he describes the BTL impatience with Multics progress in 1967-69:
Sam Morgan, director of Computing Science Research at Bell Labs during this period, expressed his own concerns that Multics research was going very slowly and wasting effort, saying: "It was becoming clear to people that Multics was an attempt to climb too many trees at once. The development was moving more slowly than had been expected and users were sighing with varying degrees of pungency."
Consequently, Bell Labs pulled out of the project in March of 1969, leaving GE and MIT to salvage what they could of the system. According to Berk Tague, it was [VP for Research] Bill Baker who made the decision to pull the plug, saying "Like Vietnam, he [Bill Baker] declared victory and got out of Multics." McIlroy echoed these thoughts, mentioning that Bell Labs "had a million dollars worth of equipment in the attic that was sitting there being played with by three people. It became clear that we were a drag on the computer center's budget." This sudden loss of the Multics system was to have important consequences on the direction of computing at Bell Labs and on the creation of Unix.
Although Bell Labs had dropped out of the Multics project in April 1969, those of us in Cambridge kept in touch with individual folks at BTL, and so we knew that Ken and Dennis were working on a project of their own. We even knew that it had a joke name, Unix, coined by Brian Kernighan, that was a reference to Multics. ("One of whatever Multics was many of" or "Multics without balls.")
Rudd Canaday wrote interesting blog entries describing his contributions to Unix, especially the file system.
There had been a highly regarded ACM SIGOPS sponsored conference on operating systems at Gatlinburg, Tennessee in 1971. The second of these conferences was held in Elmsford, NY in 1973, and Ken and Dennis gave a talk there, presenting Unix. Several of us Multicians went to the conference, and sat with the Bell Labs ex-Multicians and applauded the paper, which was and remains one of the best and clearest pieces of writing in the computer field. There were some other great papers at that conference, but as I remember, the Unix paper won the best paper award.
I was working for MIT in those days, and one thing I did was to organize an MIT PDP-11 users' group and encourage them to look into Unix. The idea of a free, non-vendor-supported operating system was new to them. I invited Dennis Ritchie to come up and talk to them.
We went to lunch afterward, and I remarked to Dennis that easily half the code I was writing in Multics was error recovery code. He said, "We left all that stuff out. If there's an error, we have this routine called panic, and when it is called, the machine crashes, and you holler down the hall, 'Hey, reboot it.'"
In 1978, Honeywell chose me to give a speech at a conference in Paris, celebrating the 20th anniversary of INRIA. My talk was titled "An Example of Industry-University Cooperation: Multics." The conference was in the Paris UNESCO building, attended by lots of French scientists. There were little earphones for simultaneous translation at every seat. John Shoch from Xerox PARC spoke before me, and talked about some of the neat things they were doing at Xerox with Unix systems.
After I gave my speech, there were questions from the audience. Someone asked a question in French, which was translated to me as, roughly, "You say that Multics has only 25 sites. There are already 1500 Unix sites. How does that make you feel?"
I said, "I feel proud. It was a privilege to work with Ken Thompson and Dennis Ritchie on Multics, and I am glad to see Unix having the success it deserves." I said more, about the difference in goals of the systems, and about how much easier it was to do things the second time.
Afterward the local Multicians told me my questioner was one of an anti-Multics faction in Bull. It occurs to me now that he was probably more likely pro-Unix than anti-Multics, but in those days there was a lot of fear and with-us-or-against-us thinking, and Multics was fighting for its life as usual. I don't think my answer satisfied either faction.
When I finally got a chance to use Unix in 1987, on an Apollo workstation at Tandem, I felt instantly at home. The ls command, control arguments, shell scripts... lots of things felt so similar to Multics that I could go right to work, consulting man pages occasionally to find out what the Unix name of something was.
There were technical borrowings in both directions. (This was before look-and-feel lawsuits and similar foolishness.) Unix has many features that Multics and CTSS had first, and many are obvious translations of Multics features.
The idea of having the command processing shell be an ordinary slave program came from the Multics design, and a predecessor program on CTSS by Louis Pouzin called RUNCOM, the source of the ".rc" suffix on some Unix configuration files. The first time I remember the name "shell" for this function was in a Multics design document by Doug Eastwood (of BTL). Commands that return a value into the command line were called "evaluated commands" in the original Multics shell, which used square brackets where Unix uses backticks.
The Unix roff, troff, and nroff commands are direct descendants of Jerry Saltzer's CTSS RUNOFF command, used for Multics documentation. Bob Morris and Doug McIlroy ported that program from MAD to BCPL and then got the BCPL runoff up on Multics when the IBM 7094 was going away; that code was the ancestor of the machine language roff that Ken and Dennis wrote for the fledgling Unix.
There was some influence in the other direction in the 70s and 80s. For example, Multics "master directories" work very much like Unix mount points.
For more information, see
- Dennis Ritchie's "The evolution of the UNIX time-sharing system," Bell System Technical Journal 63, 8, Oct 1984.
- The IEEE Computer interview with Ken Thompson.
03/21/93, updated 01/25/95, 02/05/95, 01/23/15, 04/29/16