docs/unix-phil

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