docs/master

view preface.roff @ 235:e58400695ae2

Added tag final version for changeset 348b92755bef
author markus schnalke <meillo@marmaro.de>
date Mon, 16 Jul 2012 11:25:04 +0200
parents e526e3cb85d3
children
line source
1 .H0 "Preface" no
3 .P
4 I have discovered the mail client \fInmh\fP
5 in fall 2009.
6 At that time I used \fImutt\fP,
7 as many advanced Unix users do.
8 When I read about nmh, its concepts convinced me at once.
9 The transition from mutt to nmh was similar to beginning with
10 file management in the Unix shell when being used to the
11 \fImidnight commander\fP,
12 or like starting with vi when being used to modeless editors.
13 Such a change is not trivial, but, in being convinced by the
14 concepts and by having done similar transitions for file management
15 and editing already, it was not too difficult.
16 In contrast, setting up nmh to a convenient state became a tedious task
17 that took several months.
18 Once having nmh arranged this way, I enjoyed using it
19 because of its conceptional elegance and its scripting capabilities.
20 Nevertheless, it was still inconvenient for handling attachments,
21 non-ASCII character encodings, and similar features of modern emailing.
22 My setup demanded more and more additional configuration and helper scripts
23 to have nmh behave the way I wanted; yet my
24 expectations were rather common for modern emailing.
25 As a computer scientist and programmer, I wanted to improve the situation.
26 .P
27 In spring 2010, I sent a message
28 .[
29 nmh-workers gsoc
30 .]
31 to the \fInmh-workers\fP mailing list,
32 .[
33 nmh-workers mailing list website
34 .]
35 asking for the possibility to offer a Google Summer of Code
36 .[
37 google summer of code website
38 .]
39 project for me.
40 Participating in the development of nmh in this manner appeared attractive
41 to me, because I would have been able to work full time on nmh.
42 Although the nmh community had reacted generally positive to the suggestion,
43 the administrative work for such a project would had been too much.
44 Nonetheless, my proposal had activated the nmh community.
45 In the following weeks, goals for nmh's future were discussed.
46 In these discussions, I became involved in the
47 question whether nmh should include mail transfer facilities.
48 .[
49 nmh-workers thread mta mua
50 .]
51 I argued for the Mail Transfer Agent of nmh to be removed.
52 In this fundamental question,
53 my opinion differed from the opinion of most others.
54 Sadly, besides the discussions, hardly any real work was done.
55 Being unable to work on nmh in a way that would be accepted at university
56 as part of my studies, I needed to choose another project.
57 .P
58 Half a year later, starting in August 2010,
59 I took one semester off to travel through Latin America.
60 During my time in Argentina, I wanted to work on free software.
61 This brought me back to nmh.
62 Richard Sandelman, an active nmh user, took care of the official basis.
63 Juan Granda, an Argentine free software developer,
64 organized a computer with Internet connection.
65 Thanks to them, I was able to work on nmh during my three-month
66 stay in Santiago del Estero, Argentina.
67 Quickly it became obvious that I would not succeed with my main goal,
68 to improve the character encoding handling.
69 (One of its ramifications is the
70 missing transfer decoding of quoted text in replies.)
71 As this is one of the most intricate parts of the system, the goal
72 was simply set too high.
73 Instead, I improved the code base as I read through it.
74 I found minor bugs for which I proposed fixes.
75 Additionally, I improved the documentation in minor ways.
76 When I started to work on larger code changes,
77 I had to discover that the community was reluctant to change.
78 Its wish for compatibility was much stronger than its
79 wish for convenient out-of-the-box setups \(en in contrast to my opinion.
80 Once again, this led to long discussions.
81 I came to understand their point of view, but it is different from mine.
82 At the end of my three-month project, I had become familiar with
83 nmh's code base and community,
84 I had improved the project in minor ways,
85 and I still was convinced that I wanted to continue to do so.
86 .P
87 Another half year later, the end of my studies came within reach.
88 I needed to choose a topic for my master's thesis.
89 Without question, I wanted to work on nmh.
90 But not exactly on nmh, because I had accepted that its
91 community has different goals than I have.
92 Working on nmh would result in much discussion and, in consequence,
93 little progress.
94 After careful thought, I decided to start an experimental version of nmh.
95 I wanted to implement my own ideas of how an MH-like system should
96 look like.
97 I wanted to create a usable alternative version to be compared with
98 the present state of nmh.
99 Eventually, my work would be proven successful or not.
100 In any case, the nmh project would profit from my experiences.
102 .U2 "Focus of this Document
103 .P
104 This document explains the design goals and implementation decisions
105 for mmh,
106 an experimental version of nmh.
107 It discusses technical, historical, social and philosophical considerations.
108 On the technical side, this document
109 explains how an existing project was streamlined by removing rough edges
110 and better exploitation of the central concepts.
111 On the historical side, changes through time are discussed,
112 regarding the use cases and the email features,
113 as well as the reactions to them.
114 Socially, this document describes the effects
115 and experiences of a newcomer with revolutionary aims entering an old
116 and matured software project.
117 Philosophical thoughts on style, mainly based on the Unix
118 philosophy, are present throughout the discussions.
119 The document describes the changes to nmh,
120 but as well, it clarifies my personal perception of the
121 concepts of MH and Unix, and explain my therefrom resulting point of view.
122 .P
123 This document is written for the community around MH-like mail systems,
124 including developers and users.
125 Despite the focus on MH-like systems, this document may be valuable
126 to anyone interested in the Unix philosophy and anyone in contact with
127 old software projects, be it code- or community-related.
128 .P
129 The reader is expected to be familiar with Unix, C and emailing.
130 Good Unix shell knowledge is required, because MH relies fundamentally
131 on the shell.
132 Without the power of the shell, MH becomes a motorcycle
133 without winding roads: boring.
134 Introductions to Unix and its shell can be found in \fIThe UNIX Programming
135 Environment\fP by Kernighan and Pike
136 .[
137 kernighan pike unix prog env
138 .]
139 or \fIThe UNIX System\fP by Bourne.
140 .[
141 bourne unix system
142 .]
143 The reader is assumed to be a C programmer,
144 but the document should be understandable otherwise, too.
145 The definitive guide to C is Kernighan and Ritchie's
146 \fIThe C Programming Language\fP.
147 .[
148 kernighan ritchie c prog lang
149 .]
150 A book about system-level C programming, such as those written by
151 Rochkind and Curry,
152 .[
153 rochkind advanced unix prog
154 .]
155 .[
156 curry system prog
157 .]
158 can be helpful as additional literature.
159 Old books are likely more helpful for understanding,
160 because large parts of the source code are old.
161 The reader is expected to know the format of email messages and
162 the structure of email transfer systems, at least on a basic level.
163 It's advisable to have cross-read RFC\|821 and RFC\|822.
164 Furthermore, basic understanding of MIME [RFC\|2045\(en2049]
165 is good to have.
166 The Wikipedia provides good introduction-level information about email.
167 .[
168 wikipedia email
169 .]
170 .P
171 Frequent references to the Unix philosophy will be made.
172 Gancarz has tried to sum it up in his book
173 \fIThe UNIX Philosophy\fP.
174 .[
175 gancarz unix phil
176 .]
177 Even better, though less concrete, are \fIThe UNIX Programming
178 Environment\fP
179 .[
180 kernighan pike unix prog env
181 .]
182 and \fIThe Practice of Programming\fP
183 .[
184 kernighan pike practice of prog
185 .]
186 by Kernighan and Pike.
187 The term paper \fIWhy the Unix Philosophy still matters\fP
188 .[
189 why unix phil still matters schnalke
190 .]
191 by myself provides an overview on the philosophy,
192 including a case study of MH.
193 .P
194 Although a brief introduction to MH is provided in Section
195 .Cf mh ,
196 the reader is encouraged to have a look at
197 \fIMH & nmh: Email for Users & Programmers\fP by Jerry Peek.
198 .[
199 peek mh
200 .]
201 The current version is available freely on the Internet.
202 It is the definitive guide to MH and nmh.
203 .P
204 This document is neither a user's tutorial to mmh nor an introduction
205 to any of the topics covered.
206 The technical discussions are on an advanced level.
207 Nevertheless, as knowledge of the fundamental concepts is the most valuable
208 information a user can acquire about some program or software system,
209 this document may be worth a read for non-developers as well.
212 .U2 "Organization
213 .P
214 This thesis consists of three chapters.
215 Chapter 1 introduces into the topic, describing MH and explaining
216 the background and goals of the mmh project.
217 Chapter 2 discusses the work done in the project.
218 It is organized along the three major goals of the project, namely
219 streamlining, modernizing, and styling.
220 Not every change is described because that would bore the reader.
221 Instead, important changes and those standing for a set of similar
222 changes are described and discussed.
223 Chapter 3 finishes up by summarizing the achievements and taking
224 a look into the future of the mmh project.
225 .P
226 .I "Italic
227 font is used for names of software projects, literature, and man pages,
228 as well as to emphasize new terms.
229 .CW "Constant width
230 font is used to denote names of programs, files, functions,
231 command lines, code excerpts, program input and output, and the like.
232 .P
233 References to man pages are printed as ``\c
234 .Mp cat (1)'',
235 which is a reference to the man page of
236 .Pn cat
237 in section one of the Unix manual.
238 \fIRequests for Comments\fP (RFCs), which describe the working
239 of the Internet, are referenced as ``RFC\|821''.
240 Literature is cited in brackets, such as
241 .[ ``[
242 kernighan pike unix programming env
243 .]]''.
244 Citations of email messages and websites are distinguished by
245 ``mail:'' and ``web:'' prefixes.
246 All references are collected at the end of the document.
247 Links to the software projects mentioned throughout
248 the text are collected there as well.
249 .P
250 This document describes practical programming work.
251 The code of mmh is managed with the
252 .Pn git
253 version control system.
254 All code changes were checked in.
255 In the discussions, references to corresponding code changes are printed
256 as ``\c
257 .Ci 1a2b3c4 ''.
258 The identifier is the seven-letter-prefix of the changeset's hash value,
259 which is considered unique.
260 Any change can be looked up in the repository, using the command line
261 .Cl "git show 1234567" .
262 (`\f(CW1234567\fP' needs to be replaced with the concrete hash value.)
263 At the time of writing, changesets could be looked up online at:
264 .CW "http://git.marmaro.de/?p=mmh;a=commitdiff;h=1234567" \|.
265 But as we all know, URIs are always at risk to change.
268 .U2 "Acknowledgments
269 .P
270 Prof. Dr. Schweiggert and Dr. Borchert, you made my work
271 possible with your believe in the relevance of this topic.
272 I enjoyed my time studying in Ulm in the environment around you.
273 For me, this had been just the right place to be.
274 You have enriched my studies greatly and
275 I have learned a lot from you both.
276 Thank you.
277 .sp
278 .P
279 This thesis is my own work, but it would be in much poorer shape
280 without the help of friends.
281 They spotted errors, bad explanations, weak argumentations,
282 and clumsy sentences.
283 Their comments and suggestions shaped this document;
284 they made it focused and comprehensive.
285 .P
286 The lady comes first, but not for that reason alone.
288 .IP "Katja Rogers
289 Your help concerning the English language and writing in general
290 was outstanding.
291 The reader will surely recognize the sentences I have never showed to you.
293 .IP "Dominik Lang
294 You were mmh's first user and you were convinced of it at once.
295 That was great!
296 Thanks for your feedback and suggestions regarding mmh,
297 as well as for improving this document.
299 .IP "Michael M\[udieresis]ller
300 Thanks for your corrections, comments,
301 and for the discussions on typography.
303 .IP "Matthias Matousek
304 Thanks for your corrections, comments,
305 and for sharing your ``living room''.
307 .IP "Boris Kraut
308 Thanks for your corrections, comments,
309 and for the idea to use an adjusted mmh setup as an address book.
311 .IP "Aaron M\[udieresis]ller
312 You have surprised me by proposing yourself to being a proof reader.
313 Thanks for your valuable annotations and quick responses.
315 .IP "Marius Gl\[odieresis]ggler and Martina Schnalke
316 You have covered the tedious tasks of double-checking the
317 changeset references and the bibliography, respectively.
318 Thank you.
320 .sp
321 .LP
322 My family supported me in times when I was busy;
323 Jean-Luc Picard and his crew took me on diverting
324 space adventures in my lazy times.
326 .sp
327 .P
328 Yet, no one of the aforementioned persons is connected to my work
329 as close as Lydi is. \(em
330 All those days, already in Argentina, when I was working long hours and
331 even on holidays instead of spending time with you.
332 All the explanations of always the same doubts and difficulties
333 I suffered from, and you just listened.
334 All the delays near the end of my work though you have wished for
335 an earlier finish.
336 In spite of it all, you knew what it meant to me.
337 .P
338 Danke f\[udieresis]r dein Verst\[adieresis]ndnis.