Mercurial > docs > unix-phil
diff unix-phil-slides.ms @ 24:2335f5658fca
added poster and slides
author | meillo@marmaro.de |
---|---|
date | Fri, 05 Mar 2010 23:56:48 +0100 |
parents | |
children | e6ac51dc18bf |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/unix-phil-slides.ms Fri Mar 05 23:56:48 2010 +0100 @@ -0,0 +1,339 @@ +.TL +\fR\s-6Why\s0\fP +.br +the Unix Philosophy +.br +.vs -4 +\fR\s-6(still) matters\s0\fP +.AU +.ft R +.sp 1.2i +.ps 11 +markus schnalke <meillo@marmaro.de> + + +.S "goals of this talk +.I +introduce the Unix Phil +.I +explain why most modern software is crap +.I +explain why the Unix Phil leads to better software +.I +convince you that good software is of matter +.sp 2 +.I +make you think + + +.S "roadmap +.I +Historical background +.I +What is the Unix Philosophy? +.I +The Unix Phil after Gancarz +.I +Discussion on real world examples +.I +The Unix Phil is more than software dev guidelines + + + +.S "me and the UP +.LP +first contact: through the suckless project +.LP +``cat -v Considered Harmful'' +.LP +``The Unix and the Echo'' +.LP +``The Unix Programming Environment'' +.sp 1 +.LP +better understanding through digging in the past + + + + + +.P "historical background + + + + +.S "historical background +.I +the late 60s and early 70s +.I +operating systems are complex +.I +MULTICS just failed +.I +Brooks' ``The Mythical Man-Month'' +.I +a lot of different hardware +.I +limited computing power +.I +textual input and output (line printers) + + +.S "everything is a file +.LP +is the(?) basic concept in Unix (and even more in Plan9) +.LP +made simple operating systems possible +.LP +it is not covered by the Unix Phil; the Unix Phil is on a different level +.sp 2 +.LP +Unix is mainly two things: +.I +an operating system (system calls) +.I +a toolchest (coreutils) + + + +.P "What is the Unix Phil + + + +.S "What is the Unix Phil *itself*? +.LP +``The Unix philosophy is a set of cultural norms and philosophical +approaches to developing software based on the experience of +leading developers of the Unix operating system.'' +(wikipedia) +.sp 2 +.LP +How the inventors of Unix write software. +.LP +Common things of classic Unix tools. +.sp 2 +.LP +difficult to define + + +.S "Unix Phil vs. SW dev processes +.LP +the Unix Phil +.I +much: *what* to program +.I +few: *how* to program + +.LP +Software developments processes: +.I +few: *what* to program +.I +much: *how* to program + +.sp 2 +.LP +Extreme Programming is like the Unix Phil +but with more *how* than *what*, +and with formalisms + + + + + +.S "What is the Unix Phil? +.I +Doug McIlroy (1978) +.I +Mike Gancarz: ``The Unix Philosophy'' (1994) +.I +Eric S. Raymond: ``The Art of Unix Programming'' (2003) +.sp 2 +.I +Richard Gabriel: ``Worse is Better'' (1989) + + +.S "Doug McIlroy +.LP +This is the Unix philosophy: +.I +Write programs that do one thing and do it well. +.I +Write programs to work together. +.I +Write programs to handle text streams, because that is a universal interface. + + +.S "Mike Gancarz: ``The Unix Philosophy'' +.I +Small is beautiful. +.I +Make each program do one thing well. +.I +Build a prototype as soon as possible. +.I +Choose portability over efficiency. +.I +Store data in flat text files. +.I +Use software leverage to your advantage. +.I +Use shell scripts to increase leverage and portability. +.I +Avoid captive user interfaces. +.I +Make every program a filter. +.sp 1 +.LP +plus ten lesser tenets + + + + +.P "The Unix Phil after Gancarz + +.S "Small is beautiful. +.LP +foo + + +.S "Make each program do one thing well. +.LP +foo + + +.S "Build a prototype as soon as possible. +.LP +foo + + +.S "Choose portability over efficiency. +.LP +foo + + +.S "Store data in flat text files. +.LP +foo + + +.S "Use software leverage to your advantage. +.LP +foo + + +.S "Use shell scripts to increase leverage and portability. +.LP +foo + + +.S "Avoid captive user interfaces. +.LP +foo + + +.S "Make every program a filter. +.LP +foo + + + + + +.P "real world examples + + +.S "various +.LP +who uses +.CW "grep -R +? + +.sp 1 +.LP +.CW "cat -v + +.sp 1 +.LP +pagers are taken for granted + +.sp 1 +.LP +what about the readline? + + + +.S "find -printf +.LP +How to reformat the output of find(1) to have ``FILENAME PATH'' +instead of ``PATH/FILENAME''? + +.LP +the ``easy'' way: +\f(CWfind /dir -printf "%P %h\en"\fP + +.LP +the ``good'' way: +.br +.CW "\s-1find /dir | sed 's,\e(.*\e)/\e(.*\e),\e2 \e1,' + +.LP +The difference shows off when one wants, for instance, +the path to be manipulated further. + + +.S "MH / nmh +.LP +a Mail User Agent (MUA) + + +.S "uzbl +.LP +a web browser that adheres to the Unix Phil + + + + + +.P "more than software dev guidelines + + + + + +.P "literature + + +.S literature +.I +``\fBText Processing and Typesetting with Unix\fP'' +by Barron and Rees +explains everything pretty good (focus on +.CW nroff ) +.I +``\fBHeirloom Documentation Tools Nroff/Troff User's Manual\fP'' +by Ossanna, Kernighan, and Ritter +is more a technical reference +.I +Various documents collected on +.CW \s-2http://troff.org\s+2 + + +.S +.LP +this talk was prepared using tools of the Heirloom project: +.CW \s-2http://heirloom.sf.net\s+2 +.LP +the slides macros are based on +.br +.CW \s-2http://repo.cat-v.org/troff-slider/\s+2 +.sp + +.LP +the slides are available on my website +.CW \s-2http://marmaro.de/docs\s+2 +and on +.CW \s-2http://ulm.ccc.de/ChaosSeminar/\s+2 +.sp + +2010-03-08