As I’ve discussed in a previous post, when I assembled a team to build a time-sharing system the project was criticized because the MULTICS project, which had been started a couple of years earlier, was going to be done before my project could be completed. A year later, with my time-sharing system built and in operation, I transferred to the MULTICS project which was still a year or more from completion.
By the time I transferred to research it was evident to most of us working on MULTICS that the system, when it was finished, would be disappointing. It was too complex and too slow. It suffered from second system syndrome: when people set out to build an “improved” version of something they have already built once, the result is often too complex. The effort to “do it right” frequently results in doing it wrong.
The MULTICS effort was led by M.I.T. where the groundbreaking CTSS time-sharing system had been built. The other two participants, Bell Labs and General Electric (GE) had both built several operating systems. So all participants thought they knew how to build a time-sharing system and were determined to make MULTICS the ultimate system. As a result they designed something that had every feature they could think of.
One example of this overkill is the computer used for MULTICS. The time-sharing system my team and I built used the GE 635 computer. This was a good, modern machine. However, for the MULTICS project GE designed the GE 645, which was a 635 computer with the addition of a large, programmable input/output computer designed to handle the terminals connected to MULTICS. This was an early example of a multi-processor machine and, in my opinion, was an unnecessary complication that probably added significantly to the cost.
Another bad decision was to contract with an outside firm to build a compiler for the PL/1 language. The idea was to build MULTICS in PL/1, but the compiler, like MULTICS itself, was too big and too expensive and too late. Near the end of the contract I was asked to supervise it and, after spending a summer overseeing the effort, I recommended that the project be killed, which it was. Later GE built a PL/1 compiler for the GE 645 computer. MULTICS itself was built in a subset of the PL/1 language using a small compiler built at M.I.T. and Bell Labs.
Although many of the ideas in MULTICS were excellent, it tried to do too much. About a year after I joined the project, Bell Labs abandoned it. GE and MIT finally finished it and GE offered MULTICS as a product, but it never gained any foothold. Only a few systems were sold. So far as I know Bell Labs never installed one for production use. The GE 635 computer at Bell Labs’ Whippany location, intended for MULTICS, was used for five years to run the time-sharing system that I and my team built.
Ken Thompson, a member of the MULTICS team and the most brilliant software designer I have ever met, believed that it was possible to build a small, efficient time-sharing system that could run on smaller machines such as the DEC PDP-11.
Ken, Dennis Ritchie, and I were the youngest members of the computing science research department (headed by Doug McIlroy). Ken and Dennis were a team before I joined the department. For my first job in research, building a BCPL compiler, I recruited Dennis to build the supporting routines. So, when Ken decided he wanted to build a small, efficient time-sharing system, Dennis and I were eager to join him in this effort. Thus UNIX was born. In my next blog post I’ll talk about our work designing UNIX.
– Rudd Canaday (ruddcanaday.com)