"Write programs that do one thing and do it well.  Write programs to
work together.  Write programs that handle text streams, because that
is a universal interface."  -- Doug McIlroy (inventor of Unix pipes;
currently Adjunct Professor at NH's own Dartmouth College)

>From _The UNIX Philosophy_ by Mike Gancarz (a member of original X
window system team):
   Universal:
   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.
  Lesser:
   1. Allow the user to tailor the environment.
   2. Make operating systems small and lightweight.
   3. Use lowercase 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 hierarchically.

>From _The Art of Unix Programming_ by Eric Raymond (author of
fetchmail and _The Cathedral and the Bazaar_):
    Rule of Modularity: Write simple parts connected by clean interfaces.
    Rule of Clarity: Clarity is better than cleverness.
    Rule of Composition: Design programs to be connected with other programs.
    Rule of Separation: Separate policy from mechanism; separate
interfaces from engines.
    Rule of Simplicity: Design for simplicity; add complexity only
where you must.
    Rule of Parsimony: Write a big program only when it is clear by
demonstration that nothing else will do.
    Rule of Transparency: Design for visibility to make inspection and
debugging easier.
    Rule of Robustness: Robustness is the child of transparency and simplicity.
    Rule of Representation: Fold knowledge into data, so program logic
can be stupid and robust.
    Rule of Least Surprise: In interface design, always do the least
surprising thing.
    Rule of Silence: When a program has nothing surprising to say, it
should say nothing.
    Rule of Repair: Repair what you can — but when you must fail, fail
noisily and as soon as possible.
    Rule of Economy: Programmer time is expensive; conserve it in
preference to machine time.
    Rule of Generation: Avoid hand-hacking; write programs to write
programs when you can.
    Rule of Optimization: Prototype before polishing. Get it working
before you optimize it.
    Rule of Diversity: Distrust all claims for one true way.
    Rule of Extensibility: Design for the future, because it will be
here sooner than you think.

-----

  I post this because many have apparently forgotten why Unix-like
OSes win.  Free Software is essential to freedom, but I prefer Free
Software that wins.  These principles are why Unix wins.

  Even if Microsoft Windows was GPLed, *nix would still win.

Sources for the above:
* http://www.faqs.org/docs/artu/ch01s06.html
* http://en.wikipedia.org/wiki/Unix_philosophy
* http://www.cs.dartmouth.edu/~doug/
* http://www.princeton.edu/~hos/frs122/precis/mcilroy.htm
* http://www.catb.org/~esr/writings/taoup/html/
* http://www.amazon.com/UNIX-Philosophy-Mike-Gancarz/dp/1555581234

  Thank you for your time.

_______________________________________________
gnhlug-discuss mailing list
gnhlug-discuss@mail.gnhlug.org
http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/

Reply via email to