docs/master

annotate preface.roff @ 37:83b1481dda93

More refs.
author markus schnalke <meillo@marmaro.de>
date Tue, 15 May 2012 21:30:21 +0200
parents 2fea9739507f
children 22ae3981a76b
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@31 8 This thesis describes an experimental version of nmh,
meillo@31 9 named \fImmh\fP.
meillo@31 10 The project goals for mmh are modernizing, stream-lining and exploiting
meillo@31 11 MH's concepts 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@31 16 mail client \fImutt\fP, like many advanced Unix users do.
meillo@31 17 As I read about nmh, its concepts had convinced me at once.
meillo@31 18 Learning its different model of email handling had been relatively easy,
meillo@31 19 because my starting situation was being convinced of the concepts.
meillo@31 20 The transition from mutt to nmh was similar to
meillo@28 21 managing files in the Unix shell when being used to graphical file
meillo@31 22 managers, or like editing with vi when being used to modeless editors.
meillo@31 23 Such a change is not trivial, but in being convinced by the
meillo@31 24 concepts and by having done similar transitions for file management
meillo@31 25 and editing already, it was not too 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@31 32 inconvenient for handling attachments, non-ASCII character encodings,
meillo@23 33 and similar features of modern emailing.
meillo@31 34 My setup demanded more and more additional configuration and helper scripts
meillo@31 35 to get nmh behave the way I wanted, although my
meillo@31 36 expectations were rather common for modern emailing.
meillo@31 37 In being a computer scientist and programmer,
meillo@31 38 I wanted to improve the situation.
meillo@8 39 .P
meillo@31 40 In Spring 2010, I asked on the \fInmh-workers\fP mailing list for the
meillo@31 41 possibility to offer a Google Summer of Code project.
meillo@23 42 Participating in the development this way appeared attractive to me,
meillo@31 43 as it would have been possible to have the project
meillo@31 44 accepted at university. Although generally the nmh community
meillo@31 45 had been positive on the
meillo@31 46 suggestion, the administrative work had been to much, eventually.
meillo@31 47 But my proposal had activated the nmh community.
meillo@31 48 In the following weeks, goals for nmh's future were discussed.
meillo@31 49 In these discussions, I became involved in the
meillo@34 50 question whether nmh should be an MTA.
meillo@34 51 .[
meillo@34 52 nmh-workers thread mta mua
meillo@34 53 .]
meillo@31 54 In this central point, my opinion differed from the opinion of most others.
meillo@31 55 I argued for the MTA facility of nmh to be removed.
meillo@31 56 Besides the discussions, hardly any real work was done.
meillo@31 57 Being unable to work on nmh in a way that would be
meillo@31 58 accepted as part of my official studies, I needed to choose another project.
meillo@8 59 .P
meillo@23 60 Half a year later, starting in August 2010,
meillo@23 61 I took one semester off to travel through Latin America.
meillo@31 62 Within this time, I had to do practical computer work for three months.
meillo@23 63 This brought me back to nmh.
meillo@23 64 Richard Sandelman, an active nmh user, made it possible for
meillo@23 65 me to work on nmh. Juan Granda, living in Santiago del
meillo@31 66 Estero in Argentina, provided a computer with Internet connection for
meillo@31 67 my work. Thanks to them, I was able to work on nmh during my three-month
meillo@31 68 stay in Argentina.
meillo@31 69 Within this time, I became familiar with nmh's code base and
meillo@31 70 community. I learned how things work. Quickly it became obvious that
meillo@31 71 I wouldn't succeed with my main goal: improving the character
meillo@31 72 encoding handling within the project. One of its ramifications is the
meillo@31 73 missing transfer decoding of quoted text in replies.
meillo@23 74 As this is one of the most intricate parts of the system, the goal
meillo@31 75 was simply set too high. Hence, I dropped the original plan.
meillo@31 76 Instead, I improved the code base as I read through it. I found minor bugs
meillo@31 77 for which I proposed fixes to the community. In the same go, I
meillo@31 78 improved the documentation in minor ways. When I started with
meillo@31 79 larger code changes, I had to discover that the community was reluctant
meillo@31 80 to change. Its wish for compatibility was much stronger than its
meillo@31 81 wish for convenient out-of-the-box setups \(en in contrast to my opinion.
meillo@23 82 This lead to long discussions, again.
meillo@31 83 I came to understand their point of view, but it is different to mine.
meillo@23 84 At the end of my three-month project, I had become familiar with
meillo@31 85 nmh's code base and community. I had improved the project in minor ways,
meillo@31 86 and I still was convinced that I wanted to go on to do so.
meillo@23 87 .P
meillo@23 88 Another half a year later, the end of my studies came within reach.
meillo@23 89 I needed a topic for my master's thesis.
meillo@23 90 There was no question: I wanted to work on nmh.
meillo@23 91 But well, not exactly on nmh,
meillo@8 92 because I had accepted that the nmh community has different goals
meillo@31 93 than I have. This would result in much discussion and thus little progress.
meillo@23 94 After careful thought, I decided to start an experimental version of nmh.
meillo@31 95 I wanted to implement my own ideas of how an MH-like system should look like.
meillo@31 96 I wanted to see where that would lead to.
meillo@31 97 I wanted to create a usable alternative version to be compared with
meillo@31 98 the present state of nmh.
meillo@31 99 My work should be proved successful or failed.
meillo@31 100 The nmh project would not be hurt by my work, but
meillo@31 101 it would profit from my experiences.
meillo@28 102
meillo@30 103 .U2 "Focus of this Document
meillo@8 104 .P
meillo@31 105 This document describes my work on the experimental nmh version, named
meillo@31 106 \fImmh\fP. It explains the changes to nmh, with focus on their reasons.
meillo@31 107 It discusses technical, historical, social and philosophical considerations.
meillo@31 108 On the technical side, this document
meillo@31 109 explains how an existing project was stream-lined by removing rough edges
meillo@31 110 and exploiting the central concepts better.
meillo@31 111 On the historical
meillo@31 112 side, changes through time in the use cases and the email features,
meillo@31 113 as well as the reactions to them, are discussed.
meillo@31 114 Socially, this document describes the effects
meillo@28 115 and experiences of a newcomer with revolutionary aims entering an old
meillo@31 116 and matured software projects.
meillo@31 117 Finally, philosophical thoughts on style, mainly based to the Unix philosophy,
meillo@31 118 are present throughout the discussions.
meillo@23 119 .P
meillo@31 120 This document is written for the community around MH-like mail systems,
meillo@31 121 including developers and users.
meillo@31 122 First of all, the document shall explain the design goals and
meillo@31 123 implementation decisions for mmh. But as well, it shall clarify my
meillo@30 124 personal perception of the
meillo@31 125 concepts of MH and Unix, and explain my therefrom resulting point of view.
meillo@31 126 Despite the focus on MH-like systems, this document may be worthwhile
meillo@31 127 to anyone interested in the Unix philosophy and anyone in contact to
meillo@31 128 old software projects, be it code or community-related.
meillo@28 129 .P
meillo@30 130 The reader is expected to have good knowledge of Unix, C and emailing.
meillo@30 131 Good Unix shell
meillo@28 132 knowledge, including shell scripting, is required. MH relies fundamentally
meillo@28 133 on the shell. Without the power of the shell, MH becomes a motorbike
meillo@30 134 without winding roads: boring.
meillo@31 135 Introductions to Unix and its shell can be found in ``The UNIX Programming
meillo@37 136 Environment'' by Kernighan and Pike
meillo@37 137 .[
meillo@37 138 kernighan pike unix prog env
meillo@37 139 .]
meillo@37 140 or ``The UNIX System'' by Bourne.
meillo@37 141 .[
meillo@37 142 bourne unix system
meillo@37 143 .]
meillo@28 144 The reader is
meillo@28 145 expected to be familiar with the C programming language, although the
meillo@30 146 document should be understandable without knowledge of C, too.
meillo@37 147 ``The C Programming Language'' by Kernighan and Ritchie
meillo@37 148 .[
meillo@37 149 kernighan ritchie c prog lang
meillo@37 150 .]
meillo@37 151 is the definitive guide to C.
meillo@28 152 Some book about system-level C programming is worthwile additional
meillo@28 153 literature. Rochkind and Curry have written such books.
meillo@37 154 .[
meillo@37 155 rochkind advanced unix prog
meillo@37 156 .]
meillo@37 157 .[
meillo@37 158 curry system prog
meillo@37 159 .]
meillo@31 160 As large parts of the code are old, old books are likely more helpful
meillo@31 161 to understanding.
meillo@28 162 The format of email messages as well as the structure of email transfer
meillo@28 163 systems should be familiar to the reader, at least on a basic level.
meillo@31 164 It's advisable to have at least cross-read the RFCs 821 and 822.
meillo@31 165 Further more, basic understanding of MIME is good to have.
meillo@31 166 The Wikipedia provides good introduction-level information to email.
meillo@28 167 Frequent references to the Unix philosophy will be made.
meillo@34 168 Gancarz had tried to sum the philosophy up in his book
meillo@34 169 ``The UNIX Philosophy''.
meillo@34 170 .[
meillo@34 171 gancarz unix phil
meillo@34 172 .]
meillo@34 173 Even better but less concrete are ``The UNIX Programming Environment''
meillo@34 174 .[
meillo@34 175 kernighan pike unix prog env
meillo@34 176 .]
meillo@34 177 and ``The Practice of Programming''
meillo@34 178 .[
meillo@34 179 kernighan pike practice of prog
meillo@34 180 .]
meillo@34 181 by Kernighan and Pike.
meillo@34 182 The term paper ``Why the Unix Philosophy still matters''
meillo@34 183 .[
meillo@34 184 why unix phil still matters schnalke
meillo@34 185 .]
meillo@34 186 by myself
meillo@28 187 provides an overview on the topic, including a case study of MH.
meillo@30 188 Although a brief introduction to MH is provided in Chapter 1, the reader
meillo@30 189 is encouraged to have a look at the \fIMH Book\fP by Jerry Peek.
meillo@34 190 .[
meillo@34 191 peek mh
meillo@34 192 .]
meillo@30 193 It is the definitive guide to MH and nmh.
meillo@31 194 The current version is available freely on the Internet.
meillo@30 195 .P
meillo@30 196 This document is neither a user's tutorial to mmh nor an introduction
meillo@31 197 to any of the topics covered. It discusses Unix, email
meillo@30 198 and system design on an advanced level.
meillo@30 199 However, as knowledge of the fundamental concepts is the most valuable
meillo@31 200 information a user can aquire about some program or software system,
meillo@31 201 this document might be worth a read for non-developers as well.
meillo@8 202
meillo@8 203
meillo@28 204 .U2 "Organization
meillo@0 205 .P
meillo@28 206 Which font for what use.
meillo@28 207 Meaning of `foo(1)'.
meillo@28 208 RFCs.
meillo@28 209 .P
meillo@28 210 This thesis is devided into XXX chapters, ...
meillo@24 211 .P
meillo@24 212 .I Chapter 1
meillo@24 213 introduces ...
meillo@24 214 .P
meillo@24 215 .I Chapter 2
meillo@24 216 describes ...
meillo@24 217 .P
meillo@24 218 .I Chapter 3
meillo@24 219 covers ...
meillo@24 220
meillo@23 221
meillo@28 222 .U2 "Acknowledgments
meillo@23 223 .P
meillo@24 224 To be written at the very end.
meillo@0 225
meillo@0 226
meillo@0 227 .\" End or Preface. Start of the normal text.
meillo@0 228 .\" Switch to arabic page numbers and start on a right page.
meillo@30 229 .
meillo@8 230 .if e \{
meillo@8 231 . pn 1
meillo@8 232 . af PN 1
meillo@8 233 .\}
meillo@8 234 .if o \{
meillo@8 235 . pn 0
meillo@8 236 . af PN 0
meillo@8 237 . bp
meillo@8 238 .\}