comparison 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
comparison
equal deleted inserted replaced
23:f0511a56416e 24:2335f5658fca
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>
13
14
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
27
28
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
40
41
42
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
55
56
57
58
59
60 .P "historical background
61
62
63
64
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)
80
81
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)
96
97
98
99 .P "What is the Unix Phil
100
101
102
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
117
118
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
126
127 .LP
128 Software developments processes:
129 .I
130 few: *what* to program
131 .I
132 much: *how* to program
133
134 .sp 2
135 .LP
136 Extreme Programming is like the Unix Phil
137 but with more *how* than *what*,
138 and with formalisms
139
140
141
142
143
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)
154
155
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.
165
166
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
189
190
191
192
193 .P "The Unix Phil after Gancarz
194
195 .S "Small is beautiful.
196 .LP
197 foo
198
199
200 .S "Make each program do one thing well.
201 .LP
202 foo
203
204
205 .S "Build a prototype as soon as possible.
206 .LP
207 foo
208
209
210 .S "Choose portability over efficiency.
211 .LP
212 foo
213
214
215 .S "Store data in flat text files.
216 .LP
217 foo
218
219
220 .S "Use software leverage to your advantage.
221 .LP
222 foo
223
224
225 .S "Use shell scripts to increase leverage and portability.
226 .LP
227 foo
228
229
230 .S "Avoid captive user interfaces.
231 .LP
232 foo
233
234
235 .S "Make every program a filter.
236 .LP
237 foo
238
239
240
241
242
243 .P "real world examples
244
245
246 .S "various
247 .LP
248 who uses
249 .CW "grep -R
250 ?
251
252 .sp 1
253 .LP
254 .CW "cat -v
255
256 .sp 1
257 .LP
258 pagers are taken for granted
259
260 .sp 1
261 .LP
262 what about the readline?
263
264
265
266 .S "find -printf
267 .LP
268 How to reformat the output of find(1) to have ``FILENAME PATH''
269 instead of ``PATH/FILENAME''?
270
271 .LP
272 the ``easy'' way:
273 \f(CWfind /dir -printf "%P %h\en"\fP
274
275 .LP
276 the ``good'' way:
277 .br
278 .CW "\s-1find /dir | sed 's,\e(.*\e)/\e(.*\e),\e2 \e1,'
279
280 .LP
281 The difference shows off when one wants, for instance,
282 the path to be manipulated further.
283
284
285 .S "MH / nmh
286 .LP
287 a Mail User Agent (MUA)
288
289
290 .S "uzbl
291 .LP
292 a web browser that adheres to the Unix Phil
293
294
295
296
297
298 .P "more than software dev guidelines
299
300
301
302
303
304 .P "literature
305
306
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
320
321
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
331
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
338
339 2010-03-08