meillo@0: .H0 "Preface" no meillo@0: meillo@23: .P meillo@23: MH is a set of mail handling tools with a common concept, like meillo@23: the Unix toolchest is a set of file handling tools with a common meillo@23: concept. nmh is the currently most popular implementation of an meillo@23: MH-like mail handling system. meillo@23: meillo@23: meillo@8: .H1 "How the Fun Began" no meillo@8: .P meillo@23: I have discovered nmh in September 2009. At that time I used to use mutt, meillo@23: like many command line-attracted Unix users do. meillo@23: Conceptually nmh had convinced me at once and learning meillo@23: its different model of email handling had been relatively easy. meillo@23: The change was like meillo@23: managing files in the Unix shell when you are used to graphical file meillo@23: managers, or like learning vi when you are used to modeless editors. meillo@23: The change was not trivial but as I was convinced by the concepts and meillo@23: already managed my files with shell tools and edited with vi, not to meillo@23: difficult either. meillo@23: In contrast, setting nmh up to a convenient state became a tendious task meillo@23: that took several months. meillo@23: .P meillo@23: Once having nmh arranged as wished, using it was joy because of its meillo@23: conceptional elegance and scripting capabilities. meillo@23: On the other hand, however, it still was meillo@8: inconvenient in handling attachments, non-ASCII character encodings, meillo@23: and similar features of modern emailing. meillo@23: My setup required more and more scripts and additional configuration meillo@23: to have nmh act the way I expected it to behave, where my meillo@23: expectations were rather common to modern emailing than exceptionel. meillo@23: In being a software developer, I wanted to improve the situation. meillo@8: .P meillo@8: In Spring 2010, I asked on the nmh-workers mailing list for the meillo@23: possibility to offer a Google Summer of Code project on nmh. meillo@23: Participating in the development this way appeared attractive to me, meillo@23: especially as it would have been possible to have the project meillo@23: accepted at university. Although the nmh community meillo@23: generally had been positive on the meillo@23: suggestion, eventually it had not been possible to manage the meillo@23: administrative work. Though my proposal had started the nmh community meillo@23: to move. In the following weeks, goals for nmh's future were discussed meillo@23: on the list. During the discussions, I became involved in the meillo@23: question whether nmh should be an MTA. (Thread subject: meillo@23: ``should nmh be an MTA or an MUA?''.) meillo@23: In this point, my opinion differed from the opinion of most others meillo@23: as I voted for the MTA facility of nmh to be removed. meillo@8: .P meillo@23: Being not able to work on nmh in a way that would be meillo@8: accepted as part of my official studies, I needed to get my credit meillo@23: points with some other project. meillo@23: Half a year later, starting in August 2010, meillo@23: I took one semester off to travel through Latin America. meillo@23: Within this time, I had to do practical computer work for three meillo@23: months. meillo@23: This brought me back to nmh. meillo@23: Richard Sandelman, an active nmh user, made it possible for meillo@23: me to work on nmh. Juan Granda, living in Santiago del meillo@23: Estero in Argentina, provided a computer and Internet connection for meillo@23: my work. meillo@23: Within the three month, I became familiar with nmh's code base and meillo@23: its community. I learned how things work. Quickly it became obvious that meillo@23: I wouldn't succeed with my main goal, to improve the character meillo@23: encoding handling within the project. One obvious problem is the missing meillo@23: transfer decoding of the quoted text in replies. meillo@23: As this is one of the most intricate parts of the system, the goal meillo@23: was simply too difficult to reach. meillo@23: Instead I improved the code as I read through it. I found minor bugs meillo@23: for which I proposed fixes to the community. Also I meillo@23: could improve the documentation. When I started with meillo@8: larger code changes, I had to discover that the community's wish for meillo@8: compatibility was stronger than its wish for convenient meillo@23: out-of-the-box setups \(en in contrast with my opinion. meillo@23: This lead to long discussions, again. meillo@23: I came to understand their point of view, but it simply is not mine. meillo@8: .P meillo@23: At the end of my three-month project, I had become familiar with meillo@23: nmh's code base and its community. I had improved the project a bit meillo@23: and I still was convinced that I wanted to go on with that. meillo@23: .P meillo@23: Another half a year later, the end of my studies came within reach. meillo@23: I needed a topic for my master's thesis. meillo@23: There was no question: I wanted to work on nmh. meillo@23: But well, not exactly on nmh, meillo@8: because I had accepted that the nmh community has different goals meillo@23: than I have. This would result in long discussions and thus few progress. meillo@23: After careful thought, I decided to start an experimental version of nmh. meillo@23: I wanted to follow my own ideas of how nmh should look like. I wanted meillo@23: to see where that would lead to. I wanted to compare the result of my meillo@23: work to the present state of nmh. Time should prove me successful or meillo@23: not. meillo@23: Nmh would hardly be hurt by my work as I would not interfere with meillo@23: them. But nmh could profit from my experiences. meillo@8: .P meillo@23: I started to work on my experimental version, which I call meillo@23: \fImmh\fP (for \fImeillo's mail handler\fP), in Fall 2011. meillo@23: In December, when I announced that I would work on an experimental meillo@23: version, the activity in nmh suddenly rose. Suddently the community meillo@23: started to move. meillo@23: After long years of mostly idling, nmh became actively developed again. meillo@23: What a great result! meillo@23: Hence, while I was working on mmh, the community was working on nmh meillo@23: too. My own work went in parallel and mostly unrelated. meillo@23: .P meillo@23: Because of several circumstances, my experimental version is rather meillo@23: a fork today, although this may change again in the future. meillo@8: meillo@8: meillo@23: .H1 "Organization" no meillo@0: .P meillo@24: This thesis is split into XXX chapters, ... meillo@24: .P meillo@24: .I Chapter 1 meillo@24: introduces ... meillo@24: .P meillo@24: .I Chapter 2 meillo@24: describes ... meillo@24: .P meillo@24: .I Chapter 3 meillo@24: covers ... meillo@24: meillo@23: meillo@25: .\" What audience is expected? meillo@27: .\" What will not be covered (delimitation). meillo@27: meillo@25: .\" General required knowledge (C, email, ...) meillo@27: .\" cf. Email Prerequisites in the Introduction. meillo@25: meillo@25: meillo@23: .H1 "Conventions" no meillo@5: .P meillo@24: Which font for what use. meillo@24: Meaning of `foo(1)'. meillo@24: RFCs. meillo@24: MH vs. nmh vs. mmh. meillo@24: meillo@23: meillo@23: .H1 "Acknowledgments" no meillo@23: .P meillo@24: To be written at the very end. meillo@0: meillo@0: meillo@0: .\" End or Preface. Start of the normal text. meillo@0: .\" Switch to arabic page numbers and start on a right page. meillo@8: .if e \{ meillo@8: . pn 1 meillo@8: . af PN 1 meillo@8: .\} meillo@8: .if o \{ meillo@8: . pn 0 meillo@8: . af PN 0 meillo@8: . bp meillo@8: .\}