Mercurial > docs > master
view preface.roff @ 52:f12b22b0e29a
Improvements by diction(1).
author | markus schnalke <meillo@marmaro.de> |
---|---|
date | Sun, 20 May 2012 12:11:42 +0200 |
parents | 49cf68506b5d |
children | 01d06ca2eb1b |
line wrap: on
line source
.H0 "Preface" no .P MH is a set of mail handling tools with a common concept, similar to the Unix tool chest, which is a set of file handling tools with a common concept. nmh is the currently most popular implementation of an MH-like mail handling system. This thesis describes an experimental version of nmh, named \fImmh\fP. .U2 "Background to this Thesis .P I have discovered nmh in September 2009. At that time I used to use the mail client \fImutt\fP, as many advanced Unix users do. As I read about nmh, its concepts had convinced me at once. Learning its different model of email handling had been relatively easy, because my starting situation was being convinced of the concepts. The transition from mutt to nmh was similar to managing files in the Unix shell when being used to graphical file managers, or like editing with vi when being used to modeless editors. Such a change is not trivial, but in being convinced by the concepts and by having done similar transitions for file management and editing already, it was neither too difficult. In contrast, setting up nmh to a convenient state became a tedious task that took several months. .P Once having nmh arranged to a convenient state, I enjoyed using it because of its conceptional elegance and its scripting capabilities. On the other hand, nevertheless, it still was inconvenient for handling attachments, non-ASCII character encodings, and similar features of modern emailing. My setup demanded more and more additional configuration and helper scripts to get nmh behave the way I wanted, although my expectations were rather common for modern emailing. In being a computer scientist and programmer, I wanted to improve the situation. .P In Spring 2010, I asked on the \fInmh-workers\fP mailing list for the possibility to offer a Google Summer of Code project. Participating in the development this way appeared attractive to me, because it would have been possible to have the project accepted at university. Although generally the nmh community had been positive on the suggestion, the administrative work had been to much, eventually. But my proposal had activated the nmh community. In the following weeks, goals for nmh's future were discussed. In these discussions, I became involved in the question whether nmh should be an MTA. .[ nmh-workers thread mta mua .] In this central point, my opinion differed from the opinion of most others. I argued for the MTA facility of nmh to be removed. Besides the discussions, hardly any real work was done. Being unable to work on nmh in a way that would be accepted as part of my official studies, I needed to choose another project. .P Half a year later, starting in August 2010, I took one semester off to travel through Latin America. Within this time, I had to do practical computer work for three months. This brought me back to nmh. Richard Sandelman, an active nmh user, made it possible for me to work on nmh. Juan Granda, living in Santiago del Estero in Argentina, provided a computer with Internet connection for my work. Thanks to them, I was able to work on nmh during my three-month stay in Argentina. Within this time, I became familiar with nmh's code base and community. I learned how things work. Quickly it became obvious that I wouldn't succeed with my main goal: improving the character encoding handling within the project. One of its ramifications is the missing transfer decoding of quoted text in replies. As this is one of the most intricate parts of the system, the goal was simply set too high. Hence, I dropped the original plan. Instead, I improved the code base as I read through it. I found minor bugs for which I proposed fixes to the community. In the same go, I improved the documentation in minor ways. When I started with larger code changes, I had to discover that the community was reluctant to change. Its wish for compatibility was much stronger than its wish for convenient out-of-the-box setups \(en in contrast to my opinion. This led to long discussions, again. I came to understand their point of view, but it is different to mine. At the end of my three-month project, I had become familiar with nmh's code base and community. I had improved the project in minor ways, and I still was convinced that I wanted to go on to do so. .P Another half a year later, the end of my studies came within reach. I needed a topic for my master's thesis. No question, I wanted to work on nmh. But well, not exactly on nmh, because I had accepted that the nmh community has different goals than I have. This would result in much discussion and thus little progress. After careful thought, I decided to start an experimental version of nmh. I wanted to implement my own ideas of how an MH-like system should look like. I wanted to see where that would lead to. I wanted to create a usable alternative version to be compared with the present state of nmh. My work should be proved successful or failed. The nmh project would not be hurt by my work, but it would profit from my experiences. .U2 "Focus of this Document .P This document describes my work on mmh. It explains the changes to nmh, with focus on their reasons. It discusses technical, historical, social and philosophical considerations. On the technical side, this document explains how an existing project was stream-lined by removing rough edges and exploiting the central concepts better. On the historical side, changes through time in the use cases and the email features, as well as the reactions to them, are discussed. Socially, this document describes the effects and experiences of a newcomer with revolutionary aims entering an old and matured software projects. Finally, philosophical thoughts on style, mainly based to the Unix philosophy, are present throughout the discussions. .P This document is written for the community around MH-like mail systems, including developers and users. First, the document explains the design goals and implementation decisions for mmh. But as well, it clarifies my personal perception of the concepts of MH and Unix, and explain my therefrom resulting point of view. Despite the focus on MH-like systems, this document is may be precious to anyone interested in the Unix philosophy and anyone in contact to old software projects, be it code or community-related. .P The reader is expected to have good knowledge of Unix, C and emailing. Good Unix shell knowledge, including shell scripting, is required. MH relies fundamentally on the shell. Without the power of the shell, MH becomes a motorbike without winding roads: boring. Introductions to Unix and its shell can be found in ``The UNIX Programming Environment'' by Kernighan and Pike .[ kernighan pike unix prog env .] or ``The UNIX System'' by Bourne. .[ bourne unix system .] The reader is expected to be familiar with the C programming language, although the document should be understandable without knowledge of C, too. ``The C Programming Language'' by Kernighan and Ritchie .[ kernighan ritchie c prog lang .] is the definitive guide to C. Some book about system-level C programming can be helpful additional literature. Rochkind and Curry have written such books. .[ rochkind advanced unix prog .] .[ curry system prog .] As large parts of the code are old, old books are likely more helpful to understanding. The format of email messages as well as the structure of email transfer systems should be familiar to the reader, at least on a basic level. It's advisable to have at least cross-read the RFCs 821 and 822. Further more, basic understanding of MIME is good to have. The Wikipedia provides good introduction-level information to email. Frequent references to the Unix philosophy will be made. Gancarz had tried to sum the philosophy up in his book ``The UNIX Philosophy''. .[ gancarz unix phil .] Even better, though less concrete, are ``The UNIX Programming Environment'' .[ kernighan pike unix prog env .] and ``The Practice of Programming'' .[ kernighan pike practice of prog .] by Kernighan and Pike. The term paper ``Why the Unix Philosophy still matters'' .[ why unix phil still matters schnalke .] by myself provides an overview on the topic, including a case study of MH. Although a brief introduction to MH is provided in Chapter 1, the reader is encouraged to have a look at the \fIMH Book\fP by Jerry Peek. .[ peek mh .] It is the definitive guide to MH and nmh. The current version is available freely on the Internet. .P This document is neither a user's tutorial to mmh nor an introduction to any of the topics covered. It discusses Unix, email and system design on an advanced level. Nevertheless, as knowledge of the fundamental concepts is the most valuable information a user can acquire about some program or software system, this document may be worth a read for non-developers as well. .U2 "Organization .P Which font for what use. Meaning of `foo(1)'. RFCs. .P This thesis is divided into XXX chapters, ... .P .I Chapter 1 introduces ... .P .I Chapter 2 describes ... .P .I Chapter 3 covers ... .U2 "Acknowledgments .P To be written at the very end.