comparison preface.roff @ 31:029e11dd4de1

Rework in Preface.
author markus schnalke <meillo@marmaro.de>
date Mon, 14 May 2012 11:11:24 +0200
parents d996f130e279
children 2fea9739507f
comparison
equal deleted inserted replaced
30:d996f130e279 31:029e11dd4de1
3 .P 3 .P
4 MH is a set of mail handling tools with a common concept, like 4 MH is a set of mail handling tools with a common concept, like
5 the Unix toolchest is a set of file handling tools with a common 5 the Unix toolchest is a set of file handling tools with a common
6 concept. nmh is the currently most popular implementation of an 6 concept. nmh is the currently most popular implementation of an
7 MH-like mail handling system. 7 MH-like mail handling system.
8 This thesis describes creating an experimental version of nmh, 8 This thesis describes an experimental version of nmh,
9 named \fImmh\fP, 9 named \fImmh\fP.
10 to modernize, stream-line and to exploit the concepts 10 The project goals for mmh are modernizing, stream-lining and exploiting
11 even more thoroughly. 11 MH's concepts even more thoroughly.
12 12
13 .U2 "Background to this Thesis 13 .U2 "Background to this Thesis
14 .P 14 .P
15 I have discovered nmh in September 2009. At that time I used to use the 15 I have discovered nmh in September 2009. At that time I used to use the
16 mail client mutt, like many command line-attracted Unix users do. 16 mail client \fImutt\fP, like many advanced Unix users do.
17 The concepts of nmh had convinced me at once and thus learning 17 As I read about nmh, its concepts had convinced me at once.
18 its different model of email handling had been relatively easy. 18 Learning its different model of email handling had been relatively easy,
19 The change was like 19 because my starting situation was being convinced of the concepts.
20 The transition from mutt to nmh was similar to
20 managing files in the Unix shell when being used to graphical file 21 managing files in the Unix shell when being used to graphical file
21 managers, or like learning vi when being used to modeless editors. 22 managers, or like editing with vi when being used to modeless editors.
22 The transition had not been trivial but, as I was convinced by the new 23 Such a change is not trivial, but in being convinced by the
23 concepts and 24 concepts and by having done similar transitions for file management
24 already managed my files with shell tools and edited with vi, not too 25 and editing already, it was not too difficult neither.
25 difficult neither.
26 In contrast, setting up nmh to a convenient state became a tendious task 26 In contrast, setting up nmh to a convenient state became a tendious task
27 that took several months. 27 that took several months.
28 .P 28 .P
29 Once having nmh arranged to a convenient state, I enjoyed using it 29 Once having nmh arranged to a convenient state, I enjoyed using it
30 because of its conceptional elegance and its scripting capabilities. 30 because of its conceptional elegance and its scripting capabilities.
31 On the other hand, however, it still was 31 On the other hand, however, it still was
32 inconvenient in handling attachments, non-ASCII character encodings, 32 inconvenient for handling attachments, non-ASCII character encodings,
33 and similar features of modern emailing. 33 and similar features of modern emailing.
34 My setup required more and more additional configuration and helper scripts 34 My setup demanded more and more additional configuration and helper scripts
35 to have nmh act the way I expected it to behave, although my 35 to get nmh behave the way I wanted, although my
36 expectations were rather common for modern emailing than exceptionel. 36 expectations were rather common for modern emailing.
37 In being a software developer, I wanted to improve the situation. 37 In being a computer scientist and programmer,
38 .P 38 I wanted to improve the situation.
39 In Spring 2010, I asked on the nmh-workers mailing list for the 39 .P
40 possibility to offer a Google Summer of Code project on nmh. 40 In Spring 2010, I asked on the \fInmh-workers\fP mailing list for the
41 possibility to offer a Google Summer of Code project.
41 Participating in the development this way appeared attractive to me, 42 Participating in the development this way appeared attractive to me,
42 especially as it would have been possible to have the project 43 as it would have been possible to have the project
43 accepted at university. Although the nmh community 44 accepted at university. Although generally the nmh community
44 generally had been positive on the 45 had been positive on the
45 suggestion, eventually it had not been possible to manage the 46 suggestion, the administrative work had been to much, eventually.
46 administrative work. Though my proposal had started the nmh community 47 But my proposal had activated the nmh community.
47 to move. In the following weeks, goals for nmh's future were discussed 48 In the following weeks, goals for nmh's future were discussed.
48 on the list. During the discussions, I became involved in the 49 In these discussions, I became involved in the
49 question whether nmh should be an MTA. (Thread subject: 50 question whether nmh should be an MTA. (Thread subject:
50 ``should nmh be an MTA or an MUA?''.) 51 ``should nmh be an MTA or an MUA?''.)
51 In this point, my opinion differed from the opinion of most others 52 In this central point, my opinion differed from the opinion of most others.
52 as I voted for the MTA facility of nmh to be removed. 53 I argued for the MTA facility of nmh to be removed.
53 .P 54 Besides the discussions, hardly any real work was done.
54 Being unable to work on nmh in a way that would be 55 Being unable to work on nmh in a way that would be
55 accepted as part of my official studies, I had to pick another project. 56 accepted as part of my official studies, I needed to choose another project.
57 .P
56 Half a year later, starting in August 2010, 58 Half a year later, starting in August 2010,
57 I took one semester off to travel through Latin America. 59 I took one semester off to travel through Latin America.
58 Within this time, I had to do practical computer work for three 60 Within this time, I had to do practical computer work for three months.
59 months.
60 This brought me back to nmh. 61 This brought me back to nmh.
61 Richard Sandelman, an active nmh user, made it possible for 62 Richard Sandelman, an active nmh user, made it possible for
62 me to work on nmh. Juan Granda, living in Santiago del 63 me to work on nmh. Juan Granda, living in Santiago del
63 Estero in Argentina, provided a computer and Internet connection for 64 Estero in Argentina, provided a computer with Internet connection for
64 my work. 65 my work. Thanks to them, I was able to work on nmh during my three-month
65 Within the three month, I became familiar with nmh's code base and 66 stay in Argentina.
66 its community. I learned how things work. Quickly it became obvious that 67 Within this time, I became familiar with nmh's code base and
67 I wouldn't succeed with my main goal, to improve the character 68 community. I learned how things work. Quickly it became obvious that
68 encoding handling within the project. One obvious problem is the missing 69 I wouldn't succeed with my main goal: improving the character
69 transfer decoding of the quoted text in replies. 70 encoding handling within the project. One of its ramifications is the
71 missing transfer decoding of quoted text in replies.
70 As this is one of the most intricate parts of the system, the goal 72 As this is one of the most intricate parts of the system, the goal
71 was simply too difficult to reach. 73 was simply set too high. Hence, I dropped the original plan.
72 Instead I improved the code as I read through it. I found minor bugs 74 Instead, I improved the code base as I read through it. I found minor bugs
73 for which I proposed fixes to the community. Also I 75 for which I proposed fixes to the community. In the same go, I
74 could improve the documentation. When I started with 76 improved the documentation in minor ways. When I started with
75 larger code changes, I had to discover that the community's wish for 77 larger code changes, I had to discover that the community was reluctant
76 compatibility was stronger than its wish for convenient 78 to change. Its wish for compatibility was much stronger than its
77 out-of-the-box setups \(en in contrast with my opinion. 79 wish for convenient out-of-the-box setups \(en in contrast to my opinion.
78 This lead to long discussions, again. 80 This lead to long discussions, again.
79 I came to understand their point of view, but it simply is not mine. 81 I came to understand their point of view, but it is different to mine.
80 .P
81 At the end of my three-month project, I had become familiar with 82 At the end of my three-month project, I had become familiar with
82 nmh's code base and its community. I had improved the project a bit 83 nmh's code base and community. I had improved the project in minor ways,
83 and I still was convinced that I wanted to go on with that. 84 and I still was convinced that I wanted to go on to do so.
84 .P 85 .P
85 Another half a year later, the end of my studies came within reach. 86 Another half a year later, the end of my studies came within reach.
86 I needed a topic for my master's thesis. 87 I needed a topic for my master's thesis.
87 There was no question: I wanted to work on nmh. 88 There was no question: I wanted to work on nmh.
88 But well, not exactly on nmh, 89 But well, not exactly on nmh,
89 because I had accepted that the nmh community has different goals 90 because I had accepted that the nmh community has different goals
90 than I have. This would result in long discussions and thus few progress. 91 than I have. This would result in much discussion and thus little progress.
91 After careful thought, I decided to start an experimental version of nmh. 92 After careful thought, I decided to start an experimental version of nmh.
92 I wanted to follow my own ideas of how nmh should look like. I wanted 93 I wanted to implement my own ideas of how an MH-like system should look like.
93 to see where that would lead to. I wanted to compare the result of my 94 I wanted to see where that would lead to.
94 work to the present state of nmh. Time should prove me successful or 95 I wanted to create a usable alternative version to be compared with
95 not. 96 the present state of nmh.
96 Nmh would hardly be hurt by my work as I would not interfere with 97 My work should be proved successful or failed.
97 them. But nmh would profit from my experiences. 98 The nmh project would not be hurt by my work, but
99 it would profit from my experiences.
98 100
99 .U2 "Focus of this Document 101 .U2 "Focus of this Document
100 .P 102 .P
101 This document describes my work on the experimental version, named 103 This document describes my work on the experimental nmh version, named
102 \fImmh\fP. It explains the changes I did to nmh, with having the focus 104 \fImmh\fP. It explains the changes to nmh, with focus on their reasons.
103 on the reasons for the changes. It discusses technical, historical, 105 It discusses technical, historical, social and philosophical considerations.
104 social and philosophical reasons. On the technical side, this document 106 On the technical side, this document
105 explains how an existing project was stream-lined by exploiting the 107 explains how an existing project was stream-lined by removing rough edges
106 central concepts better and removing rough edges. On the historical 108 and exploiting the central concepts better.
107 side, changes in the use cases and the features of email and reactions 109 On the historical
108 to them are discussed. Socially, this document describes the effects 110 side, changes through time in the use cases and the email features,
111 as well as the reactions to them, are discussed.
112 Socially, this document describes the effects
109 and experiences of a newcomer with revolutionary aims entering an old 113 and experiences of a newcomer with revolutionary aims entering an old
110 and matured software projects and its community. Finally, philosophical 114 and matured software projects.
111 thoughts on style, mainly based to the Unix philosophy, are present 115 Finally, philosophical thoughts on style, mainly based to the Unix philosophy,
112 throughout the discussions. 116 are present throughout the discussions.
113 .P 117 .P
114 This document is written for the community around MH-like mail systems 118 This document is written for the community around MH-like mail systems,
115 \(en developers and users. 119 including developers and users.
116 First of all, the document shall propagade the design goals and 120 First of all, the document shall explain the design goals and
117 implementation decisions of mmh. But as well, it shall clarify my 121 implementation decisions for mmh. But as well, it shall clarify my
118 personal perception of the 122 personal perception of the
119 concepts of MH and Unix, and explain the therefrom resulting point of view. 123 concepts of MH and Unix, and explain my therefrom resulting point of view.
120 Despite the focus on MH-like systems, this document can be worthwhile 124 Despite the focus on MH-like systems, this document may be worthwhile
121 to anyone interested in the Unix philosophy, as well as anyone 125 to anyone interested in the Unix philosophy and anyone in contact to
122 involved in old software projects, be it code or community-related. 126 old software projects, be it code or community-related.
123 .P 127 .P
124 The reader is expected to have good knowledge of Unix, C and emailing. 128 The reader is expected to have good knowledge of Unix, C and emailing.
125 Good Unix shell 129 Good Unix shell
126 knowledge, including shell scripting, is required. MH relies fundamentally 130 knowledge, including shell scripting, is required. MH relies fundamentally
127 on the shell. Without the power of the shell, MH becomes a motorbike 131 on the shell. Without the power of the shell, MH becomes a motorbike
128 without winding roads: boring. 132 without winding roads: boring.
129 Introductions to Unix and its shell can be found in XXX. 133 Introductions to Unix and its shell can be found in ``The UNIX Programming
134 Environment'' by Kernighan and Pike or ``The UNIX System'' by Bourne.
130 The reader is 135 The reader is
131 expected to be familiar with the C programming language, although the 136 expected to be familiar with the C programming language, although the
132 document should be understandable without knowledge of C, too. 137 document should be understandable without knowledge of C, too.
133 The book by Kernighan and Ritchie is the definitive guide to C. 138 ``The C Programming Language'' by Kernighan and Ritchie is the
139 definitive guide to C.
134 Some book about system-level C programming is worthwile additional 140 Some book about system-level C programming is worthwile additional
135 literature. Rochkind and Curry have written such books. 141 literature. Rochkind and Curry have written such books.
136 As large parts of the code are old, old books are likely more helpful. 142 As large parts of the code are old, old books are likely more helpful
143 to understanding.
137 The format of email messages as well as the structure of email transfer 144 The format of email messages as well as the structure of email transfer
138 systems should be familiar to the reader, at least on a basic level. 145 systems should be familiar to the reader, at least on a basic level.
139 It's advisable to have had, at least cross-read, the RFCs 821 and 822. 146 It's advisable to have at least cross-read the RFCs 821 and 822.
140 The book XXX introduces email well, too. 147 Further more, basic understanding of MIME is good to have.
148 The Wikipedia provides good introduction-level information to email.
141 Frequent references to the Unix philosophy will be made. 149 Frequent references to the Unix philosophy will be made.
142 Gancarz XXX had tried to sum the philosophy up. Even better but less 150 Gancarz had tried to sum the philosophy up in his book ``The UNIX Philosophy''.
143 concrete is the literature by Kernighan and Pike XXX. 151 Even better but less concrete are ``The UNIX Programming Environment'' and
152 ``The Practice of Programming'' by Kernighan and Pike.
144 The term paper ``Why the Unix Philosophy still matters'' by myself 153 The term paper ``Why the Unix Philosophy still matters'' by myself
145 provides an overview on the topic, including a case study of MH. 154 provides an overview on the topic, including a case study of MH.
146 Although a brief introduction to MH is provided in Chapter 1, the reader 155 Although a brief introduction to MH is provided in Chapter 1, the reader
147 is encouraged to have a look at the \fIMH Book\fP by Jerry Peek. 156 is encouraged to have a look at the \fIMH Book\fP by Jerry Peek.
148 It is the definitive guide to MH and nmh. 157 It is the definitive guide to MH and nmh.
149 The current version is available freely on the Internet XXX. 158 The current version is available freely on the Internet.
150 .P 159 .P
151 This document is neither a user's tutorial to mmh nor an introduction 160 This document is neither a user's tutorial to mmh nor an introduction
152 to any of the topics covered. It contains discussions on Unix, email 161 to any of the topics covered. It discusses Unix, email
153 and system design on an advanced level. 162 and system design on an advanced level.
154 However, as knowledge of the fundamental concepts is the most valuable 163 However, as knowledge of the fundamental concepts is the most valuable
155 information over some program or software system a user can aquire, 164 information a user can aquire about some program or software system,
156 this document might be worth a read for non-developers too. 165 this document might be worth a read for non-developers as well.
157 166
158 167
159 .U2 "Organization 168 .U2 "Organization
160 .P 169 .P
161 Which font for what use. 170 Which font for what use.