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