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 diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/unix-phil-slides.ms Fri Mar 05 23:56:48 2010 +0100 1.3 @@ -0,0 +1,339 @@ 1.4 +.TL 1.5 +\fR\s-6Why\s0\fP 1.6 +.br 1.7 +the Unix Philosophy 1.8 +.br 1.9 +.vs -4 1.10 +\fR\s-6(still) matters\s0\fP 1.11 +.AU 1.12 +.ft R 1.13 +.sp 1.2i 1.14 +.ps 11 1.15 +markus schnalke <meillo@marmaro.de> 1.16 + 1.17 + 1.18 +.S "goals of this talk 1.19 +.I 1.20 +introduce the Unix Phil 1.21 +.I 1.22 +explain why most modern software is crap 1.23 +.I 1.24 +explain why the Unix Phil leads to better software 1.25 +.I 1.26 +convince you that good software is of matter 1.27 +.sp 2 1.28 +.I 1.29 +make you think 1.30 + 1.31 + 1.32 +.S "roadmap 1.33 +.I 1.34 +Historical background 1.35 +.I 1.36 +What is the Unix Philosophy? 1.37 +.I 1.38 +The Unix Phil after Gancarz 1.39 +.I 1.40 +Discussion on real world examples 1.41 +.I 1.42 +The Unix Phil is more than software dev guidelines 1.43 + 1.44 + 1.45 + 1.46 +.S "me and the UP 1.47 +.LP 1.48 +first contact: through the suckless project 1.49 +.LP 1.50 +``cat -v Considered Harmful'' 1.51 +.LP 1.52 +``The Unix and the Echo'' 1.53 +.LP 1.54 +``The Unix Programming Environment'' 1.55 +.sp 1 1.56 +.LP 1.57 +better understanding through digging in the past 1.58 + 1.59 + 1.60 + 1.61 + 1.62 + 1.63 +.P "historical background 1.64 + 1.65 + 1.66 + 1.67 + 1.68 +.S "historical background 1.69 +.I 1.70 +the late 60s and early 70s 1.71 +.I 1.72 +operating systems are complex 1.73 +.I 1.74 +MULTICS just failed 1.75 +.I 1.76 +Brooks' ``The Mythical Man-Month'' 1.77 +.I 1.78 +a lot of different hardware 1.79 +.I 1.80 +limited computing power 1.81 +.I 1.82 +textual input and output (line printers) 1.83 + 1.84 + 1.85 +.S "everything is a file 1.86 +.LP 1.87 +is the(?) basic concept in Unix (and even more in Plan9) 1.88 +.LP 1.89 +made simple operating systems possible 1.90 +.LP 1.91 +it is not covered by the Unix Phil; the Unix Phil is on a different level 1.92 +.sp 2 1.93 +.LP 1.94 +Unix is mainly two things: 1.95 +.I 1.96 +an operating system (system calls) 1.97 +.I 1.98 +a toolchest (coreutils) 1.99 + 1.100 + 1.101 + 1.102 +.P "What is the Unix Phil 1.103 + 1.104 + 1.105 + 1.106 +.S "What is the Unix Phil *itself*? 1.107 +.LP 1.108 +``The Unix philosophy is a set of cultural norms and philosophical 1.109 +approaches to developing software based on the experience of 1.110 +leading developers of the Unix operating system.'' 1.111 +(wikipedia) 1.112 +.sp 2 1.113 +.LP 1.114 +How the inventors of Unix write software. 1.115 +.LP 1.116 +Common things of classic Unix tools. 1.117 +.sp 2 1.118 +.LP 1.119 +difficult to define 1.120 + 1.121 + 1.122 +.S "Unix Phil vs. SW dev processes 1.123 +.LP 1.124 +the Unix Phil 1.125 +.I 1.126 +much: *what* to program 1.127 +.I 1.128 +few: *how* to program 1.129 + 1.130 +.LP 1.131 +Software developments processes: 1.132 +.I 1.133 +few: *what* to program 1.134 +.I 1.135 +much: *how* to program 1.136 + 1.137 +.sp 2 1.138 +.LP 1.139 +Extreme Programming is like the Unix Phil 1.140 +but with more *how* than *what*, 1.141 +and with formalisms 1.142 + 1.143 + 1.144 + 1.145 + 1.146 + 1.147 +.S "What is the Unix Phil? 1.148 +.I 1.149 +Doug McIlroy (1978) 1.150 +.I 1.151 +Mike Gancarz: ``The Unix Philosophy'' (1994) 1.152 +.I 1.153 +Eric S. Raymond: ``The Art of Unix Programming'' (2003) 1.154 +.sp 2 1.155 +.I 1.156 +Richard Gabriel: ``Worse is Better'' (1989) 1.157 + 1.158 + 1.159 +.S "Doug McIlroy 1.160 +.LP 1.161 +This is the Unix philosophy: 1.162 +.I 1.163 +Write programs that do one thing and do it well. 1.164 +.I 1.165 +Write programs to work together. 1.166 +.I 1.167 +Write programs to handle text streams, because that is a universal interface. 1.168 + 1.169 + 1.170 +.S "Mike Gancarz: ``The Unix Philosophy'' 1.171 +.I 1.172 +Small is beautiful. 1.173 +.I 1.174 +Make each program do one thing well. 1.175 +.I 1.176 +Build a prototype as soon as possible. 1.177 +.I 1.178 +Choose portability over efficiency. 1.179 +.I 1.180 +Store data in flat text files. 1.181 +.I 1.182 +Use software leverage to your advantage. 1.183 +.I 1.184 +Use shell scripts to increase leverage and portability. 1.185 +.I 1.186 +Avoid captive user interfaces. 1.187 +.I 1.188 +Make every program a filter. 1.189 +.sp 1 1.190 +.LP 1.191 +plus ten lesser tenets 1.192 + 1.193 + 1.194 + 1.195 + 1.196 +.P "The Unix Phil after Gancarz 1.197 + 1.198 +.S "Small is beautiful. 1.199 +.LP 1.200 +foo 1.201 + 1.202 + 1.203 +.S "Make each program do one thing well. 1.204 +.LP 1.205 +foo 1.206 + 1.207 + 1.208 +.S "Build a prototype as soon as possible. 1.209 +.LP 1.210 +foo 1.211 + 1.212 + 1.213 +.S "Choose portability over efficiency. 1.214 +.LP 1.215 +foo 1.216 + 1.217 + 1.218 +.S "Store data in flat text files. 1.219 +.LP 1.220 +foo 1.221 + 1.222 + 1.223 +.S "Use software leverage to your advantage. 1.224 +.LP 1.225 +foo 1.226 + 1.227 + 1.228 +.S "Use shell scripts to increase leverage and portability. 1.229 +.LP 1.230 +foo 1.231 + 1.232 + 1.233 +.S "Avoid captive user interfaces. 1.234 +.LP 1.235 +foo 1.236 + 1.237 + 1.238 +.S "Make every program a filter. 1.239 +.LP 1.240 +foo 1.241 + 1.242 + 1.243 + 1.244 + 1.245 + 1.246 +.P "real world examples 1.247 + 1.248 + 1.249 +.S "various 1.250 +.LP 1.251 +who uses 1.252 +.CW "grep -R 1.253 +? 1.254 + 1.255 +.sp 1 1.256 +.LP 1.257 +.CW "cat -v 1.258 + 1.259 +.sp 1 1.260 +.LP 1.261 +pagers are taken for granted 1.262 + 1.263 +.sp 1 1.264 +.LP 1.265 +what about the readline? 1.266 + 1.267 + 1.268 + 1.269 +.S "find -printf 1.270 +.LP 1.271 +How to reformat the output of find(1) to have ``FILENAME PATH'' 1.272 +instead of ``PATH/FILENAME''? 1.273 + 1.274 +.LP 1.275 +the ``easy'' way: 1.276 +\f(CWfind /dir -printf "%P %h\en"\fP 1.277 + 1.278 +.LP 1.279 +the ``good'' way: 1.280 +.br 1.281 +.CW "\s-1find /dir | sed 's,\e(.*\e)/\e(.*\e),\e2 \e1,' 1.282 + 1.283 +.LP 1.284 +The difference shows off when one wants, for instance, 1.285 +the path to be manipulated further. 1.286 + 1.287 + 1.288 +.S "MH / nmh 1.289 +.LP 1.290 +a Mail User Agent (MUA) 1.291 + 1.292 + 1.293 +.S "uzbl 1.294 +.LP 1.295 +a web browser that adheres to the Unix Phil 1.296 + 1.297 + 1.298 + 1.299 + 1.300 + 1.301 +.P "more than software dev guidelines 1.302 + 1.303 + 1.304 + 1.305 + 1.306 + 1.307 +.P "literature 1.308 + 1.309 + 1.310 +.S literature 1.311 +.I 1.312 +``\fBText Processing and Typesetting with Unix\fP'' 1.313 +by Barron and Rees 1.314 +explains everything pretty good (focus on 1.315 +.CW nroff ) 1.316 +.I 1.317 +``\fBHeirloom Documentation Tools Nroff/Troff User's Manual\fP'' 1.318 +by Ossanna, Kernighan, and Ritter 1.319 +is more a technical reference 1.320 +.I 1.321 +Various documents collected on 1.322 +.CW \s-2http://troff.org\s+2 1.323 + 1.324 + 1.325 +.S 1.326 +.LP 1.327 +this talk was prepared using tools of the Heirloom project: 1.328 +.CW \s-2http://heirloom.sf.net\s+2 1.329 +.LP 1.330 +the slides macros are based on 1.331 +.br 1.332 +.CW \s-2http://repo.cat-v.org/troff-slider/\s+2 1.333 +.sp 1.334 + 1.335 +.LP 1.336 +the slides are available on my website 1.337 +.CW \s-2http://marmaro.de/docs\s+2 1.338 +and on 1.339 +.CW \s-2http://ulm.ccc.de/ChaosSeminar/\s+2 1.340 +.sp 1.341 + 1.342 +2010-03-08