docs/unix-phil

view unix-phil-slides2.ms @ 60:9934520e19af

Added tag version of seminar presentation for changeset eba2e5b8d36f
author meillo@marmaro.de
date Sun, 18 Apr 2010 10:37:24 +0200
parents 7678e37ceffc
children
line source
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>
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
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
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
73 .S Motivation
74 .rs
75 .sp
76 .LP
77 .ce
78 Write the best possible programs for yourself
79 .sp 3
80 .LP
81 .ce
82 Avoid \fBcomplexity\fP first and foremost!
83 .LP
84 .ce
85 Exploit software \fBleverage\fP!
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.
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
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
139 .sp
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
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
162 \fBComplexity\fP is the ``boss enemy'' of software developers
163 .LP
164 .ce
165 \fBLeverage\fP is the largest unique benefit of software
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
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