rev |
line source |
meillo@0
|
1 .H0 "Preface" no
|
meillo@0
|
2
|
meillo@23
|
3 .P
|
meillo@23
|
4 MH is a set of mail handling tools with a common concept, like
|
meillo@23
|
5 the Unix toolchest is a set of file handling tools with a common
|
meillo@23
|
6 concept. nmh is the currently most popular implementation of an
|
meillo@23
|
7 MH-like mail handling system.
|
meillo@28
|
8 This thesis describes creating an experimental version of nmh,
|
meillo@28
|
9 named \fImmh\fP,
|
meillo@28
|
10 to modernize, stream-line and to exploit the concepts
|
meillo@28
|
11 even more thoroughly.
|
meillo@23
|
12
|
meillo@28
|
13 .U2 "The Path to this Thesis
|
meillo@8
|
14 .P
|
meillo@28
|
15 I have discovered nmh in September 2009. At that time I used to use the
|
meillo@28
|
16 mail client mutt, like many command line-attracted Unix users do.
|
meillo@28
|
17 The concepts of nmh had convinced me at once and thus learning
|
meillo@23
|
18 its different model of email handling had been relatively easy.
|
meillo@23
|
19 The change was like
|
meillo@28
|
20 managing files in the Unix shell when being used to graphical file
|
meillo@28
|
21 managers, or like learning vi when being used to modeless editors.
|
meillo@28
|
22 The transition had not been trivial but, as I was convinced by the new
|
meillo@28
|
23 concepts and
|
meillo@28
|
24 already managed my files with shell tools and edited with vi, not too
|
meillo@28
|
25 difficult neither.
|
meillo@28
|
26 In contrast, setting up nmh to a convenient state became a tendious task
|
meillo@23
|
27 that took several months.
|
meillo@23
|
28 .P
|
meillo@28
|
29 Once having nmh arranged to a convenient state, I enjoyed using it
|
meillo@28
|
30 because of its conceptional elegance and its scripting capabilities.
|
meillo@23
|
31 On the other hand, however, it still was
|
meillo@8
|
32 inconvenient in handling attachments, non-ASCII character encodings,
|
meillo@23
|
33 and similar features of modern emailing.
|
meillo@28
|
34 My setup required more and more additional configuration and helper scripts
|
meillo@28
|
35 to have nmh act the way I expected it to behave, although my
|
meillo@28
|
36 expectations were rather common for modern emailing than exceptionel.
|
meillo@23
|
37 In being a software developer, I wanted to improve the situation.
|
meillo@8
|
38 .P
|
meillo@8
|
39 In Spring 2010, I asked on the nmh-workers mailing list for the
|
meillo@23
|
40 possibility to offer a Google Summer of Code project on nmh.
|
meillo@23
|
41 Participating in the development this way appeared attractive to me,
|
meillo@23
|
42 especially as it would have been possible to have the project
|
meillo@23
|
43 accepted at university. Although the nmh community
|
meillo@23
|
44 generally had been positive on the
|
meillo@23
|
45 suggestion, eventually it had not been possible to manage the
|
meillo@23
|
46 administrative work. Though my proposal had started the nmh community
|
meillo@23
|
47 to move. In the following weeks, goals for nmh's future were discussed
|
meillo@23
|
48 on the list. During the discussions, I became involved in the
|
meillo@23
|
49 question whether nmh should be an MTA. (Thread subject:
|
meillo@23
|
50 ``should nmh be an MTA or an MUA?''.)
|
meillo@23
|
51 In this point, my opinion differed from the opinion of most others
|
meillo@23
|
52 as I voted for the MTA facility of nmh to be removed.
|
meillo@8
|
53 .P
|
meillo@28
|
54 Being unable to work on nmh in a way that would be
|
meillo@28
|
55 accepted as part of my official studies, I had to pick another project.
|
meillo@23
|
56 Half a year later, starting in August 2010,
|
meillo@23
|
57 I took one semester off to travel through Latin America.
|
meillo@23
|
58 Within this time, I had to do practical computer work for three
|
meillo@23
|
59 months.
|
meillo@23
|
60 This brought me back to nmh.
|
meillo@23
|
61 Richard Sandelman, an active nmh user, made it possible for
|
meillo@23
|
62 me to work on nmh. Juan Granda, living in Santiago del
|
meillo@23
|
63 Estero in Argentina, provided a computer and Internet connection for
|
meillo@23
|
64 my work.
|
meillo@23
|
65 Within the three month, I became familiar with nmh's code base and
|
meillo@23
|
66 its community. I learned how things work. Quickly it became obvious that
|
meillo@23
|
67 I wouldn't succeed with my main goal, to improve the character
|
meillo@23
|
68 encoding handling within the project. One obvious problem is the missing
|
meillo@23
|
69 transfer decoding of the quoted text in replies.
|
meillo@23
|
70 As this is one of the most intricate parts of the system, the goal
|
meillo@23
|
71 was simply too difficult to reach.
|
meillo@23
|
72 Instead I improved the code as I read through it. I found minor bugs
|
meillo@23
|
73 for which I proposed fixes to the community. Also I
|
meillo@23
|
74 could improve the documentation. When I started with
|
meillo@8
|
75 larger code changes, I had to discover that the community's wish for
|
meillo@8
|
76 compatibility was stronger than its wish for convenient
|
meillo@23
|
77 out-of-the-box setups \(en in contrast with my opinion.
|
meillo@23
|
78 This lead to long discussions, again.
|
meillo@23
|
79 I came to understand their point of view, but it simply is not mine.
|
meillo@8
|
80 .P
|
meillo@23
|
81 At the end of my three-month project, I had become familiar with
|
meillo@23
|
82 nmh's code base and its community. I had improved the project a bit
|
meillo@23
|
83 and I still was convinced that I wanted to go on with that.
|
meillo@23
|
84 .P
|
meillo@23
|
85 Another half a year later, the end of my studies came within reach.
|
meillo@23
|
86 I needed a topic for my master's thesis.
|
meillo@23
|
87 There was no question: I wanted to work on nmh.
|
meillo@23
|
88 But well, not exactly on nmh,
|
meillo@8
|
89 because I had accepted that the nmh community has different goals
|
meillo@23
|
90 than I have. This would result in long discussions and thus few progress.
|
meillo@23
|
91 After careful thought, I decided to start an experimental version of nmh.
|
meillo@23
|
92 I wanted to follow my own ideas of how nmh should look like. I wanted
|
meillo@23
|
93 to see where that would lead to. I wanted to compare the result of my
|
meillo@23
|
94 work to the present state of nmh. Time should prove me successful or
|
meillo@23
|
95 not.
|
meillo@23
|
96 Nmh would hardly be hurt by my work as I would not interfere with
|
meillo@28
|
97 them. But nmh would profit from my experiences.
|
meillo@28
|
98
|
meillo@28
|
99 .U2 "Focus and Delimitation of the Document
|
meillo@8
|
100 .P
|
meillo@28
|
101 This document describes my work on the experimental version, named
|
meillo@28
|
102 \fImmh\fP. It explains the changes I did to nmh, with having the focus
|
meillo@28
|
103 on the reasons for the changes. It discusses technical, historical,
|
meillo@28
|
104 social and philosophical reasons. On the technical side, this document
|
meillo@28
|
105 explains how an existing project was stream-lined by exploiting the
|
meillo@28
|
106 central concepts better and removing rough edges. On the historical
|
meillo@28
|
107 side, changes in the use cases and the features of email and reactions
|
meillo@28
|
108 to them are discussed. Socially, this document describes the effects
|
meillo@28
|
109 and experiences of a newcomer with revolutionary aims entering an old
|
meillo@28
|
110 and matured software projects and its community. Finally, philosophical
|
meillo@28
|
111 thoughts on style, mainly based to the Unix philosophy, are present
|
meillo@28
|
112 throughout the discussions.
|
meillo@23
|
113 .P
|
meillo@28
|
114 This document is written for the community \(en developers and users \(en
|
meillo@28
|
115 around MH-like mail systems.
|
meillo@28
|
116 First of all, the document shall propagade the design goals and
|
meillo@28
|
117 implementation decisions of mmh. But as well, it shall clarify my
|
meillo@28
|
118 perception of the
|
meillo@28
|
119 concepts of MH and Unix, and the therefrom resulting point of view.
|
meillo@28
|
120 Further more, the document shall explain this view on nmh and mmh.
|
meillo@28
|
121 Despite the focus on MH-like systems, this document can be useful
|
meillo@28
|
122 to anyone interested in the Unix philosophy, as well as anyone
|
meillo@28
|
123 involved in old software projects, be it code-related or community-related.
|
meillo@28
|
124 .P
|
meillo@28
|
125 The reader is expected to know Unix, C and email well. Good Unix shell
|
meillo@28
|
126 knowledge, including shell scripting, is required. MH relies fundamentally
|
meillo@28
|
127 on the shell. Without the power of the shell, MH becomes a motorbike
|
meillo@28
|
128 without winding roads.
|
meillo@28
|
129 Introductions to Unix and its shell can be found in XXX.
|
meillo@28
|
130 The reader is
|
meillo@28
|
131 expected to be familiar with the C programming language, although the
|
meillo@28
|
132 document should be quite readable without knowledge of C, too.
|
meillo@28
|
133 The book by Kernighan and Ritchie is the definitive guide to C.
|
meillo@28
|
134 Some book about system-level C programming is worthwile additional
|
meillo@28
|
135 literature. Rochkind and Curry have written such books.
|
meillo@28
|
136 As large parts of the code are old, old books are likely more helpful.
|
meillo@28
|
137 The format of email messages as well as the structure of email transfer
|
meillo@28
|
138 systems should be familiar to the reader, at least on a basic level.
|
meillo@28
|
139 It's advisable to have had, at least cross-read, the RFCs 821 and 822.
|
meillo@28
|
140 The book XXX introduces email well, too.
|
meillo@28
|
141 Frequent references to the Unix philosophy will be made.
|
meillo@28
|
142 Gancarz XXX had tried to sum the philosophy up. Even better but less
|
meillo@28
|
143 concrete is the literature by Kernighan and Pike XXX.
|
meillo@28
|
144 The term paper ``Why the Unix Philosophy still matters'' by myself
|
meillo@28
|
145 provides an overview on the topic, including a case study of MH.
|
meillo@8
|
146
|
meillo@8
|
147
|
meillo@28
|
148 .U2 "Organization
|
meillo@0
|
149 .P
|
meillo@28
|
150 Which font for what use.
|
meillo@28
|
151 Meaning of `foo(1)'.
|
meillo@28
|
152 RFCs.
|
meillo@28
|
153 MH vs. nmh vs. mmh.
|
meillo@28
|
154 .P
|
meillo@28
|
155 This thesis is devided into XXX chapters, ...
|
meillo@24
|
156 .P
|
meillo@24
|
157 .I Chapter 1
|
meillo@24
|
158 introduces ...
|
meillo@24
|
159 .P
|
meillo@24
|
160 .I Chapter 2
|
meillo@24
|
161 describes ...
|
meillo@24
|
162 .P
|
meillo@24
|
163 .I Chapter 3
|
meillo@24
|
164 covers ...
|
meillo@24
|
165
|
meillo@23
|
166
|
meillo@28
|
167 .U2 "Acknowledgments
|
meillo@23
|
168 .P
|
meillo@24
|
169 To be written at the very end.
|
meillo@0
|
170
|
meillo@0
|
171
|
meillo@0
|
172 .\" End or Preface. Start of the normal text.
|
meillo@0
|
173 .\" Switch to arabic page numbers and start on a right page.
|
meillo@8
|
174 .if e \{
|
meillo@8
|
175 . pn 1
|
meillo@8
|
176 . af PN 1
|
meillo@8
|
177 .\}
|
meillo@8
|
178 .if o \{
|
meillo@8
|
179 . pn 0
|
meillo@8
|
180 . af PN 0
|
meillo@8
|
181 . bp
|
meillo@8
|
182 .\}
|