56
|
1 .ps 11
|
|
2 .ce
|
|
3 Seminar ``Software Analysis''
|
|
4 .TL
|
|
5 \fR\s-6Why\s0\fP
|
|
6 .br
|
|
7 the Unix Philosophy
|
|
8 .br
|
|
9 .vs -4
|
|
10 \fR\s-6still matters\s0\fP
|
|
11 .AU
|
|
12 .ft R
|
|
13 .sp .5i
|
|
14 .sp .5i
|
|
15 .ps 11
|
|
16 markus schnalke <meillo@marmaro.de>
|
|
17
|
|
18
|
58
|
19
|
56
|
20 .S "Software design
|
|
21 .rs
|
|
22 .sp
|
|
23 .LP
|
|
24 \&... is about quality
|
|
25 .I
|
|
26 Good design \(-> good quality
|
|
27 .I
|
|
28 Bad design \(-> problems
|
|
29 .sp
|
|
30 .LP
|
|
31 \&... and consistency
|
|
32 .LP
|
|
33 .sp 2
|
|
34 Unix Phil = guidelines for good design
|
|
35
|
|
36
|
|
37
|
58
|
38 .S "Unix Phil and Software dev processes
|
|
39 .rs
|
|
40 .sp
|
|
41 .LP
|
|
42 The Unix Phil:
|
|
43 .I
|
|
44 mostly *what*
|
|
45 .sp
|
|
46 .LP
|
|
47 Software dev processes:
|
|
48 .I
|
|
49 mostly *how*
|
|
50 .sp 2
|
|
51 .LP
|
|
52 Extreme Programming and the Unix Phil
|
|
53 are good friends
|
|
54
|
|
55
|
|
56
|
56
|
57 .S "The Unix Phil *itself*
|
|
58 .rs
|
|
59 .sp
|
|
60 .LP
|
|
61 Wikipedia:
|
|
62 .ce 99
|
|
63 .sp
|
|
64 The Unix philosophy is
|
|
65 a set of cultural norms and philosophical approaches
|
|
66 to developing software
|
|
67 based on the experience
|
|
68 of leading developers of the Unix operating system.
|
|
69 .sp
|
|
70
|
|
71
|
58
|
72
|
|
73 .S Motivation
|
56
|
74 .rs
|
|
75 .sp
|
|
76 .LP
|
58
|
77 .ce
|
|
78 Write the best possible programs for yourself
|
|
79 .sp 3
|
56
|
80 .LP
|
58
|
81 .ce
|
|
82 Avoid \fBcomplexity\fP first and foremost!
|
56
|
83 .LP
|
58
|
84 .ce
|
|
85 Exploit software \fBleverage\fP!
|
56
|
86
|
|
87
|
|
88
|
|
89 .S "The Unix Phil by Doug McIlroy (1978)
|
|
90 .rs
|
|
91 .sp
|
|
92 .LP
|
|
93 This is the Unix philosophy:
|
|
94 .I
|
|
95 Write programs that do one thing and do it well.
|
|
96 .I
|
|
97 Write programs to work together.
|
|
98 .I
|
|
99 Write programs to handle text streams, because that is a universal interface.
|
|
100
|
|
101
|
58
|
102
|
56
|
103 .S "The Unix Phil by Mike Gancarz (1995)
|
|
104 .rs
|
|
105 .sp .2v
|
|
106 .I
|
|
107 Small is beautiful.
|
|
108 .I
|
|
109 Make each program do one thing well.
|
|
110 .I
|
|
111 Build a prototype as soon as possible.
|
|
112 .I
|
|
113 Choose portability over efficiency.
|
|
114 .I
|
|
115 Store data in flat text files.
|
|
116 .I
|
|
117 Use software leverage to your advantage.
|
|
118 .I
|
|
119 Use shell scripts to increase leverage and portability.
|
|
120 .I
|
|
121 Avoid captive user interfaces.
|
|
122 .I
|
|
123 Make every program a filter.
|
|
124 .sp 1
|
|
125 .LP
|
|
126 Plus ten lesser tenets
|
|
127
|
|
128
|
|
129
|
|
130 .S "Case studies
|
|
131 .LP
|
|
132 .B "MH / nmh
|
|
133 .LP
|
|
134 The only MUA that is a toolchest
|
|
135 .LP
|
|
136 Makes use of the powerful shell
|
|
137 .LP
|
|
138 Great example of applied Unix Phil
|
58
|
139 .sp
|
56
|
140 .LP
|
|
141 .B uzbl
|
|
142 .LP
|
|
143 A web browser that adheres to the Unix Phil
|
|
144 .LP
|
|
145 Central question:
|
|
146 .br
|
|
147 What is the one thing a web browser should do well?
|
|
148 .LP
|
|
149 Makes very visible use of software leverage
|
|
150
|
|
151
|
|
152
|
|
153 .S "Why?
|
|
154 .rs
|
|
155 .sp
|
|
156 .LP
|
|
157 .ce
|
|
158 We don't need just any solutions, we need good ones
|
|
159 .sp 3
|
|
160 .LP
|
|
161 .ce
|
58
|
162 \fBComplexity\fP is the ``boss enemy'' of software developers
|
56
|
163 .LP
|
|
164 .ce
|
58
|
165 \fBLeverage\fP is the largest unique benefit of software
|
|
166
|
56
|
167
|
|
168
|
|
169 .S "Further reading
|
|
170 .LP
|
|
171 The paper to the slides
|
|
172 .sp
|
|
173 .LP
|
|
174 My talk on this topic at the ChaosSeminar of CCC Ulm
|
|
175 .CW \s-2http://ulm.ccc.de/ChaosSeminar/2010/03_UnixPhil\s0
|
|
176 .sp
|
|
177 .LP
|
|
178 Mike Gancarz' book
|
|
179 \fI``The Unix Philosophy''\fP
|
|
180 .sp
|
|
181 .LP
|
|
182 \fI``cat -v Considered Harmful''\fP
|
|
183 by Pike and Kernighan
|
|
184 .CW \s-2http://harmful.cat-v.org/cat-v/\s+2
|
|
185
|
|
186
|
58
|
187
|
56
|
188 .S Colophon
|
|
189 .LP
|
|
190 The paper and slides were prepared with:
|
|
191 .br
|
|
192 .CW "vi sed awk refer troff dpost spell make hg
|
|
193 .sp
|
|
194 .LP
|
|
195 Most of the tools are from
|
|
196 .CW \s-2http://heirloom.sf.net\s0
|
|
197 .LP
|
|
198 The `slides' macros are based on
|
|
199 .br
|
|
200 .CW \s-2http://repo.cat-v.org/troff-slider/\s0
|
|
201 .sp 2
|
|
202 .LP
|
|
203 The paper, the slides, and the complete sources are available on my website
|
|
204 .CW \s-2http://marmaro.de/docs\s+2
|
|
205 .sp 3
|
|
206 2010-04-16
|