docs/master

annotate preface.roff @ 30:d996f130e279

Some rework and new text in the Preface.
author markus schnalke <meillo@marmaro.de>
date Wed, 09 May 2012 15:50:40 +0200
parents 6c63083b4c19
children 029e11dd4de1
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@30 13 .U2 "Background 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@30 99 .U2 "Focus of this 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@30 114 This document is written for the community around MH-like mail systems
meillo@30 115 \(en developers and users.
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@30 118 personal perception of the
meillo@30 119 concepts of MH and Unix, and explain the therefrom resulting point of view.
meillo@30 120 Despite the focus on MH-like systems, this document can be worthwhile
meillo@28 121 to anyone interested in the Unix philosophy, as well as anyone
meillo@30 122 involved in old software projects, be it code or community-related.
meillo@28 123 .P
meillo@30 124 The reader is expected to have good knowledge of Unix, C and emailing.
meillo@30 125 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@30 128 without winding roads: boring.
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@30 132 document should be understandable 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@30 146 Although a brief introduction to MH is provided in Chapter 1, the reader
meillo@30 147 is encouraged to have a look at the \fIMH Book\fP by Jerry Peek.
meillo@30 148 It is the definitive guide to MH and nmh.
meillo@30 149 The current version is available freely on the Internet XXX.
meillo@30 150 .P
meillo@30 151 This document is neither a user's tutorial to mmh nor an introduction
meillo@30 152 to any of the topics covered. It contains discussions on Unix, email
meillo@30 153 and system design on an advanced level.
meillo@30 154 However, as knowledge of the fundamental concepts is the most valuable
meillo@30 155 information over some program or software system a user can aquire,
meillo@30 156 this document might be worth a read for non-developers too.
meillo@8 157
meillo@8 158
meillo@28 159 .U2 "Organization
meillo@0 160 .P
meillo@28 161 Which font for what use.
meillo@28 162 Meaning of `foo(1)'.
meillo@28 163 RFCs.
meillo@28 164 MH vs. nmh vs. mmh.
meillo@28 165 .P
meillo@28 166 This thesis is devided into XXX chapters, ...
meillo@24 167 .P
meillo@24 168 .I Chapter 1
meillo@24 169 introduces ...
meillo@24 170 .P
meillo@24 171 .I Chapter 2
meillo@24 172 describes ...
meillo@24 173 .P
meillo@24 174 .I Chapter 3
meillo@24 175 covers ...
meillo@24 176
meillo@23 177
meillo@28 178 .U2 "Acknowledgments
meillo@23 179 .P
meillo@24 180 To be written at the very end.
meillo@0 181
meillo@0 182
meillo@0 183 .\" End or Preface. Start of the normal text.
meillo@0 184 .\" Switch to arabic page numbers and start on a right page.
meillo@30 185 .
meillo@8 186 .if e \{
meillo@8 187 . pn 1
meillo@8 188 . af PN 1
meillo@8 189 .\}
meillo@8 190 .if o \{
meillo@8 191 . pn 0
meillo@8 192 . af PN 0
meillo@8 193 . bp
meillo@8 194 .\}