docs/unix-phil

annotate 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
rev   line source
meillo@24 1 .TL
meillo@24 2 \fR\s-6Why\s0\fP
meillo@24 3 .br
meillo@24 4 the Unix Philosophy
meillo@24 5 .br
meillo@24 6 .vs -4
meillo@24 7 \fR\s-6(still) matters\s0\fP
meillo@24 8 .AU
meillo@24 9 .ft R
meillo@24 10 .sp 1.2i
meillo@24 11 .ps 11
meillo@24 12 markus schnalke <meillo@marmaro.de>
meillo@24 13
meillo@24 14
meillo@24 15 .S "goals of this talk
meillo@24 16 .I
meillo@24 17 introduce the Unix Phil
meillo@24 18 .I
meillo@24 19 explain why most modern software is crap
meillo@24 20 .I
meillo@24 21 explain why the Unix Phil leads to better software
meillo@24 22 .I
meillo@24 23 convince you that good software is of matter
meillo@24 24 .sp 2
meillo@24 25 .I
meillo@24 26 make you think
meillo@24 27
meillo@24 28
meillo@24 29 .S "roadmap
meillo@24 30 .I
meillo@24 31 Historical background
meillo@24 32 .I
meillo@24 33 What is the Unix Philosophy?
meillo@24 34 .I
meillo@24 35 The Unix Phil after Gancarz
meillo@24 36 .I
meillo@24 37 Discussion on real world examples
meillo@24 38 .I
meillo@24 39 The Unix Phil is more than software dev guidelines
meillo@24 40
meillo@24 41
meillo@24 42
meillo@24 43 .S "me and the UP
meillo@24 44 .LP
meillo@24 45 first contact: through the suckless project
meillo@24 46 .LP
meillo@24 47 ``cat -v Considered Harmful''
meillo@24 48 .LP
meillo@24 49 ``The Unix and the Echo''
meillo@24 50 .LP
meillo@24 51 ``The Unix Programming Environment''
meillo@24 52 .sp 1
meillo@24 53 .LP
meillo@24 54 better understanding through digging in the past
meillo@24 55
meillo@24 56
meillo@24 57
meillo@24 58
meillo@24 59
meillo@24 60 .P "historical background
meillo@24 61
meillo@24 62
meillo@24 63
meillo@24 64
meillo@24 65 .S "historical background
meillo@24 66 .I
meillo@24 67 the late 60s and early 70s
meillo@24 68 .I
meillo@24 69 operating systems are complex
meillo@24 70 .I
meillo@24 71 MULTICS just failed
meillo@24 72 .I
meillo@24 73 Brooks' ``The Mythical Man-Month''
meillo@24 74 .I
meillo@24 75 a lot of different hardware
meillo@24 76 .I
meillo@24 77 limited computing power
meillo@24 78 .I
meillo@24 79 textual input and output (line printers)
meillo@24 80
meillo@24 81
meillo@24 82 .S "everything is a file
meillo@24 83 .LP
meillo@24 84 is the(?) basic concept in Unix (and even more in Plan9)
meillo@24 85 .LP
meillo@24 86 made simple operating systems possible
meillo@24 87 .LP
meillo@24 88 it is not covered by the Unix Phil; the Unix Phil is on a different level
meillo@24 89 .sp 2
meillo@24 90 .LP
meillo@24 91 Unix is mainly two things:
meillo@24 92 .I
meillo@24 93 an operating system (system calls)
meillo@24 94 .I
meillo@24 95 a toolchest (coreutils)
meillo@24 96
meillo@24 97
meillo@24 98
meillo@24 99 .P "What is the Unix Phil
meillo@24 100
meillo@24 101
meillo@24 102
meillo@24 103 .S "What is the Unix Phil *itself*?
meillo@24 104 .LP
meillo@24 105 ``The Unix philosophy is a set of cultural norms and philosophical
meillo@24 106 approaches to developing software based on the experience of
meillo@24 107 leading developers of the Unix operating system.''
meillo@24 108 (wikipedia)
meillo@24 109 .sp 2
meillo@24 110 .LP
meillo@24 111 How the inventors of Unix write software.
meillo@24 112 .LP
meillo@24 113 Common things of classic Unix tools.
meillo@24 114 .sp 2
meillo@24 115 .LP
meillo@24 116 difficult to define
meillo@24 117
meillo@24 118
meillo@24 119 .S "Unix Phil vs. SW dev processes
meillo@24 120 .LP
meillo@24 121 the Unix Phil
meillo@24 122 .I
meillo@24 123 much: *what* to program
meillo@24 124 .I
meillo@24 125 few: *how* to program
meillo@24 126
meillo@24 127 .LP
meillo@24 128 Software developments processes:
meillo@24 129 .I
meillo@24 130 few: *what* to program
meillo@24 131 .I
meillo@24 132 much: *how* to program
meillo@24 133
meillo@24 134 .sp 2
meillo@24 135 .LP
meillo@24 136 Extreme Programming is like the Unix Phil
meillo@24 137 but with more *how* than *what*,
meillo@24 138 and with formalisms
meillo@24 139
meillo@24 140
meillo@24 141
meillo@24 142
meillo@24 143
meillo@24 144 .S "What is the Unix Phil?
meillo@24 145 .I
meillo@24 146 Doug McIlroy (1978)
meillo@24 147 .I
meillo@24 148 Mike Gancarz: ``The Unix Philosophy'' (1994)
meillo@24 149 .I
meillo@24 150 Eric S. Raymond: ``The Art of Unix Programming'' (2003)
meillo@24 151 .sp 2
meillo@24 152 .I
meillo@24 153 Richard Gabriel: ``Worse is Better'' (1989)
meillo@24 154
meillo@24 155
meillo@24 156 .S "Doug McIlroy
meillo@24 157 .LP
meillo@24 158 This is the Unix philosophy:
meillo@24 159 .I
meillo@24 160 Write programs that do one thing and do it well.
meillo@24 161 .I
meillo@24 162 Write programs to work together.
meillo@24 163 .I
meillo@24 164 Write programs to handle text streams, because that is a universal interface.
meillo@24 165
meillo@24 166
meillo@24 167 .S "Mike Gancarz: ``The Unix Philosophy''
meillo@24 168 .I
meillo@24 169 Small is beautiful.
meillo@24 170 .I
meillo@24 171 Make each program do one thing well.
meillo@24 172 .I
meillo@24 173 Build a prototype as soon as possible.
meillo@24 174 .I
meillo@24 175 Choose portability over efficiency.
meillo@24 176 .I
meillo@24 177 Store data in flat text files.
meillo@24 178 .I
meillo@24 179 Use software leverage to your advantage.
meillo@24 180 .I
meillo@24 181 Use shell scripts to increase leverage and portability.
meillo@24 182 .I
meillo@24 183 Avoid captive user interfaces.
meillo@24 184 .I
meillo@24 185 Make every program a filter.
meillo@24 186 .sp 1
meillo@24 187 .LP
meillo@24 188 plus ten lesser tenets
meillo@24 189
meillo@24 190
meillo@24 191
meillo@24 192
meillo@24 193 .P "The Unix Phil after Gancarz
meillo@24 194
meillo@24 195 .S "Small is beautiful.
meillo@24 196 .LP
meillo@24 197 foo
meillo@24 198
meillo@24 199
meillo@24 200 .S "Make each program do one thing well.
meillo@24 201 .LP
meillo@24 202 foo
meillo@24 203
meillo@24 204
meillo@24 205 .S "Build a prototype as soon as possible.
meillo@24 206 .LP
meillo@24 207 foo
meillo@24 208
meillo@24 209
meillo@24 210 .S "Choose portability over efficiency.
meillo@24 211 .LP
meillo@24 212 foo
meillo@24 213
meillo@24 214
meillo@24 215 .S "Store data in flat text files.
meillo@24 216 .LP
meillo@24 217 foo
meillo@24 218
meillo@24 219
meillo@24 220 .S "Use software leverage to your advantage.
meillo@24 221 .LP
meillo@24 222 foo
meillo@24 223
meillo@24 224
meillo@24 225 .S "Use shell scripts to increase leverage and portability.
meillo@24 226 .LP
meillo@24 227 foo
meillo@24 228
meillo@24 229
meillo@24 230 .S "Avoid captive user interfaces.
meillo@24 231 .LP
meillo@24 232 foo
meillo@24 233
meillo@24 234
meillo@24 235 .S "Make every program a filter.
meillo@24 236 .LP
meillo@24 237 foo
meillo@24 238
meillo@24 239
meillo@24 240
meillo@24 241
meillo@24 242
meillo@24 243 .P "real world examples
meillo@24 244
meillo@24 245
meillo@24 246 .S "various
meillo@24 247 .LP
meillo@24 248 who uses
meillo@24 249 .CW "grep -R
meillo@24 250 ?
meillo@24 251
meillo@24 252 .sp 1
meillo@24 253 .LP
meillo@24 254 .CW "cat -v
meillo@24 255
meillo@24 256 .sp 1
meillo@24 257 .LP
meillo@24 258 pagers are taken for granted
meillo@24 259
meillo@24 260 .sp 1
meillo@24 261 .LP
meillo@24 262 what about the readline?
meillo@24 263
meillo@24 264
meillo@24 265
meillo@24 266 .S "find -printf
meillo@24 267 .LP
meillo@24 268 How to reformat the output of find(1) to have ``FILENAME PATH''
meillo@24 269 instead of ``PATH/FILENAME''?
meillo@24 270
meillo@24 271 .LP
meillo@24 272 the ``easy'' way:
meillo@24 273 \f(CWfind /dir -printf "%P %h\en"\fP
meillo@24 274
meillo@24 275 .LP
meillo@24 276 the ``good'' way:
meillo@24 277 .br
meillo@24 278 .CW "\s-1find /dir | sed 's,\e(.*\e)/\e(.*\e),\e2 \e1,'
meillo@24 279
meillo@24 280 .LP
meillo@24 281 The difference shows off when one wants, for instance,
meillo@24 282 the path to be manipulated further.
meillo@24 283
meillo@24 284
meillo@24 285 .S "MH / nmh
meillo@24 286 .LP
meillo@24 287 a Mail User Agent (MUA)
meillo@24 288
meillo@24 289
meillo@24 290 .S "uzbl
meillo@24 291 .LP
meillo@24 292 a web browser that adheres to the Unix Phil
meillo@24 293
meillo@24 294
meillo@24 295
meillo@24 296
meillo@24 297
meillo@24 298 .P "more than software dev guidelines
meillo@24 299
meillo@24 300
meillo@24 301
meillo@24 302
meillo@24 303
meillo@24 304 .P "literature
meillo@24 305
meillo@24 306
meillo@24 307 .S literature
meillo@24 308 .I
meillo@24 309 ``\fBText Processing and Typesetting with Unix\fP''
meillo@24 310 by Barron and Rees
meillo@24 311 explains everything pretty good (focus on
meillo@24 312 .CW nroff )
meillo@24 313 .I
meillo@24 314 ``\fBHeirloom Documentation Tools Nroff/Troff User's Manual\fP''
meillo@24 315 by Ossanna, Kernighan, and Ritter
meillo@24 316 is more a technical reference
meillo@24 317 .I
meillo@24 318 Various documents collected on
meillo@24 319 .CW \s-2http://troff.org\s+2
meillo@24 320
meillo@24 321
meillo@24 322 .S
meillo@24 323 .LP
meillo@24 324 this talk was prepared using tools of the Heirloom project:
meillo@24 325 .CW \s-2http://heirloom.sf.net\s+2
meillo@24 326 .LP
meillo@24 327 the slides macros are based on
meillo@24 328 .br
meillo@24 329 .CW \s-2http://repo.cat-v.org/troff-slider/\s+2
meillo@24 330 .sp
meillo@24 331
meillo@24 332 .LP
meillo@24 333 the slides are available on my website
meillo@24 334 .CW \s-2http://marmaro.de/docs\s+2
meillo@24 335 and on
meillo@24 336 .CW \s-2http://ulm.ccc.de/ChaosSeminar/\s+2
meillo@24 337 .sp
meillo@24 338
meillo@24 339 2010-03-08