The fundamental philosophy which has guided UNIX development since it's birth. Composed of several tenets, it promotes certain "radical" ideas which have been proven to be extremely useful in software development. Very much different from other software design concepts. Does not teach a person how to use UNIX, but rather why they should use UNIX.

Also, a book by Mike Gancarz about The UNIX Philosophy.

Some of the tenents of what I understand to be UNIX Philosophy are:


I'll add more as I think of them or stea^H^H^H^Henlist the aid of my fellow noders and give full credit on their ideas.

From what I understand it (and no, I haven't read the book), it is largely dominated by minimalism and rich I/O such as pipes and sockets. (all of which, you will notice, from a programmer's point of view, have file descriptors, and are read and written through the same calls; again, back to "everything is a file")

mcc suggested I append a hardlink to "jwz: The Rise of ``Worse is Better''". Very well, but I don't think much of those who bitch about UNIX sucking. Either way, an interesting essay about the UNIX philosophy.

Mike Gancarz's book The UNIX Philosophy (Digital Press, 1995) describes many of the ideas and conventions that have made unix a great sytem. It starts with a short run down of the history, quickly getting to the meat of things, discussion of the major ideas of Unixdom and illustrations of why they are such good ideas. While many of the ideas may seem relatively obvious to anyone who's worked with the system before, it makes an excellent introduction to the traditions of the Unix world, as well as an excelent bit of advocacy for why the Unix way is the Right Way.


Listed in the first chapter, the following nine points are the key tenets:
  1. Small is beautiful
  2. Make each program do one thing
  3. Build a prototype as soon as possible
  4. Choose portability over efficiency
  5. Store numerical data in flat ASCII 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


...and the ten lesser points:
  1. Allow the user to tailor the environment:
  2. Make operating system kernels small and lightweight:
  3. Use lower case and keep it short
  4. Save trees
  5. Silence is golden
  6. Think parallel
  7. The sum of the parts is greater than the whole
  8. Look for the 90 percent solution
  9. Worse is better
  10. Think hierarchiacally

Log in or register to write something here or to contact authors.