docs/unix-phil
changeset 27:e8adc3571e8c
rework
author | meillo@marmaro.de |
---|---|
date | Mon, 08 Mar 2010 12:58:58 +0100 |
parents | b368ff5cdb5f |
children | faff9ea75591 |
files | unix-phil-slides.ms |
diffstat | 1 files changed, 156 insertions(+), 155 deletions(-) [+] |
line diff
1.1 --- a/unix-phil-slides.ms Sun Mar 07 22:40:05 2010 +0100 1.2 +++ b/unix-phil-slides.ms Mon Mar 08 12:58:58 2010 +0100 1.3 @@ -12,25 +12,25 @@ 1.4 markus schnalke <meillo@marmaro.de> 1.5 1.6 1.7 -.S "goals of this talk 1.8 +.S "Goals of this talk 1.9 .I 1.10 -introduce the Unix Phil 1.11 +Introduce the Unix Phil 1.12 .I 1.13 -show that most modern software is crap 1.14 +Show that most modern software is crap 1.15 .I 1.16 -explain why the Unix Phil leads to better software 1.17 +Explain why the Unix Phil leads to better software 1.18 .I 1.19 -convince you that good software is of matter 1.20 +Convince you that good software is of matter 1.21 .sp 2 1.22 .I 1.23 -make you think 1.24 +Make you think 1.25 1.26 1.27 -.S "roadmap 1.28 +.S "Roadmap 1.29 .I 1.30 Historical background 1.31 .I 1.32 -What is the Unix Philosophy? 1.33 +What is the Unix Phil? 1.34 .I 1.35 The Unix Phil after Gancarz 1.36 .I 1.37 @@ -40,9 +40,9 @@ 1.38 1.39 1.40 1.41 -.S "me and the UP 1.42 +.S "How I learned about it 1.43 .LP 1.44 -first contact: through the suckless project 1.45 +First contact through dwm (suckless project) 1.46 .LP 1.47 ``cat -v Considered Harmful'' 1.48 .LP 1.49 @@ -51,52 +51,54 @@ 1.50 ``The Unix Programming Environment'' 1.51 .sp 1 1.52 .LP 1.53 -better understanding through digging in the past 1.54 +Better understanding through digging in the past 1.55 1.56 1.57 1.58 1.59 1.60 -.P "historical background 1.61 +.P "Historical background 1.62 1.63 1.64 1.65 1.66 -.S "historical background 1.67 -.I 1.68 -the late 60s and early 70s 1.69 -.I 1.70 -operating systems are complex 1.71 -.I 1.72 -MULTICS just failed 1.73 -.I 1.74 +.S "Historical background 1.75 +.LP 1.76 +The late 60s and early 70s 1.77 +.LP 1.78 +Operating systems are complex 1.79 +.LP 1.80 Brooks' ``The Mythical Man-Month'' 1.81 -.I 1.82 -a lot of different hardware 1.83 -.I 1.84 -limited computing power 1.85 -.I 1.86 -textual input and output (line printers) 1.87 +.LP 1.88 +MULTICS had just failed 1.89 +.LP 1.90 +A lot of different hardware 1.91 +.LP 1.92 +Limited computing power 1.93 +.LP 1.94 +Textual input and output (line printers) 1.95 1.96 1.97 -.S "everything is a file 1.98 +.S "Everything is a file 1.99 .LP 1.100 -is the(?) basic concept in Unix (and even more in Plan9) 1.101 +Is the(?) basic concept in Unix (and even more in Plan9) 1.102 .LP 1.103 -made simple operating systems possible 1.104 +Made simple operating systems possible 1.105 .LP 1.106 -it is not covered by the Unix Phil; the Unix Phil is on a different level 1.107 +It is not covered by the Unix Phil 1.108 +.br 1.109 +The Unix Phil is on a different level 1.110 .sp 2 1.111 .LP 1.112 Unix is mainly two things: 1.113 .I 1.114 -an operating system (system calls) 1.115 +An operating system (system calls) 1.116 .I 1.117 -a toolchest (coreutils) 1.118 +A toolchest (coreutils) 1.119 1.120 1.121 1.122 -.P "What is the Unix Phil 1.123 +.P "What is the Unix Phil? 1.124 1.125 1.126 1.127 @@ -113,12 +115,12 @@ 1.128 Common things of classic Unix tools. 1.129 .sp 2 1.130 .LP 1.131 -difficult to define 1.132 +Difficult to define 1.133 1.134 1.135 .S "Unix Phil vs. SW dev processes 1.136 .LP 1.137 -the Unix Phil 1.138 +The Unix Phil 1.139 .I 1.140 much: *what* to program 1.141 .I 1.142 @@ -185,7 +187,7 @@ 1.143 Make every program a filter. 1.144 .sp 1 1.145 .LP 1.146 -plus ten lesser tenets 1.147 +Plus ten lesser tenets 1.148 1.149 1.150 1.151 @@ -195,153 +197,117 @@ 1.152 1.153 1.154 .S "Small is beautiful 1.155 -.I 1.156 -small software is easier to understand, write, maintain 1.157 -.I 1.158 -less lines of code contain less bugs 1.159 -.I 1.160 -monsters are large 1.161 +.LP 1.162 +Small software is easier to understand, write, maintain 1.163 +.LP 1.164 +Less lines of code contain less bugs 1.165 +.LP 1.166 +Monsters are large 1.167 1.168 1.169 .S "Make each program do one thing well 1.170 -.I 1.171 -programs with many functions are large 1.172 -.I 1.173 -one thing is easier to understand 1.174 -.I 1.175 -often straight forward to implement 1.176 -.I 1.177 -reusable 1.178 +.LP 1.179 +Programs with many functions are large 1.180 +.LP 1.181 +One thing is easier to understand 1.182 +.LP 1.183 +Often straight forward to implement 1.184 +.LP 1.185 +Reusable 1.186 1.187 1.188 .S "Build a prototype as soon as possible 1.189 -.I 1.190 -shows the quality of the design 1.191 -.I 1.192 -shows the problems of the software 1.193 -.I 1.194 -the best way to shape a software 1.195 -.I 1.196 -users find bugs 1.197 +.LP 1.198 +Shows the quality of the design 1.199 +.LP 1.200 +Shows the problems of the software 1.201 +.LP 1.202 +The best way to shape a software 1.203 +.LP 1.204 +Users find bugs 1.205 1.206 1.207 .S "Choose portability over efficiency 1.208 -.I 1.209 -(comes from incompatible hardware in history) 1.210 -.I 1.211 -use is most important 1.212 -.I 1.213 -availability 1.214 -.I 1.215 -only needs to be fast enough 1.216 +.LP 1.217 +(Originates in a lot of incompatible hardware in history) 1.218 +.LP 1.219 +Use is most important 1.220 +.LP 1.221 +Availability 1.222 +.LP 1.223 +Only needs to be fast enough 1.224 1.225 1.226 .S "Store data in flat text files 1.227 .LP 1.228 -binary data is machine dependent 1.229 +Binary data is machine-dependent 1.230 .LP 1.231 -human readable data is: 1.232 +Human readable data is: 1.233 .I 1.234 -is very likely supported 1.235 +As generic as possible 1.236 .I 1.237 -good to port 1.238 +Is very likely supported 1.239 .I 1.240 -many tools work on it (Unix toolchest) 1.241 +Many tools work on it (Unix toolchest) 1.242 .I 1.243 -as generic as possible 1.244 +Directly editable by humans 1.245 .LP 1.246 -processing needs only to be fast enough 1.247 +Processing needs only to be fast enough 1.248 1.249 1.250 .S "Use software leverage to your advantage 1.251 .LP 1.252 -what do we have computers for? 1.253 +What do we have computers for? 1.254 .LP 1.255 -make best use of computing power 1.256 +Make best use of computing power 1.257 .LP 1.258 -reduce development effort 1.259 +Reduce development effort 1.260 1.261 1.262 .S "Use shell scripts to increase leverage and portability 1.263 .LP 1.264 -was very important in history 1.265 +Was very important in history 1.266 .LP 1.267 -high level languages 1.268 +High level languages 1.269 .LP 1.270 -prototyping 1.271 +Prototyping 1.272 .LP 1.273 -quick hacks 1.274 +Quick hacks 1.275 1.276 1.277 .S "Avoid captive user interfaces 1.278 .LP 1.279 -don't assume the user to be human 1.280 +Don't assume the user to be human 1.281 .LP 1.282 -exclude the user whenever possible 1.283 +Exclude the user whenever possible 1.284 .LP 1.285 -automate 1.286 +Automate 1.287 1.288 1.289 .S "Make every program a filter 1.290 .LP 1.291 -programs transform data 1.292 +Programs transform data 1.293 .LP 1.294 -combine programs 1.295 +Combine programs 1.296 .LP 1.297 -have one common interface 1.298 - 1.299 - 1.300 - 1.301 -.S "a different POV 1.302 -.I 1.303 -pipes 1.304 -.I 1.305 -interface design 1.306 -.I 1.307 -the toolchest approach 1.308 -.I 1.309 -a powerful shell 1.310 -.I 1.311 -worse is better 1.312 -.I 1.313 -upgrowth and survival 1.314 +Have one common interface 1.315 1.316 1.317 1.318 .P "real world examples 1.319 1.320 1.321 -.S "various 1.322 -.LP 1.323 -who uses 1.324 -.CW "grep -R 1.325 -? 1.326 - 1.327 -.sp 1 1.328 -.LP 1.329 -.CW "cat -v 1.330 - 1.331 -.sp 1 1.332 -.LP 1.333 -pagers are taken for granted 1.334 - 1.335 -.sp 1 1.336 -.LP 1.337 -what about the readline? 1.338 - 1.339 - 1.340 - 1.341 .S "find -printf 1.342 .LP 1.343 How to reformat the output of find(1) to have ``FILENAME PATH'' 1.344 instead of ``PATH/FILENAME''? 1.345 1.346 .LP 1.347 -the ``easy'' way: 1.348 +The ``easy'' way: 1.349 \f(CWfind /dir -printf "%P %h\en"\fP 1.350 1.351 .LP 1.352 -the ``good'' way: 1.353 +The ``good'' way: 1.354 .br 1.355 .CW "\s-1find /dir | sed 's,\e(.*\e)/\e(.*\e),\e2 \e1,' 1.356 1.357 @@ -350,82 +316,114 @@ 1.358 the path to be manipulated further. 1.359 1.360 1.361 +.S "various 1.362 +.LP 1.363 +Who uses 1.364 +.CW "grep -R 1.365 +? 1.366 +.sp 1 1.367 +.LP 1.368 +.CW "cat -v 1.369 + 1.370 +.sp 1 1.371 +.LP 1.372 +Pagers are taken for granted 1.373 + 1.374 +.sp 1 1.375 +.LP 1.376 +What about the readline? 1.377 + 1.378 + 1.379 + 1.380 .S "MH / nmh 1.381 .LP 1.382 -a Mail User Agent (MUA) 1.383 +A Mail User Agent (MUA) 1.384 .LP 1.385 -is a toolchest 1.386 +Is a toolchest 1.387 .LP 1.388 -work with mails like with generic files 1.389 +Work with mails like with generic files 1.390 .LP 1.391 -the only(?) MUA that follows the Unix Phil 1.392 +The only(?) MUA that follows the Unix Phil 1.393 .LP 1.394 -has a very special feeling 1.395 +Has a very special feeling 1.396 1.397 1.398 .S "uzbl 1.399 .LP 1.400 -a web browser that adheres to the Unix Phil 1.401 +A web browser that adheres to the Unix Phil 1.402 .LP 1.403 -a young project (about 1 year) 1.404 +A young project (about 1 year) 1.405 .LP 1.406 -central question: what is the one task a web browser covers? 1.407 +Central question: 1.408 +.br 1.409 +What is the one task a web browser covers? 1.410 .LP 1.411 -makes very visible use of software leverage 1.412 +Makes very visible use of software leverage 1.413 .LP 1.414 -suffers hard from our broken web 1.415 +Suffers hard from our broken web 1.416 1.417 1.418 1.419 1.420 1.421 -.P "more than software dev guidelines 1.422 +.P "Some final thoughts 1.423 1.424 1.425 -.S "say no 1.426 +.S "Say no! 1.427 .LP 1.428 -in today's computer world, the Unix Phil is much of asceticism 1.429 +In today's computer world, the Unix Phil is often asceticism 1.430 .LP 1.431 -one needs to abjure a lot of ``nice'' features 1.432 +One needs to abjure a lot of ``nice'' features 1.433 +.LP 1.434 +Actually it is abjuring the bad solutions 1.435 .LP 1.436 IMO that leads to a valuable attitude 1.437 +.LP 1.438 +.sp 2 1.439 +Transfer it to your everyday life 1.440 1.441 1.442 -.S "avoid complexity 1.443 +.S "Avoid complexity 1.444 .LP 1.445 -avoid complexity first and foremost 1.446 +Avoid complexity first and foremost 1.447 .LP 1.448 -complexity is the ``boss enemy'', software developers fight against 1.449 +Complexity is the ``boss enemy'', software developers fight against 1.450 .LP 1.451 -strive for simplicity, clarity, generality 1.452 +Strive for simplicity, clarity, generality 1.453 +.LP 1.454 +.sp 2 1.455 +Transfer it to your everyday life 1.456 1.457 1.458 -.S "good solutions 1.459 +.S "Good solutions 1.460 .LP 1.461 -we don't need just solutions, we need good ones 1.462 +We don't need just solutions, we need good ones 1.463 .LP 1.464 -today, we can make almost everything possible, 1.465 +Today, we can make almost everything possible, 1.466 but we still cannot make it good 1.467 +.LP 1.468 +.sp 2 1.469 +Transfer it to your everyday life 1.470 1.471 1.472 -.S "live it 1.473 +.S "Live it! 1.474 .LP 1.475 -the Unix Phil is not just a few guidelines 1.476 +The Unix Phil is not just a few guidelines 1.477 .LP 1.478 -you cannot follow just some of the tenets 1.479 +You cannot follow just some of the tenets 1.480 .LP 1.481 -you will not understand the Unix Phil when you don't engage with it 1.482 +You will not understand the Unix Phil when you don't engage with it 1.483 .sp 3 1.484 .LP 1.485 .ce 1.486 -it's a philosophy \(en live it! 1.487 +It's a philosophy \(en live it! 1.488 1.489 1.490 1.491 -.P "literature 1.492 +.P "Appendix 1.493 1.494 1.495 -.S literature 1.496 +.S Literature 1.497 .I 1.498 ``\fBThe Unix Philosophy\fP'' 1.499 by Mike Gancarz 1.500 @@ -456,19 +454,22 @@ 1.501 1.502 .S 1.503 .LP 1.504 -this talk was prepared using tools of the Heirloom project: 1.505 +This talk was prepared using tools of the Heirloom project: 1.506 .CW \s-2http://heirloom.sf.net\s+2 1.507 .LP 1.508 -the slides macros are based on 1.509 +The slides macros are based on 1.510 .br 1.511 .CW \s-2http://repo.cat-v.org/troff-slider/\s+2 1.512 .sp 1.513 1.514 .LP 1.515 -the slides are available on my website 1.516 +The slides are available on my website 1.517 .CW \s-2http://marmaro.de/docs\s+2 1.518 and on 1.519 .CW \s-2http://ulm.ccc.de/ChaosSeminar/\s+2 1.520 .sp 1.521 +.LP 1.522 +See my paper on the topic, too. 1.523 1.524 +.sp 2 1.525 2010-03-08