Subscribe to our mailing list

* indicates required
Close

Saturday, August 29, 2009

The UNIX Way

Maybe because I analyze and write about enterprise software for a living (or maybe simply because I'm a Vista user), I tend to spend a lot of time thinking about the messiness and sloth of software systems, and what, if anything, can be done about it. Short of returning to Intel 8086 and Motorola MC68000 chipsets, I'm not sure anything can be done at this point. But that doesn't mean we stop trying.

One source of inspiration is the UNIX philosophy. In 1994 Mike Gancarz (a member of the team that designed the X Window System) articulated "The UNIX Philosophy" as a list of nine principles, drawing on his own experiences with UNIX as well as those of friends and colleagues in the UNIX community. Gancarz summed up the nine principles this way:

  1. Small is beautiful.
  2. Make each program do one thing well.
  3. Build a prototype as soon as possible.
  4. Choose portability over efficiency.
  5. Store data in flat text files.
  6. Use software leverage to your advantage.
  7. Use shell scripts to increase leverage and portability.
  8. Avoid captive user interfaces.
  9. Make every program a filter

Obviously these principles, as stated, are not directly transferrable to the world of enterprise software development. But they speak to a certain aesthetic that can be (and needs to be) emulated, I think, if the enterprise world is ever going to get past the point of "not good enough is good enough."

7 comments:

  1. small is beautiful ... so could you argue that cloud computing follows this: small components working together in a large distributed system

    ReplyDelete
  2. Some of those are rather dated. I haven't written more than a few lines of shell script in years, and I try to avoid them as much as possible. (Python is not a shell script language.) Storing data in text files is nice, but systems like sqlite make it so easy to have more complex data structures, built-in search support, transactions and concurrency.

    ReplyDelete
  3. The Unix Way is still true today and followed by thousands of programmers who understand and use it. Maybe not everyone is following it in the enterprise but they do so to their own peril. They are NOT out of date and work as well today as ever before.

    ReplyDelete
  4. Small is beaufiful, one is perception the other subjective. Much like the Mandelbrot set,

    Personally I like making very simple small things, then putting lots of them together, much like scaling out the perception on the fractal, size all depends on where you stand.

    ReplyDelete
  5. Greg Johnson11:10 PM

    It is ironic that these principles were articulated by a designer of the X windowing system, which by my count violates at least six of them. I use X11 constantly and appreciate the work that goes into it, but it does not reflect the Unix philosophy. Is there a windowing system that does?

    ReplyDelete
  6. Anonymous4:24 AM

    @Greg Johnson

    Plan9 tried to push the unix philosophy everywhere including its windowing system.
    http://en.wikipedia.org/wiki/Rio_window_manager

    ReplyDelete
  7. Anonymous9:22 AM

    You might want to look at NetKernel 4 (http://www.1060research.com).

    It combines these ideas from Unix with ideas from the Web (REST design principles). For example, instead of solely supporting flat files, NetKernel uses the idea of "resource models" that plug in support for any representation type. The "small and beautiful" tools that work with the resource models can be orchestrated with simple scripting. An idea from REST (immutability) leads to internal caching of interim results.

    ReplyDelete

Add a comment. Registration required because trolls.