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@23
|
8
|
meillo@23
|
9
|
meillo@8
|
10 .H1 "How the Fun Began" no
|
meillo@8
|
11 .P
|
meillo@23
|
12 I have discovered nmh in September 2009. At that time I used to use mutt,
|
meillo@23
|
13 like many command line-attracted Unix users do.
|
meillo@23
|
14 Conceptually nmh had convinced me at once and learning
|
meillo@23
|
15 its different model of email handling had been relatively easy.
|
meillo@23
|
16 The change was like
|
meillo@23
|
17 managing files in the Unix shell when you are used to graphical file
|
meillo@23
|
18 managers, or like learning vi when you are used to modeless editors.
|
meillo@23
|
19 The change was not trivial but as I was convinced by the concepts and
|
meillo@23
|
20 already managed my files with shell tools and edited with vi, not to
|
meillo@23
|
21 difficult either.
|
meillo@23
|
22 In contrast, setting nmh up to a convenient state became a tendious task
|
meillo@23
|
23 that took several months.
|
meillo@23
|
24 .P
|
meillo@23
|
25 Once having nmh arranged as wished, using it was joy because of its
|
meillo@23
|
26 conceptional elegance and scripting capabilities.
|
meillo@23
|
27 On the other hand, however, it still was
|
meillo@8
|
28 inconvenient in handling attachments, non-ASCII character encodings,
|
meillo@23
|
29 and similar features of modern emailing.
|
meillo@23
|
30 My setup required more and more scripts and additional configuration
|
meillo@23
|
31 to have nmh act the way I expected it to behave, where my
|
meillo@23
|
32 expectations were rather common to modern emailing than exceptionel.
|
meillo@23
|
33 In being a software developer, I wanted to improve the situation.
|
meillo@8
|
34 .P
|
meillo@8
|
35 In Spring 2010, I asked on the nmh-workers mailing list for the
|
meillo@23
|
36 possibility to offer a Google Summer of Code project on nmh.
|
meillo@23
|
37 Participating in the development this way appeared attractive to me,
|
meillo@23
|
38 especially as it would have been possible to have the project
|
meillo@23
|
39 accepted at university. Although the nmh community
|
meillo@23
|
40 generally had been positive on the
|
meillo@23
|
41 suggestion, eventually it had not been possible to manage the
|
meillo@23
|
42 administrative work. Though my proposal had started the nmh community
|
meillo@23
|
43 to move. In the following weeks, goals for nmh's future were discussed
|
meillo@23
|
44 on the list. During the discussions, I became involved in the
|
meillo@23
|
45 question whether nmh should be an MTA. (Thread subject:
|
meillo@23
|
46 ``should nmh be an MTA or an MUA?''.)
|
meillo@23
|
47 In this point, my opinion differed from the opinion of most others
|
meillo@23
|
48 as I voted for the MTA facility of nmh to be removed.
|
meillo@8
|
49 .P
|
meillo@23
|
50 Being not able to work on nmh in a way that would be
|
meillo@8
|
51 accepted as part of my official studies, I needed to get my credit
|
meillo@23
|
52 points with some other project.
|
meillo@23
|
53 Half a year later, starting in August 2010,
|
meillo@23
|
54 I took one semester off to travel through Latin America.
|
meillo@23
|
55 Within this time, I had to do practical computer work for three
|
meillo@23
|
56 months.
|
meillo@23
|
57 This brought me back to nmh.
|
meillo@23
|
58 Richard Sandelman, an active nmh user, made it possible for
|
meillo@23
|
59 me to work on nmh. Juan Granda, living in Santiago del
|
meillo@23
|
60 Estero in Argentina, provided a computer and Internet connection for
|
meillo@23
|
61 my work.
|
meillo@23
|
62 Within the three month, I became familiar with nmh's code base and
|
meillo@23
|
63 its community. I learned how things work. Quickly it became obvious that
|
meillo@23
|
64 I wouldn't succeed with my main goal, to improve the character
|
meillo@23
|
65 encoding handling within the project. One obvious problem is the missing
|
meillo@23
|
66 transfer decoding of the quoted text in replies.
|
meillo@23
|
67 As this is one of the most intricate parts of the system, the goal
|
meillo@23
|
68 was simply too difficult to reach.
|
meillo@23
|
69 Instead I improved the code as I read through it. I found minor bugs
|
meillo@23
|
70 for which I proposed fixes to the community. Also I
|
meillo@23
|
71 could improve the documentation. When I started with
|
meillo@8
|
72 larger code changes, I had to discover that the community's wish for
|
meillo@8
|
73 compatibility was stronger than its wish for convenient
|
meillo@23
|
74 out-of-the-box setups \(en in contrast with my opinion.
|
meillo@23
|
75 This lead to long discussions, again.
|
meillo@23
|
76 I came to understand their point of view, but it simply is not mine.
|
meillo@8
|
77 .P
|
meillo@23
|
78 At the end of my three-month project, I had become familiar with
|
meillo@23
|
79 nmh's code base and its community. I had improved the project a bit
|
meillo@23
|
80 and I still was convinced that I wanted to go on with that.
|
meillo@23
|
81 .P
|
meillo@23
|
82 Another half a year later, the end of my studies came within reach.
|
meillo@23
|
83 I needed a topic for my master's thesis.
|
meillo@23
|
84 There was no question: I wanted to work on nmh.
|
meillo@23
|
85 But well, not exactly on nmh,
|
meillo@8
|
86 because I had accepted that the nmh community has different goals
|
meillo@23
|
87 than I have. This would result in long discussions and thus few progress.
|
meillo@23
|
88 After careful thought, I decided to start an experimental version of nmh.
|
meillo@23
|
89 I wanted to follow my own ideas of how nmh should look like. I wanted
|
meillo@23
|
90 to see where that would lead to. I wanted to compare the result of my
|
meillo@23
|
91 work to the present state of nmh. Time should prove me successful or
|
meillo@23
|
92 not.
|
meillo@23
|
93 Nmh would hardly be hurt by my work as I would not interfere with
|
meillo@23
|
94 them. But nmh could profit from my experiences.
|
meillo@8
|
95 .P
|
meillo@23
|
96 I started to work on my experimental version, which I call
|
meillo@23
|
97 \fImmh\fP (for \fImeillo's mail handler\fP), in Fall 2011.
|
meillo@23
|
98 In December, when I announced that I would work on an experimental
|
meillo@23
|
99 version, the activity in nmh suddenly rose. Suddently the community
|
meillo@23
|
100 started to move.
|
meillo@23
|
101 After long years of mostly idling, nmh became actively developed again.
|
meillo@23
|
102 What a great result!
|
meillo@23
|
103 Hence, while I was working on mmh, the community was working on nmh
|
meillo@23
|
104 too. My own work went in parallel and mostly unrelated.
|
meillo@23
|
105 .P
|
meillo@23
|
106 Because of several circumstances, my experimental version is rather
|
meillo@23
|
107 a fork today, although this may change again in the future.
|
meillo@8
|
108
|
meillo@8
|
109
|
meillo@23
|
110 .H1 "Organization" no
|
meillo@0
|
111 .P
|
meillo@24
|
112 This thesis is split into XXX chapters, ...
|
meillo@24
|
113 .P
|
meillo@24
|
114 .I Chapter 1
|
meillo@24
|
115 introduces ...
|
meillo@24
|
116 .P
|
meillo@24
|
117 .I Chapter 2
|
meillo@24
|
118 describes ...
|
meillo@24
|
119 .P
|
meillo@24
|
120 .I Chapter 3
|
meillo@24
|
121 covers ...
|
meillo@24
|
122
|
meillo@23
|
123
|
meillo@25
|
124 .\" What audience is expected?
|
meillo@25
|
125 .\" General required knowledge (C, email, ...)
|
meillo@25
|
126
|
meillo@25
|
127
|
meillo@23
|
128 .H1 "Conventions" no
|
meillo@5
|
129 .P
|
meillo@24
|
130 Which font for what use.
|
meillo@24
|
131 Meaning of `foo(1)'.
|
meillo@24
|
132 RFCs.
|
meillo@24
|
133 MH vs. nmh vs. mmh.
|
meillo@24
|
134
|
meillo@23
|
135
|
meillo@23
|
136 .H1 "Acknowledgments" no
|
meillo@23
|
137 .P
|
meillo@24
|
138 To be written at the very end.
|
meillo@0
|
139
|
meillo@0
|
140
|
meillo@0
|
141 .\" End or Preface. Start of the normal text.
|
meillo@0
|
142 .\" Switch to arabic page numbers and start on a right page.
|
meillo@8
|
143 .if e \{
|
meillo@8
|
144 . pn 1
|
meillo@8
|
145 . af PN 1
|
meillo@8
|
146 .\}
|
meillo@8
|
147 .if o \{
|
meillo@8
|
148 . pn 0
|
meillo@8
|
149 . af PN 0
|
meillo@8
|
150 . bp
|
meillo@8
|
151 .\}
|