docs/unix-phil
view unix-phil.ms @ 1:9b555c009f19
further text in intro
author | meillo@marmaro.de |
---|---|
date | Fri, 05 Feb 2010 14:06:43 +0100 |
parents | cecef8bfa812 |
children | fbd7baf6a61f |
line source
1 .if n .pl 1000i
2 .de XX
3 .pl 1v
4 ..
5 .em XX
6 .\".nr PI 0
7 .\".if t .nr PD .5v
8 .\".if n .nr PD 1v
9 .nr lu 0
10 .de CW
11 .nr PQ \\n(.f
12 .if t .ft CW
13 .ie \\$1 .if n .ul 999
14 .el .if n .ul 1
15 .if t .if !\\$1 \&\\$1\f\\n(PQ\\$2
16 .if n .if \\n(.$=1 \&\\$1
17 .if n .if \\n(.$>1 \&\\$1\c
18 .if n .if \\n(.$>1 \&\\$2
19 ..
20 .ds [. \ [
21 .ds .] ]
22 .\"----------------------------------------
23 .TL
24 Why the Unix Philosophy matters
25 .AU
26 markus schnalke <meillo@marmaro.de>
27 .AI
28 .ce 0
29 University Ulm
30 .AB
31 .ti \n(.iu
32 This term paper discusses the importance of the Unix Philosophy in software design.
33 Today, few software designers are aware of these concepts,
34 and thus most modern software is limited and does not use software leverage.
35 Knowing and following the tenets of the Unix Philosophy makes software more valuable.
36 .AE
38 .2C
39 .NH 1
40 Introduction
41 .LP
42 Building a software is a process from an idea of the purpose of the software
43 to the finished program.
44 No matter \fIhow\fP the process is run, two things are common:
45 the initial idea and the release.
46 But the the process inbetween can be of any shape.
47 The time of release and the maintainance work after the release are ignored here, for the moment.
48 .PP
49 The process of building splits mainly in two parts:
50 the planning of what and how to build, and implementing the plan by writing code.
51 This paper focuses on the planning \(en the design \(en of software.
52 The here discussed ideas may be applied to any development process.
53 Though the Unix Philosphy does recommend how the software development process should look like,
54 this shall not be of matter here.
55 Similar, the question of how to write the code is out of focus.
56 .PP
57 This paper discusses the connection between software design and the Unix Philosphy.
58 Software design is the work between the requirements and the plan of how the internals and externals
59 of the software should look like.
60 However, the term ``Unix Philosophy'' was used but not explained yet.
61 .PP
62 The Unix Philosophy is the essence of how the Unix operating system and its toolchest was designed.
63 It is no limited set of rules, but what people see what is common to typical Unix software.
64 Several people stated their view on the Unix Philosophy.
65 Best known are:
66 .IP \(bu
67 Doug McIlroy's summary: ``Write programs that do one thing and do it well.''
68 .[
69 %A M. D. McIlroy
70 %A E. N. Pinson
71 %A B. A. Taque
72 %T UNIX Time-Sharing System Forward
73 %J The Bell System Technical Journal
74 %D 1978
75 %V 57
76 %N 6
77 %P 1902
78 .]
79 .IP \(bu
80 Mike Gancarz' book ``The UNIX Philosophy''.
81 .[
82 %A Mike Gancarz
83 %T The UNIX Philosophy
84 %D 1995
85 %I Digital Press
86 .]
87 .IP \(bu
88 Eric S. Raymond's book ``The Art of UNIX Programming''.
89 .[
90 %A Eric S. Raymond
91 %T The Art of UNIX Programming
92 %D 2003
93 %I Addison-Wesley
94 %O .CW \s-2http://www.faqs.org/docs/artu/
95 .]
96 .LP
97 These different views on the Unix Philosophy have much in common.
98 Especially, the main concepts are seen by all of them.
99 But there are also points on which they differ.
100 This only underlines what the Unix Philosophy is:
101 A retrospective view on the main concepts of Unix software;
102 especially those that were sucessful and unique to Unix.
103 .PP
104 Before we will have a look at concrete concepts,
105 we discuss why software design is important
106 and what problems bad design introduces.
109 .NH 1
110 Importance of software design
111 .LP
112 why design at all
114 - for dev mainly: extendability and maintainability
116 - for users: usability and flexibility (but you need to learn how to use it)
118 no design and bad design limit the use of software
120 .NH 2
121 Architecture
122 .LP
123 the most important design decision.
125 the topic here
127 .NH 1
128 The Unix Philosophy
130 .NH 2
131 what it is
132 .LP
133 definitions by McIlroy, Gancarz, ESR (maybe already in the intro)
134 .LP
135 cf. unix tool chain
136 .LP
137 enabler pipe
139 .NH 2
140 Interface architecture
141 .LP
142 standalone vs. tool chain
143 .LP
144 software leverage
145 .LP
146 possiblities
148 .NH 2
149 Results
150 .LP
151 The unix phil is an answer to the sw design question
152 .LP
153 tool chains empower the uses of sw
155 .NH 1
156 Case study: nmh
158 .NH 2
159 History
160 .LP
161 MH, nmh.
162 They are old.
164 .NH 2
165 Contrasts to similar sw
166 .LP
167 vs. Thunderbird, mutt, mailx, pine
168 .LP
169 flexibility, no redundancy, use the shell
171 .NH 2
172 Gains of the design
173 .LP
175 .NH 2
176 Problems
177 .LP
179 .NH 1
180 Case study: uzbl
182 .NH 2
183 History
184 .LP
185 uzbl is young
187 .NH 2
188 Contrasts to similar sw
189 .LP
190 like with nmh
191 .LP
192 addons, plugins, modules
194 .NH 2
195 Gains of the design
196 .LP
198 .NH 2
199 Problems
200 .LP
201 broken web
203 .NH 1
204 Final thoughts
206 .NH 2
207 Quick summary
208 .LP
209 good design
210 .LP
211 unix phil
212 .LP
213 case studies
215 .NH 2
216 Why people should choose
217 .LP
218 Make the right choice!
220 .nr PI .5i
221 .rm ]<
222 .de ]<
223 .LP
224 .de FP
225 .IP \\\\$1.
226 \\..
227 .rm FS FE
228 ..
229 .SH
230 References
231 .[
232 $LIST$
233 .]
234 .wh -1p