A notorious ‘second-system effect‘ often afflicts
the successors of small experimental prototypes. The urge to add
everything that was left out the first time around all too frequently
leads to huge and overcomplicated design. Less well known, because
less common, is the ‘third-system effect’; sometimes,
after the second system has collapsed of its own weight, there is a
chance to go back to simplicity and get it really right.
The original Unix was a third system. Its grandfather was the
small and simple Compatible Time-Sharing System
(CTSS), either the first
or second timesharing system ever deployed (depending on some
definitional questions we are going to determinedly ignore). Its
father was the pioneering
Multics project, an
attempt to create a feature-packed ‘information utility’
that would gracefully support interactive timesharing of mainframe
computers by large communities of users. Multics, alas, did
collapse of its own weight. But Unix was born from that collapse.
Unix was born in 1969 out of the mind of a computer scientist at
Bell Laboratories, Ken Thompson. Thompson had been a
researcher on the Multics project, an experience which spoiled him for
the primitive batch computing that was the rule almost everywhere
else. But the concept of timesharing was still a novel one in the late
1960s; the first speculations on it had been uttered barely ten years
earlier by computer scientist John McCarthy (also the inventor of the
Lisp language),
the first actual deployment had been in 1962, seven years earlier, and
timesharing operating systems were still experimental and
temperamental beasts.
Computer hardware was at that time more primitive than even
people who were there to see it can now easily recall. The most
powerful machines of the day had less computing power and internal
memory than a typical cellphone of today.[13]
Video display terminals were in their infancy and would not be widely
deployed for another six years. The standard interactive device on
the earliest timesharing systems was the ASR-33 teletype — a
slow, noisy device that printed upper-case-only on big rolls of yellow
paper. The ASR-33 was the natural parent of the Unix tradition of
terse commands and sparse responses.
When Bell Labs withdrew from the Multics research consortium,
Ken Thompson was left with some Multics-inspired ideas about how to
build a file system. He was also left without a machine on which to
play a game he had written called Space Travel, a science-fiction
simulation that involved navigating a rocket through the solar
system. Unix began its life on a scavenged
PDP-7
minicomputer[14] like the one shown in Figure2.1, as a platform for the Space Travel game and a
testbed for Thompson's ideas about operating system design.
The full origin story is told in [Ritchie79] from the point of view of
Thompson's first collaborator, Dennis Ritchie, the man who would
become known as the co-inventor of Unix and the inventor of the
C language.
Dennis Ritchie, Doug McIlroy, and a few colleagues had become used to
interactive computing under
Multics and did not
want to lose that capability. Thompson's PDP-7 operating system
offered them a lifeline.
Ritchie observes: “What we wanted to preserve was not just
a good environment in which to do programming, but a system around
which a fellowship could form. We knew from experience that the
essence of communal computing, as supplied by remote-access,
time-shared machines, is not just to type programs into a terminal
instead of a keypunch, but to encourage close communication”.
The theme of computers being viewed not merely as logic devices but as
the nuclei of communities was in the air; 1969 was also the year the
ARPANET (the direct ancestor of today's Internet) was invented. The theme
of “fellowship” would resonate all through Unix's
subsequenthistory.
Thompson and Ritchie's Space Travel implementation attracted
notice. At first, the PDP-7's software had to be cross-compiled on a
GE mainframe. The utility programs that Thompson and Ritchie wrote to
support hosting game development on the PDP-7 itself became the core
of Unix — though the name did not attach itself until 1970. The
original spelling was “UNICS” (UNiplexed Information
and Computing Service), which Ritchie later described as “a
somewhat treacherous pun on Multics”, which stood for
MULTiplexed Information and Computing
Service.
Even at its earliest stages, PDP-7 Unix bore a strong
resemblance to today's Unixes and provided a rather more
pleasant programming environment than was available anywhere else in
those days of card-fed batch mainframes. Unix was very close to being
the first system under which a programmer could sit down directly at a
machine and compose programs on the fly, exploring possibilities and
testing while composing. All through its lifetime Unix has had a pattern
of growing more capabilities by attracting highly skilled volunteer
efforts from programmers impatient with the limitations of other
operating systems. This pattern was set early, within Bell Labs
itself.
The Unix tradition of lightweight development and informal
methods also began at its beginning. Where Multics had been a large
project with thousands of pages of technical specifications written
before the hardware arrived, the first running Unix code was
brainstormed by three people and implemented by Ken
Thompson in two
days — on an obsolete machine that had been designed to be a
graphics terminal for a ‘real’ computer.
Unix's first real job, in 1971, was to support what would now be
called word processing for the Bell Labs patent department; the first
Unix application was the ancestor of the
nroff(1)
text formatter. This project justified the purchase of a
PDP-11, a much
more capable minicomputer. Management remained blissfully unaware
that the word-processing system that Thompson and colleagues were
building was incubating an operating system. Operating systems were
not in the Bell Labs plan —
AT&T had joined
the Multics consortium precisely to avoid doing an operating
system on its own. Nevertheless, the completed system was a rousing
success. It established Unix as a permanent and valued part of the
computing ecology at Bell Labs, and began another theme in Unix's
history — a close association with document-formatting,
typesetting, and communications tools. The 1972 manual claimed 10
installations.
Later, Doug McIlroy would write of this period [McIlroy91]: “Peer pressure and simple pride in
workmanship caused gobs of code to be rewritten or discarded as better
or more basic ideas emerged. Professional rivalry and protection of
turf were practically unknown: so many good things were happening that
nobody needed to be proprietary about innovations”. But it
would take another quarter century for all the implications of that
observation to come home.