Butler W. Lampson
Systems Research Center
Digital Equipment Corporation
A substantial computing system based on the Alto  was developed at the Xerox Palo Alto Research Center between 1973 and 1978, and was considerably extended between 1978 and 1983. The hardware base for this system is simple and uniform, if somewhat unconventional. The software, which gives the system its visible form and knits together its many parts, is by contrast complex, variegated, even ramified. It is convenient to call the whole complex of hardware and software “the Alto system”. This paper describes the major software components of the Alto system. It also tries to explain why the system came out as it did, by tracing the ideas that influenced it, the way these ideas evolved into the concept of personal distributed computing, and the nature of the organization that built the Alto. A companion paper by Chuck Thacker  describes the hardware.
But a man’s reach should exceed his grasp, or what’s a heaven for?
The Alto system grew from a vision of the possibilities inherent in computing: that computers can be used as tools to help people think and communicate . This vision began with Licklider’s dream of man-computer symbiosis . When he became head of the Information Processing Techniques Office at ARPA, Licklider pursued the dream by funding the development of computer time-sharing. His successors, Ivan Sutherland, Robert Taylor, and Larry Roberts, continued this work throughout the 1960s and extended it to computer networks. Taylor went on to manage the laboratory in which most of the Alto system was built, and people who worked on these ARPA projects formed its core. Their collective experience of time-sharing and networks became a major influence on the Alto design.
Another important influence, also funded by ARPA, was Doug Engelbart. He built a revolutionary system called NLS, a prototype of the electronic office. In NLS all the written material handled by a group of people is held in the computer and instantly accessible on a display that looks something like an ordinary sheet of paper. He demonstrated this system at the 1968 Fall Joint Computer Conference in San Francisco [12,13]. NLS was too expensive to be practical then, but it made a profound impression on many of the people who later developed the Alto.
Yet another ARPA project that had a strong influence on the Alto was Alan Kay’s Flex machine, also called the Reactive Engine . Kay was pursuing a different path to Licklider’s man-computer symbiosis: the computer’s ability to simulate or model any system, any possible world, whose behavior can be precisely defined. And he wanted his machine to be small, cheap, and easy for nonprofessionals to use. Like Engelbart, he attached great importance to a high-quality, rapidly changing display. He later coined the name “Dynabook” for the tool he envisioned, to capture its dynamic quality, its ubiquity, and its comfortable fit with people .
The needs of the Xerox Corporation also influenced the Alto, since Xerox provided the money that paid for it. In 1970 Xerox started a research center in Palo Alto called PARC to develop the “architecture of information” and establish the technical foundation for electronic office systems that could become products in the 1980s. It seemed likely that copiers would no longer be a high-growth business by that time, and that electronics would begin to have a major effect on office systems, the firm’s major business. Xerox was a large and prosperous company with a strong commitment to basic research and a clear need for new technology in this area. To the computer people at PARC, this looked like a favorable environment in which to take the next step toward making computers into effective tools for thinking.
The electronic office and the Dynabook, then, were the two threads that led to the Alto system. The idea of the electronic office is to do all the work of an office using electronic media:
storing and retrieving it,
communicating it to others, and
The idea of the Dynabook is to make the computer a personal and dynamic medium for handling information, which can model the world and make the model visible.
Of course the Alto system is not an electronic office, or a Dynabook; these were ideals to draw us on, not milestones to be achieved (or millstones either). In the course of developing the Alto we evolved from these ideals to a new style of computing, which is the preferred style in the 1980s just as time-sharing was the preferred style of the 1970s; witness the conference for which this paper was prepared. For this style there is no generally accepted name, but we shall call it “personal distributed computing”. Why these words?
The Alto system is personal because it is under the control of a person and serves his needs. Its performance is predictable. It is reliable and available. It is not too hard to use.
And it is fast enough. In 1975 it was hard for people to believe that an entire computer is required to meet the needs of one person. The prevailing attitude was that machines are fast and people are slow; hence the merits of time-sharing, which allows one fast machine to serve many of the slow people. And indeed time-sharing, with response times measured in seconds, is an advance over a system that responds in hours. But this relationship holds only when the people are required to play on the machine’s terms, seeing information presented slowly and inconveniently, with only the clumsiest control over its form or content. When the machine is required to play the game on the human’s terms, presenting a pageful of attractively (or even legibly) formatted text, graphs, or pictures in the fraction of a second in which the human can pick out a significant pattern, it is the other way around: People are fast, and machines are slow. Indeed, it is beyond the current state of the art for a machine to keep up with a person. But the Alto system is a step in this direction.
So a personal system should present and accept information in a form convenient for a person. People are accustomed to dealing with ink on paper; the computer should simulate this as well as possible. It should also produce and accept voice and other sounds. Of these requirements, we judged most important the ability for the machine to present images, and for its user to point at places in the image. The Alto can do this quite well for a single 8.5" x 11" sheet of paper with black ink; it puts no restrictions on the form of the images. It cannot read images, nor can it handle sound; other people’s experience suggests that these abilities, while valuable, are much less important.
The Alto system is distributed because everything in the real world is distributed, unless it is quite small. Also, it is implicit in our goals that the computer is quintessentially a communication device. If it is also to be personal, then it must be part of a distributed system, exchanging information with other personal computers. Finally, many things need to be shared, not just information but expensive physical objects like printers and tape drives.
Lastly, the Alto system is a computing system, adaptable by programming to a wide and unpredictable variety of tasks. It is big and fast enough that fitting the programs into the machine is not too hard (though the Alto’s address space and memory size limitations were its most serious deficiency). And it’s possible to program at every level from the microcode to the user of an application. It is interesting, though, that user programming plays a much smaller role in the Alto system than in Unix  or EMACS . Users interact with the system, nearly to the exclusion of programming it. In retrospect it seems that we adopted this style because interacting with the Alto was so new and enthralling, and that we went too far in excluding systematic programming facilities like the Unix shell or M-Lisp in EMACS. The same mistake was made in early time-sharing systems such as CTSS  and the SDS 940 , whose builders were enthralled by a cruder kind of interaction, so we should have known better.