(2007-01-20) Yegge Great Software Systems

Steve Yegge on what makes great software systems (Platform). 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. MacOs X. EMacs. MsExcel. FireFox. Ruby On Rails. Python. Ruby. Scheme. Common Lisp. Lp Mud-s (MUD). The Java Virtual Machine (JVM). A few more that just barely make the cut, for now: MsWord. OmniGraffle Pro. JavaScript. Per Force. Some that I think would make the cut if I learned how to use them effectively: The GIMP. Mathematica. 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 Re Boot. 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... Introspection can (and should) take many different forms, not just health monitoring. (aliveness? turing-complete?)

Apr29'2008 update: semi-related see Ted Nelson name full Platform-s when, as asked, for software examples with the potential to enlarge the mind and liberate people, specifically TinderBox, Pro Graph, Real Basic, EMacs, Adobe Flash.

Dec'2008: semi-related: Joe Gregorio asks What part of the computer in front of you is Fractal? The answer is none of it, yet in nature, which has been at this game of computation for billions of years, everything is fractal. We're doing it all wrong. Sean McGrath thinks that documents are Fractal. Headings and sub-headings to any depth with anything you like in between the headings, in any order. Self similar. Arbitrarily deep and fiendishly difficult to process automatically. That is the real world. A messy world of "unstructured" stuff that we call "content" lest we sully the word "data".

Apr'2014: Paul Ford identifies 5 "Great Works": MsOffice, Photo Shop, Pac Man, UNIX, EMacs, realizing that Each ultimately provided a way for large groups of people to talk about and think about very difficult problems... typically thought to be in the domain of philosophy, literature, or art, rather than programming. This software doesn’t just let people do things; it gives them a way to talk about and share what they did. (Sense Making, CollaborationWare)


Edited:    |       |    Search Twitter for discussion