Accessibility

6.033--Computer System Engineering

Suggestions for classroom discussion of:

Butler W. Lampson. Hints for computer system design. ACM Ninth Symposium on Operating Systems Principles, in Operating Systems Review 17, 5 (October, 1983) pages 33-48.

by J. H. Saltzer, February 14, 1996, revised May 13, 1997 and May 18, 1999


This paper may be read either at the beginning or at the end of the term; it is actually a good idea to read it twice.

When read at the beginning of the term, this paper can be discussed only superficially, because the motivation for many of its suggestions is lacking. Nevertheless, even a beginning reader can sense that there is some substance to the paper.

This is a good paper on which to practice first nibbling around the edges...

This paper provides an introduction to "system thinking". What does that mean? (Relate to complexity lecture, methods of coping, and the general method of looking at the whole picture.)

Can you identify any of the hints as examples of the methods of coping with complexity discussed in lecture?

 plan to throw one away  --> finding the right modularity,
                                 design for iteration

            keep secrets --> abstraction

      Divide and conquer --> modularity

       Do one thing well --> functional modularity

         Use brute force --> use brute force

Most students will have absorbed the slogans without much comprehension of their subtleties; the thing to do now is to try to remember them for what is coming. One approach is to try to identify examples of the hints in designs that people are familiar with, or that were in the one or two case studies they have seen so far.

When read at the end of the semester, or for the second time, the best attack is to ask the class to help you compile a list of examples of Lampson's hints that appeared in the case studies during the term. There are a couple of ways to approach this:

1. Make it concrete. What is the {best, most obscure} example you can think of for slogan X that we have seen this term?

2. Look for connections. Where is Lampson restating things we have read (perhaps said quite differently) in other wisdom papers?

            wisdom             Lampson
     Do the right thing --> Get it right
        Worse is better --> Keep it simple
              Chocolate --> Safety first
 plan to throw one away --> plan to throw one away

Is there a debate between abstraction and open design? The hint is "Keep secrets". But open design teaches us to expose everything. Start with examples of ebstraction:

And examples of open design (or where it should have been used):

From Frans Kaashoek: Another fun thing to do is to construct a list of failed computer systems, and figure out why they failed. In some cases the failed systems "violated" some of Butler's hints; in other cases, the reason of failure is more complicated. Nevertheless, making such a list is an interesting exercise.

From Dawson Engler: A possibly missing hint: use indirection. Go through an intermediary to an object. Examples:

Aside: Is this paper mistitled? Just what is a hint, anyway? See Hints versus Caches.


Comments and suggestions: Saltzer@mit.edu