Short Reminder

While browsing inside some old repository of mine I stumbled upon this little set of principles. Of course, I could not resist but to publish them here.

Architectural Principles
Architectural Principles Required

This set of principles was established by two of the creators of the X Windowing system. Much before Mac or Windows. Much, much before. And today (I dare to think)  this little set stands out as a real gem of architectural principles.

Principles

In 1984, Bob Scheifler and Jim Gettys set out the early principles of X:

  • Do not add new functionality unless an implementer cannot complete a real application without it.
    • This principle was modified during the design of X version 11 (X11)  to: “Do not add new functionality unless you know of some real application that will require it.”
  • It is as important to decide what a system is not as to decide what it is. Do not serve all the world’s needs; rather, make the system extensible so that additional needs can be met in an upwardly compatible fashion.
  • The only thing worse than generalizing from one example is generalizing from no examples at all.
  • If a problem is not completely understood, it is probably best to provide no solution at all.
  • If you can get 90 percent of the desired effect for 10 percent of the work, use the simpler solution. (See also Worse is better.)
  • Isolate complexity as much as possible.
  • Provide mechanism rather than policy. In particular, place user interface policy in the clients’ hands.

Do I need to elaborate on these more ?

(PS: for a good introduction into the X11 Windowing system one can start here: http://en.wikipedia.org/wiki/X_Window_System )