(This is a live-blog of Neeran Karnik‘s talk on Butler Lampson, as part of the Turing100 Lecture Series happening at Persistent. Since it is being typed during the talk, please forgive the typos and bad structuring of the article. This article is also very incomplete.)
Butler Lampson has contributions in a wide area of computer science fields. Here is the Turing Award Citation:
For contributions to the development of distributed, personal computing environments and the technology for their implementation: workstations, networks, operating systems, programming systems, displays, security and document publishing.
The number of different areas of computer science touched there is breathtaking.
Systems Built
Here is just a sampling of some of the work of Lampson that resulted in entire areas of computer hardware and software:
- The first personal computer:
- The first personal computer in the world, the Xerox Alto, was conceived in a 1972 memo written by Lampson.
- Important contributions of the Alto:
- First “personal” computer
- First computer that used a desktop metaphor
- First computer to use a mouse-driven graphical interface
- Lampson later work on the follow-up workstation designs Dorado and Wildflower (research products) which later resulted in a successful commercial product (Star).
- The Bravo Editor
- Lampson designed the first WYSIWYG editor in the world in 1974. This shipped with the Xerox Alto. This work can ultimately be seen to have led to the development of Microsoft Word
- The Xerox 9700 and Dover Laser Printers
- The first laser printer was designed in 1969 at Xerox Parc and Lampson worked on the electronic design of it.
- The SDS 940 Time-sharing system
- The first general-purpose time-sharing system.
And those were just the systems he built.
What about more fundamental contributions to computer science? Here is a list:
- The two-phase commit protocol.
- This is the fundamental building block of all transactional processing in databases that are spread out across machines and/or geographies.
- The CAL time-sharing system
- Programming Languages
- MESA and SPL: for systems programming. Modern threads developed from here
- Euclid: first programming language to use verification
- Security:
- Access matrix model, unifying capabilities and ACLs
- Theory of principals speaking for other principals
- Microsoft Palladium
- Scrubbing disk storage
- Research on how economic factors affect security
- Networking
How is Systems Research different?
Butler Lampson was one of the few great computer scientists who spent a lot of in the laboratory with actual hardware, getting his hands dirty. This is not the kind of work normally associated with Turing award winners, but it is the kind of work that has really given us the actual hardware that we use in computer science today.
Some thoughts on why systems programming is different more difficult.
Designing and building large computing systems, or complex computing systems or both. Computers (from tablets to supercomputers), networks, storage and other hardware and OS, programming languages, and other infrastructure software.
Systems design is different from other parts of computers science (e.g. algorithm design) because it’s external interface is to the real world (and hence it is imprecise, subject to change, and generally underspecified), lots of moving parts (i.e. more internal structure and more internal interfaces), module-level design choices have wider implications on the end product, and measure of success is less clear than in other fields. There is no such thing as an optimal answer, so avoiding terrible designs is more important than finding the most optimal one.
Hints on Computer System Design
This is a paper written by Lampson giving hints on how to build good systems. He uses hints, because in systems work, there are no infallible rules. So there are just hints which guide your thinking. Werner Vogels, CTO of Amazon, who oversees some of the most complex and scalable computing infrastructure in the world is a fan of this work. He finds these hints very useful, and says that they are more important today because they’ve withstood the test of time
These hints talk about functionality (what you’re doing), speed (are you doing it quickly enough), and fault-tolerance (and will you keep doing it) In systems, the interface design is the most important part. Do this well and other stuff will follow.
Lampson himself suggests that reading the whole hints paper at once might be tiresome, so it is better to read it in small doses at bedtime. And he points out that he himself has ignored most of these hints sometimes, but then has always regretted them.