comparison preface.roff @ 197:05a243dffaca

Added refs to the Preface; splitted the bib.
author markus schnalke <meillo@marmaro.de>
date Thu, 12 Jul 2012 00:39:41 +0200
parents eb6eeb10afd5
children 5cd9bacdfcd3
comparison
equal deleted inserted replaced
196:a75de0da2fb7 197:05a243dffaca
1 .H0 "Preface" no 1 .H0 "Preface" no
2 2
3 .P 3 .P
4 I have discovered the mail client \fInmh\fP in fall 2009. 4 I have discovered the mail client \fInmh\fP
5 At that time I used \fImutt\fP, as many advanced Unix users do. 5 .[
6 nmh website homepage
7 .]
8 in fall 2009.
9 At that time I used \fImutt\fP,
10 .[
11 mutt website
12 .]
13 as many advanced Unix users do.
6 When I read about nmh, its concepts convinced me at once. 14 When I read about nmh, its concepts convinced me at once.
7 The transition from mutt to nmh was similar to beginning with 15 The transition from mutt to nmh was similar to beginning with
8 file management in the Unix shell when being used to the 16 file management in the Unix shell when being used to the
9 \fImidnight commander\fP, 17 \fImidnight commander\fP,
18 .[
19 midnight commander website
20 .]
10 or like starting with vi when being used to modeless editors. 21 or like starting with vi when being used to modeless editors.
11 Such a change is not trivial, but, in being convinced by the 22 Such a change is not trivial, but, in being convinced by the
12 concepts and by having done similar transitions for file management 23 concepts and by having done similar transitions for file management
13 and editing already, it was not too difficult. 24 and editing already, it was not too difficult.
14 In contrast, setting up nmh to a convenient state became a tedious task 25 In contrast, setting up nmh to a convenient state became a tedious task
20 My setup demanded more and more additional configuration and helper scripts 31 My setup demanded more and more additional configuration and helper scripts
21 to have nmh behave the way I wanted; yet my 32 to have nmh behave the way I wanted; yet my
22 expectations were rather common for modern emailing. 33 expectations were rather common for modern emailing.
23 As a computer scientist and programmer, I wanted to improve the situation. 34 As a computer scientist and programmer, I wanted to improve the situation.
24 .P 35 .P
25 In spring 2010, I sent a message to the \fInmh-workers\fP mailing list, 36 In spring 2010, I sent a message
26 asking for the possibility to offer a Google Summer of Code project for me. 37 .[
38 nmh-workers gsoc
39 .]
40 to the \fInmh-workers\fP mailing list,
41 .[
42 nmh-workers mailing list website
43 .]
44 asking for the possibility to offer a Google Summer of Code
45 .[
46 google summer of code website
47 .]
48 project for me.
27 Participating in the development of nmh in this manner appeared attractive 49 Participating in the development of nmh in this manner appeared attractive
28 to me, because I would have been able to work full time on nmh. 50 to me, because I would have been able to work full time on nmh.
29 Although the nmh community had reacted generally positive to the suggestion, 51 Although the nmh community had reacted generally positive to the suggestion,
30 the administrative work for such a project would had been too much. 52 the administrative work for such a project would had been too much.
31 Nonetheless, my proposal had activated the nmh community. 53 Nonetheless, my proposal had activated the nmh community.
33 In these discussions, I became involved in the 55 In these discussions, I became involved in the
34 question whether nmh should include mail transfer facilities. 56 question whether nmh should include mail transfer facilities.
35 .[ 57 .[
36 nmh-workers thread mta mua 58 nmh-workers thread mta mua
37 .] 59 .]
38 I argued for the MTA of nmh to be removed. 60 I argued for the Mail Transfer Agent of nmh to be removed.
39 In this fundamental question, 61 In this fundamental question,
40 my opinion differed from the opinion of most others. 62 my opinion differed from the opinion of most others.
41 Sadly, besides the discussions, hardly any real work was done. 63 Sadly, besides the discussions, hardly any real work was done.
42 Being unable to work on nmh in a way that would be accepted at university 64 Being unable to work on nmh in a way that would be accepted at university
43 as part of my studies, I needed to choose another project. 65 as part of my studies, I needed to choose another project.
46 I took one semester off to travel through Latin America. 68 I took one semester off to travel through Latin America.
47 During my time in Argentina, I wanted to work on free software. 69 During my time in Argentina, I wanted to work on free software.
48 This brought me back to nmh. 70 This brought me back to nmh.
49 Richard Sandelman, an active nmh user, took care of the official basis. 71 Richard Sandelman, an active nmh user, took care of the official basis.
50 Juan Granda, an Argentine free software developer, 72 Juan Granda, an Argentine free software developer,
51 provided a computer with Internet connection. 73 organized a computer with Internet connection.
52 Thanks to them, I was able to work on nmh during my three-month 74 Thanks to them, I was able to work on nmh during my three-month
53 stay in Santiago del Estero, Argentina. 75 stay in Santiago del Estero, Argentina.
54 Quickly it became obvious that I would not succeed with my main goal, 76 Quickly it became obvious that I would not succeed with my main goal,
55 to improve the character encoding handling. 77 to improve the character encoding handling.
56 (One of its ramifications is the 78 (One of its ramifications is the
58 As this is one of the most intricate parts of the system, the goal 80 As this is one of the most intricate parts of the system, the goal
59 was simply set too high. 81 was simply set too high.
60 Instead, I improved the code base as I read through it. 82 Instead, I improved the code base as I read through it.
61 I found minor bugs for which I proposed fixes. 83 I found minor bugs for which I proposed fixes.
62 Additionally, I improved the documentation in minor ways. 84 Additionally, I improved the documentation in minor ways.
63 When I started with larger code changes, 85 When I started to work on larger code changes,
64 I had to discover that the community was reluctant to change. 86 I had to discover that the community was reluctant to change.
65 Its wish for compatibility was much stronger than its 87 Its wish for compatibility was much stronger than its
66 wish for convenient out-of-the-box setups \(en in contrast to my opinion. 88 wish for convenient out-of-the-box setups \(en in contrast to my opinion.
67 This, once again, led to long discussions. 89 This, once again, led to long discussions.
68 I came to understand their point of view, but it was different to mine. 90 I came to understand their point of view, but it was different to mine.
70 nmh's code base and community, 92 nmh's code base and community,
71 I had improved the project in minor ways, 93 I had improved the project in minor ways,
72 and I still was convinced that I wanted to continue to do so. 94 and I still was convinced that I wanted to continue to do so.
73 .P 95 .P
74 Another half year later, the end of my studies came within reach. 96 Another half year later, the end of my studies came within reach.
75 I needed a topic for my master's thesis. 97 I needed to choose a topic for my master's thesis.
76 Without question, I wanted to work on nmh. 98 Without question, I wanted to work on nmh.
77 But not exactly on nmh, because I had accepted that its 99 But not exactly on nmh, because I had accepted that its
78 community has different goals than I have. 100 community has different goals than I have.
79 Working on nmh would result in much discussion and, in consequence, 101 Working on nmh would result in much discussion and, in consequence,
80 little progress. 102 little progress.
81 After careful thought, I decided to start an experimental version of nmh. 103 After careful thought, I decided to start an experimental version of nmh.
82 I wanted to implement my own ideas of how an MH-like system should look like. 104 I wanted to implement my own ideas of how an MH-like system should
105 look like.
83 I wanted to create a usable alternative version to be compared with 106 I wanted to create a usable alternative version to be compared with
84 the present state of nmh. 107 the present state of nmh.
85 Eventually, my work would be proven successful or not. 108 Eventually, my work would be proven successful or not.
86 In any case, the nmh project would profit from my experiences. 109 In any case, the nmh project would profit from my experiences.
87 110
88 .U2 "Focus of this Document 111 .U2 "Focus of this Document
89 .P 112 .P
90 This document explains the design goals and implementation decisions 113 This document explains the design goals and implementation decisions
91 for mmh. 114 for mmh,
92 .\" XXX mmh taucht hier zum ersten mal auf. 115 .[
116 mmh website homepage
117 .]
118 an experimental version of nmh.
93 It discusses technical, historical, social and philosophical considerations. 119 It discusses technical, historical, social and philosophical considerations.
94 On the technical side, this document 120 On the technical side, this document
95 explains how an existing project was streamlined by removing rough edges 121 explains how an existing project was streamlined by removing rough edges
96 and better exploitation of the central concepts. 122 and better exploitation of the central concepts.
97 On the historical side, changes through time are discussed, 123 On the historical side, changes through time are discussed,
112 to anyone interested in the Unix philosophy and anyone in contact with 138 to anyone interested in the Unix philosophy and anyone in contact with
113 old software projects, be it code- or community-related. 139 old software projects, be it code- or community-related.
114 .P 140 .P
115 The reader is expected to be familiar with Unix, C and emailing. 141 The reader is expected to be familiar with Unix, C and emailing.
116 Good Unix shell knowledge is required, because MH relies fundamentally 142 Good Unix shell knowledge is required, because MH relies fundamentally
117 on the shell. Without the power of the shell, MH becomes a motorcycle 143 on the shell.
144 Without the power of the shell, MH becomes a motorcycle
118 without winding roads: boring. 145 without winding roads: boring.
119 Introductions to Unix and its shell can be found in \fIThe UNIX Programming 146 Introductions to Unix and its shell can be found in \fIThe UNIX Programming
120 Environment\fP by Kernighan and Pike 147 Environment\fP by Kernighan and Pike
121 .[ 148 .[
122 kernighan pike unix prog env 149 kernighan pike unix prog env
143 can be helpful as additional literature. 170 can be helpful as additional literature.
144 Old books are likely more helpful for understanding, 171 Old books are likely more helpful for understanding,
145 because large parts of the source code are old. 172 because large parts of the source code are old.
146 The reader is expected to know the format of email messages and 173 The reader is expected to know the format of email messages and
147 the structure of email transfer systems, at least on a basic level. 174 the structure of email transfer systems, at least on a basic level.
148 It's advisable to have cross-read the RFCs 821 and 822. 175 It's advisable to have cross-read RFC\|821 and RFC\|822.
149 Furthermore, basic understanding of MIME is good to have. 176 Furthermore, basic understanding of MIME (RFC\|2045\(en2049)
177 is good to have.
150 The Wikipedia provides good introduction-level information about email. 178 The Wikipedia provides good introduction-level information about email.
179 .[
180 wikipedia email
181 .]
151 .P 182 .P
152 Frequent references to the Unix philosophy will be made. 183 Frequent references to the Unix philosophy will be made.
153 Gancarz has tried to sum it up in his book 184 Gancarz has tried to sum it up in his book
154 \fIThe UNIX Philosophy\fP. 185 \fIThe UNIX Philosophy\fP.
155 .[ 186 .[
167 by Kernighan and Pike. 198 by Kernighan and Pike.
168 The term paper \fIWhy the Unix Philosophy still matters\fP 199 The term paper \fIWhy the Unix Philosophy still matters\fP
169 .[ 200 .[
170 why unix phil still matters schnalke 201 why unix phil still matters schnalke
171 .] 202 .]
172 by myself 203 by myself provides an overview on the philosophy,
173 provides an overview on the philosophy, including a case study of MH. 204 including a case study of MH.
174 .P 205 .P
175 Although a brief introduction to MH is provided in Chapter 1, the reader 206 Although a brief introduction to MH is provided in Section
176 is encouraged to have a look at the \fIMH Book\fP 207 .Cf mh ,
208 the reader is encouraged to have a look at
177 \fIMH & nmh: Email for Users & Programmers\fP by Jerry Peek. 209 \fIMH & nmh: Email for Users & Programmers\fP by Jerry Peek.
178 .[ 210 .[
179 peek mh 211 peek mh
180 .] 212 .]
181 The current version is available freely on the Internet. 213 The current version is available freely on the Internet.
202 changes are described and discussed. 234 changes are described and discussed.
203 Chapter 3 finishes up by summarizing the achivements and taking 235 Chapter 3 finishes up by summarizing the achivements and taking
204 a look into the future of the mmh project. 236 a look into the future of the mmh project.
205 .P 237 .P
206 .I "Italic font 238 .I "Italic font
207 is used to emphasize new terms, and to name software projects and 239 is used to emphasize new terms, and for names of software projects,
208 man pages. 240 literature, and man pages.
209 .CW "Constant width font 241 .CW "Constant width font
210 is used to denote names of programs, files, 242 is used to denote names of programs, files,
211 functions, command lines, code excrepts, program input and output. 243 functions, command lines, code excrepts, program input and output.
212 .P 244 .P
213 References to man pages are printed as ``\c 245 References to man pages are printed as ``\c
214 .Mp cat (1)''. 246 .Mp cat (1)''.
215 In this case it is a reference to the man page of 247 In this case it is a reference to the man page of
216 .Pn cat , 248 .Pn cat ,
217 which is in section one of the Unix manual. 249 which is in section one of the Unix manual.
218 Internet technologies are specified by \fIRequests for Comments\fP (RFCs). 250 Internet technologies are specified by \fIRequests for Comments\fP (RFCs).
219 Throughout the document, they are referenced in this way ``RFC\|822''. 251 Throughout the document, they are referenced as ``RFC\|821''.
220 A list of relevant RFCs is located at the end of the document. 252 A list of relevant RFCs is located at the end of the document.
221 References to literature are printed in backets, like 253 Literature is cited in backets, such as
222 .[ ``[ 254 .[ ``[
223 kernighan pike unix programming env 255 kernighan pike unix programming env
224 .]]'', within the text. 256 .]]''.
225 The full references are collected at the end of the document. 257 Citations of email messages and websites are in the same style
258 but distinguished by a prefix.
259 For example:
260 .[ ``[
261 website mmh
262 .]]''
263 and
264 .[ ``[
265 nmh-workers mmh announce
266 .]]''.
267 All references are collected at the end of the document.
226 .P 268 .P
227 This document describes practical programming work. 269 This document describes practical programming work.
228 The code of mmh is managed by the 270 The code of mmh is managed with the
229 .Pn git 271 .Pn git
230 version control system. 272 version control system.
273 .[
274 git website
275 .]
231 All code changes were checked in. 276 All code changes were checked in.
232 In the discussions, references to corresponding code changes are printed 277 In the discussions, references to corresponding code changes are printed
233 as ``\c 278 as ``\c
234 .Ci 1a2b3c4 ''. 279 .Ci 1a2b3c4 ''.
235 The identifier is the seven-letter-prefix of the changeset hash value, 280 The identifier is the seven-letter-prefix of the changeset hash value,
237 A change can be looked up in the repository, on the command line with 282 A change can be looked up in the repository, on the command line with
238 .Cl "git show XXX" , 283 .Cl "git show XXX" ,
239 replacing `\f(CWXXX\fP' with the concrete hash value or any unique prefix. 284 replacing `\f(CWXXX\fP' with the concrete hash value or any unique prefix.
240 In this example: 285 In this example:
241 .Cl "git show 1a2b3c4" . 286 .Cl "git show 1a2b3c4" .
242 At the time of writing, changesets can be looked up online this way: 287 At the time of writing, changesets can be looked up online at:
243 .CW "http://git.marmaro.de/?p=mmh;a=commitdiff;h=XXX" . 288 .CW "http://git.marmaro.de/?p=mmh;a=commitdiff;h=XXX" .
244 But as we all know, URIs are always at risk to change. 289 But as we all know, URIs are always at risk to change.
290 .P
291 Whenever lines of code were determined, David A. Wheeler's \fIsloccount\fP
292 .[
293 sloccount website
294 .]
295 was used to measure the amount in a comparable way.
245 296
246 297
247 .U2 "Acknowledgments 298 .U2 "Acknowledgments
248 .P 299 .P
249 To be written at the very end. 300 To be written at the very end.