|
|
z2007-01-20- Yegge Great Software Systems
|
|
Whenever any Form of Government becomes destructive of these ends, it is the Right of the People to alter or to abolish it, and to institute new Government, laying its foundation on such principles and organizing its powers in such form, as to them shall seem most likely to effect their Safety and Happiness.
|
|
(backlinks off)
|
(map off)
|
(search off)
|
|
last edited
by BillSeitz
on
Apr 29, 2008 11:27 am |
Steve Yegge on what makes great software systems (Plat Form). The big realization I had, sometime in the last month or so, is that all of the common properties of my favorite software systems can be derived from a single root cause: one property, or design principle, that if present will cause software to take on the right characteristics automatically. What are my favorite software systems? Here are a few of the very best: UNIX. WinXP. MacOsX. EMacs. MsExcel. FireFox. Ruby On Rails. PyThon. RuBy. SchEme. Common Lisp. [LP] Muds. The Java Virtual Machine (JVM). A few more that just barely make the cut, for now: MsWord. [Omni Graffle] Pro. Java Script. [Per Force]. Some that I think would make the cut if I learned how to use them effectively: The GIMP. Mathemat Ica. VIM. LuA. MsIE.... I won't keep you in suspense. I think the most important principle in all of software design is this: Systems should never [ReBoot]. If you design a system so that it never needs to reboot, then you will eventually, even if it's by a very roundabout path, arrive at a system that will live forever.... I think the second most important design principle, really a corollary to the first, is that systems must be able to grow without rebooting... First (essential feature): every great system has a command shell (Command Line)... Great systems also have advice. There's no universally accepted name for this feature. Sometimes it's called hooks, or filters, or Aspect Oriented Programming... World-class software systems always have an extension language and a PlugIn system... The last big feature I'll enumerate today, and it's just as important as the rest, is that great software systems are [Intro Spective]. You can poke around and examine them at runtime, and ideally they poke around and examine themselves as well... Introspect Ion can (and should) take many different forms, not just health monitoring.
Apr29'2008 update: semi-related see Ted Nelson name full Plat Form-s when, as asked, for software examples with the potential to enlarge the mind and liberate people, specifically Tinder Box, [Pro Graph], [Real Basic], EMacs, [Adobe Flash].
Bill Seitz, fluxent at gmail dot com, Weblog