Have you heard of Xerox PARC (Palo Alto Research Center)? This is the legendary lab where much of today's popular computer system concepts were first created. PARC invented the mouse, the graphical user interface, the Ethernet local-area network -- prototypes of all the parts of the personal computers we use today. Apple's Macintosh user interface was famously based on PARC's Alto and Star systems.
Butler Lampson, the author of this paper, was one of the main designers of PARC's computer systems, including an operating system ("Alto"), networking subsystems, application programs ("Bravo", a word processor; "Star", an office suite; "Grapevine", an email program), and more. In this paper, he tries to communicate his accumulated system building wisdom (as of 1983). In a refreshingly undogmatic way, he presents that wisdom in the form of hints. He doesn't tell you what you must do; instead, he gives some techniques that have worked for him in the past. And he doesn't claim that those techniques always work. He freely admits that they can go wrong, and describes how.
Many of the concrete examples in this paper seem a little dated now. Many of the hints themselves, however, remain as relevant as ever. Even the ones that are not relevant -- or that seem misguided -- are worth pondering: why aren't they relevant any more?
- Pick a computer system described earlier in the term -- either in class, in the book, in the labs, or in another one-page reading report -- and evaluate it with respect to one or more of the hints. Does the system follow the hints? Did the hints help it achieve good performance or robustness? Were there hints that should have been applied, but were not? I'm looking for an insightful response; something like "Flash had good performance because it did one thing well" would be inadequate unless it was surprisingly well explained.
- Pick your least favorite hint, and say why you don't agree with it.