comparison ch01.roff @ 106:3c4e5f0a7e7b

Included (English language) corrections by Kate.
author markus schnalke <meillo@marmaro.de>
date Sat, 23 Jun 2012 22:08:17 +0200
parents a782488c85f5
children
comparison
equal deleted inserted replaced
105:9ff356d84c57 106:3c4e5f0a7e7b
8 MH-like mail handling system. 8 MH-like mail handling system.
9 This thesis describes an experimental version of nmh, named \fImmh\fP. 9 This thesis describes an experimental version of nmh, named \fImmh\fP.
10 .P 10 .P
11 This chapter introduces MH, its history, concepts and how it is used. 11 This chapter introduces MH, its history, concepts and how it is used.
12 It describes nmh's code base and community to give the reader 12 It describes nmh's code base and community to give the reader
13 a better understanding of the state from which mmh started off. 13 a better understanding of the state of mmh when it started off.
14 Further more, this chapter outlines the mmh project itself, 14 Further more, this chapter outlines the mmh project itself,
15 describing the motivation for it and its goals. 15 describing the motivation for it and its goals.
16 16
17 17
18 .H1 "MH \(en the Mail Handler 18 .H1 "MH \(en the Mail Handler
27 MH follows this philosophy. 27 MH follows this philosophy.
28 28
29 .U2 "History 29 .U2 "History
30 .P 30 .P
31 In 1977 at RAND Corporation, Norman Shapiro and Stockton Gaines 31 In 1977 at RAND Corporation, Norman Shapiro and Stockton Gaines
32 had proposed the design 32 proposed the design
33 of a new mail handling system, called ``Mail Handler'' (MH), 33 of a new mail handling system, called ``Mail Handler'' (MH),
34 to superseed RAND's old monolithic ``Mail System'' (MS). 34 to superseed RAND's old monolithic ``Mail System'' (MS).
35 Two years later, in 1979, Bruce Borden took the proposal and implemented a 35 Two years later, in 1979, Bruce Borden took the proposal and implemented a
36 prototype of MH. 36 prototype of MH.
37 Before the prototype had been available, the concept was 37 Before the prototype's existence, the concept was
38 believed to be practically unusable. 38 believed to be practically unusable.
39 But the prototype had proven successful and replaced MS thereafter. 39 But the prototype proved successful and replaced MS thereafter.
40 In replacing MS, MH grew to an all-in-one mail system. 40 In replacing MS, MH grew to an all-in-one mail system.
41 .P 41 .P
42 In the early Eighties, 42 In the early eighties,
43 the University of California at Irvine (UCI) had started to use MH. 43 the University of California at Irvine (UCI) started to use MH.
44 Marshall T. Rose and John L. Romine became the driving force then. 44 Marshall T. Rose and John L. Romine then became the driving force.
45 They took over the development and pushed MH forward. 45 They took over the development and pushed MH forward.
46 RAND had put the code into the public domain by then. 46 RAND had put the code into the public domain by then.
47 MH was developed at UCI at the time when the Internet appeared, 47 MH was developed at UCI at the time when the Internet appeared,
48 when UCB implemented the TCP/IP stack, and when Allman wrote Sendmail. 48 when UCB implemented the TCP/IP stack, and when Allman wrote Sendmail.
49 MH was extended as emailing became more featured. 49 MH was extended as emailing became more featured.
50 The development of MH was closely related to the development of email 50 The development of MH was closely related to the development of email
51 RFCs. In the advent of MIME, MH was the first implementation of this new 51 RFCs. In the advent of MIME, MH was the first implementation of this new
52 email standard. 52 email standard.
53 .P 53 .P
54 In the Nineties, the Internet had become popular and in December 1996, 54 In the nineties, the Internet had become popular and in December 1996,
55 Richard Coleman initiated the ``New Mail Handler'' (nmh) project. 55 Richard Coleman initiated the ``New Mail Handler'' (nmh) project.
56 Nmh is a fork of MH 6.8.3 and bases strongly on the 56 Nmh is a fork of MH 6.8.3 and bases strongly on the
57 \fILBL changes\fP by Van Jacobson, Mike Karels and Craig Leres. 57 \fILBL changes\fP by Van Jacobson, Mike Karels and Craig Leres.
58 Colman intended to modernize MH and improve its portability and 58 Colman intended to modernize MH and improve its portability and
59 MIME handling capabilities. 59 MIME handling capabilities.
62 February 1996, soon after the development of nmh had started. 62 February 1996, soon after the development of nmh had started.
63 Today, nmh has almost completely replaced the original MH. 63 Today, nmh has almost completely replaced the original MH.
64 Some systems might still provide old MH, but mainly for historical reasons. 64 Some systems might still provide old MH, but mainly for historical reasons.
65 .P 65 .P
66 In the last years, the work on nmh was mostly maintenance work. 66 In the last years, the work on nmh was mostly maintenance work.
67 However, the development revived in December 2011 67 However, development was revived in December 2011
68 and stayed busy since then. 68 and stayed busy since then.
69 69
70 .U2 "Concepts 70 .U2 "Concepts
71 .P 71 .P
72 MH consists of a set of tools, each covering a specific task of 72 MH consists of a set of tools, each covering a specific task of
74 refiling a message to a different folder, listing the messages in a folder. 74 refiling a message to a different folder, listing the messages in a folder.
75 All of the programs operate on a common mail storage. 75 All of the programs operate on a common mail storage.
76 .P 76 .P
77 The mail storage consists of \fImail folders\fP (directories) and 77 The mail storage consists of \fImail folders\fP (directories) and
78 \fPmessages\fP (regular files). 78 \fPmessages\fP (regular files).
79 Each message is stored in a separate file in the format it had been 79 Each message is stored in a separate file in the format it was
80 received (i.e. transfer format). 80 received (i.e. transfer format).
81 The files are named with ascending numbers in each folder. 81 The files are named with ascending numbers in each folder.
82 The specific format of the mail storage characterizes MH in the same way 82 The specific format of the mail storage characterizes MH in the same way
83 like the format of the file system characterizes Unix. 83 as the format of the file system characterizes Unix.
84 .P 84 .P
85 MH tools maintain a \fIcontext\fP, which includes the current mail folder. 85 MH tools maintain a \fIcontext\fP, which includes the current mail folder.
86 Processes in Unix have a similar context, containing the current working 86 Processes in Unix have a similar context, containing the current working
87 directory, for instance. In contrast, the process context is maintained 87 directory, for instance. In contrast, the process context is maintained
88 by the Unix kernel automatically, whereas MH tools need to maintain the MH 88 by the Unix kernel automatically, whereas MH tools need to maintain the MH
89 context themselves. 89 context themselves.
90 The user can have one MH context or multiple ones, he can even share it 90 The user can have one MH context or multiple ones; he can even share it
91 with other users. 91 with others.
92 .P 92 .P
93 Messages are named by their numeric filename, but they can have symbolic names, 93 Messages are named by their numeric filename, but they can have symbolic names,
94 too. These are either automatically updated 94 too. These are either automatically updated
95 position names like being the next or the last message, 95 position names such as the next or the last message,
96 or user-settable group names for arbitrary sets of messages. 96 or user-settable group names for arbitrary sets of messages.
97 These names are called sequences. 97 These names are called sequences.
98 Sequences can be bound to the containing folder or to the context. 98 Sequences can be bound to the containing folder or to the context.
99 .P 99 .P
100 The user's \fIprofile\fP is a file that contains his MH configuration. 100 The user's \fIprofile\fP is a file that contains his MH configuration.
146 146
147 147
148 .U2 "Using MH 148 .U2 "Using MH
149 .P 149 .P
150 It is strongly recommended to have a look at the MH Book, 150 It is strongly recommended to have a look at the MH Book,
151 which introduces well into using MH. 151 which offers a thorough introduction to using MH.
152 .[ [ 152 .[ [
153 peek mh book 153 peek mh book
154 .], Part II] 154 .], Part II]
155 Rose and Romine provide a deeper and more technical 155 Rose and Romine provide a deeper and more technical
156 though slightly outdated introduction in only about two dozens pages. 156 though slightly outdated introduction in only about two dozens pages.
158 rose romine real work 158 rose romine real work
159 .] 159 .]
160 .P 160 .P
161 Following is an example mail handling session. 161 Following is an example mail handling session.
162 It uses mmh but is mostly compatible with nmh and old MH. 162 It uses mmh but is mostly compatible with nmh and old MH.
163 Details might vary but the look'n'feel is the same. 163 Details might vary but the look and feel is the same.
164 164
165 .VF input/mh-session 165 .VF input/mh-session
166 166
167 167
168 .H1 "nmh: Code and Community 168 .H1 "nmh: Code and Community
169 .P 169 .P
170 In order to understand the condition, goals and dynamics of a project, 170 In order to understand the condition, goals and dynamics of a project,
171 one needs to know the reasons. 171 one needs to know the reasons behind them.
172 This section explains the background. 172 This section explains the background.
173 .P 173 .P
174 MH predates the Internet, it comes from times before networking was universal, 174 MH predates the Internet; it comes from times before networking was universal,
175 it comes from times when emailing was small, short and simple. 175 it comes from times when emailing was small, short and simple.
176 Then it grew, spread and adopted to the changes email went through. 176 Then it grew, spread and adapted to the changes email went through.
177 Its core-concepts, however, remained the same. 177 Its core-concepts, however, remained the same.
178 During the Eighties students at UCI actively worked on MH. 178 During the eighties, students at UCI actively worked on MH.
179 They added new features and optimized the code for the then popular systems. 179 They added new features and optimized the code for the then popular systems.
180 All this still was in times before POSIX and ANSI C. 180 All this still was in times before POSIX and ANSI C.
181 As large parts of the code stem from this time, today's nmh source code 181 As large parts of the code stem from this time, today's nmh source code
182 still contains many ancient parts. 182 still contains many ancient parts.
183 BSD-specific code and constructs tailored for hardware of that time 183 BSD-specific code and constructs tailored for hardware of that time
184 are frequent. 184 are frequent.
185 .P 185 .P
186 Nmh started about a decade after the POSIX and ANSI C standards had been 186 Nmh started about a decade after the POSIX and ANSI C standards were
187 established. A more modern coding style entered the code base, but still 187 established. A more modern coding style entered the code base, but still
188 a part of the developers came from ``the old days''. The developer 188 a part of the developers came from ``the old days''. The developer
189 base became more diverse and thus resulted in code of different style. 189 base became more diverse, thus broadening the range of different
190 coding styles.
190 Programming practices from different decades merged in the project. 191 Programming practices from different decades merged in the project.
191 As several peers added code, the system became more a conglomeration 192 As several peers added code, the system became more a conglomeration
192 of single tools rather than a homogeneous of-one-cast mail system. 193 of single tools rather than a homogeneous of-one-cast mail system.
193 Still, the existing basic concepts held it together. 194 Still, the existing basic concepts held it together.
194 They were mostly untouched throughout the years. 195 They were mostly untouched throughout the years.
195 .P 196 .P
196 Despite the tool chest approach at the surface \(en a collection 197 Despite the separation of the tool chest approach at the surface
197 of separate small programs \(en on the source code level 198 \(en a collection of small, separate programs \(en
198 it is much more interweaved. 199 on the source code level, it is much more interweaved.
199 Several separate components were compiled into one program 200 Several separate components were compiled into one program
200 for efficiency reasons. 201 for efficiency reasons.
201 This lead to intricate innards. 202 This led to intricate innards.
202 Unfortunately, the clear separation on the outside appeared as being 203 While clearly separated on the outside,
203 pretty interweaved inside. 204 the programs turned out to be fairly interweaved inside.
204 .P 205 .\" XXX FIXME rewrite...
205 The advent of MIME rose the complexity of email by a magnitude. 206 .\" Unfortunately, the clear separation on the outside turned out to be
207 .\" fairly interweaved inside.
208 .P
209 The advent of MIME raised the complexity of email by a magnitude.
206 This is visible in nmh. The MIME-related parts are the most complex ones. 210 This is visible in nmh. The MIME-related parts are the most complex ones.
207 It's also visible that MIME support had been added on top of the old MH core. 211 It is also visible that MIME support was added on top of the old MH core.
208 MH's tool chest style made this easily possible and encourages 212 MH's tool chest style made this easily possible and encourages
209 such approaches, but unfortunately, it lead to duplicated functions 213 such approaches, but unfortunately, it led to duplicated functions
210 and half-hearted implementation of the concepts. 214 and half-hearted implementation of the concepts.
211 .P 215 .P
212 To provide backward-compatibility, it is a common understanding to not 216 To provide backward-compatibility, it is a common understanding to not
213 change the default settings. 217 change the default settings.
214 In consequence, the user needs to activate modern features explicitly 218 In consequence, the user needs to activate modern features explicitly
215 to be able to use them. 219 to be able to use them.
216 This puts a burden on new users, because out-of-the-box nmh remains 220 This puts a burden on new users, because out-of-the-box nmh remains
217 in the same ancient style. 221 in the same ancient style.
218 If nmh is seen to be a back-end, then this compatibility surely is important. 222 If nmh is seen to be a back-end, then this compatibility surely is important.
219 However, in the same go, new users have difficulties to use nmh for modern 223 However, in the same go, new users have difficulties using nmh for modern
220 emailing. 224 emailing.
221 The small but matured community around nmh hardly needs much change 225 The small but mature community around nmh needs few change
222 as they have their convenient setups since decades. 226 as they have had their convenient setups for decades.
223 227
224 228
225 .H1 "mmh 229 .H1 "mmh
226 .P 230 .P
227 I started to work on my experimental version in October 2011, 231 I started to work on my experimental version in October 2011,
228 at a time when there were no more than three commits to nmh 232 at a time when there had been no more than three commits to nmh
229 since the beginning of the year. 233 since the beginning of the year.
230 In December, when I announced my work in progress on the 234 In December, when I announced my work in progress on the
231 nmh-workers mailing list, 235 nmh-workers mailing list,
232 .[ 236 .[
233 nmh-workers mmh announce December 237 nmh-workers mmh announce December
236 This movement was heavily pushed by Paul Vixie's ``edginess'' comment. 240 This movement was heavily pushed by Paul Vixie's ``edginess'' comment.
237 .[ 241 .[
238 nmh-workers vixie edginess 242 nmh-workers vixie edginess
239 .] 243 .]
240 After long years of stagnation, nmh became actively developed again. 244 After long years of stagnation, nmh became actively developed again.
241 Hence, while I was working on mmh, the community was working on nmh, 245 Hence, while I was working on mmh, the community was once more working
242 in parallel. 246 on nmh, in parallel.
243 .P 247 .P
244 The name \fImmh\fP may stand for \fImodern mail handler\fP, 248 The name \fImmh\fP may stand for \fImodern mail handler\fP,
245 because the project tries to modernize nmh. 249 because the project tries to modernize nmh.
246 Personally however, I prefer to call mmh \fImeillo's mail handler\fP, 250 Personally however, I prefer to call mmh \fImeillo's mail handler\fP,
247 emphasizing that the project follows my visions and preferences. 251 emphasizing that the project follows my visions and preferences.
258 .P 262 .P
259 MH is the most important of very few command line tool chest email systems. 263 MH is the most important of very few command line tool chest email systems.
260 Tool chests are powerful because they can be perfectly automated and 264 Tool chests are powerful because they can be perfectly automated and
261 extended. They allow arbitrary kinds of front-ends to be 265 extended. They allow arbitrary kinds of front-ends to be
262 implemented on top of them quickly and without internal knowledge. 266 implemented on top of them quickly and without internal knowledge.
263 Additionally, tool chests are much better to maintain than monolithic 267 Additionally, tool chests are easier to maintain than monolithic
264 programs. 268 programs.
265 As there are few tool chests for emailing and as MH-like ones are the most 269 As there are few tool chests for emailing and as MH-like ones are the most
266 popular among them they should be developed further. 270 popular among them, they should be developed further.
267 This keeps their 271 This keeps their
268 conceptional elegance and unique scripting qualities available to users. 272 conceptional elegance and unique scripting qualities available to users.
269 Mmh will create a modern and convenient entry point to MH-like systems 273 Mmh creates a modern and convenient entry point to MH-like systems
270 for new and interested users. 274 for new and interested users.
271 .P 275 .P
272 The mmh project is motivated by deficits of nmh and 276 The mmh project is motivated by deficits of nmh and
273 my wish for general changes, combined 277 my wish for general changes, combined
274 with the nmh community's reluctancy to change. 278 with the nmh community's reluctancy to change.
275 .P 279 .P
276 nmh hadn't adjusted to modern emailing needs well enough. 280 At that time, nmh had not adjusted to modern emailing needs well enough.
277 The default setup was completely unusable for modern emailing. 281 The default setup was completely unusable for modern emailing.
278 Too much setup work was required. 282 Too much setup work was required.
279 Several modern features were already available but the community 283 Several modern features were already available but the community
280 didn't wanted to have them as default. 284 did not want to have them as default.
281 mmh is a way to change this. 285 Mmh is a way to change this.
282 .P 286 .P
283 In my eyes, MH's concepts could be exploited even better and 287 In my eyes, MH's concepts could be exploited even better and
284 the style of the tools could be improved. Both would simplify 288 the style of the tools could be improved. Both would simplify
285 and generalize the system, providing cleaner interfaces and more 289 and generalize the system, providing cleaner interfaces and more
286 software leverage at the same time. 290 software leverage at the same time.
287 mmh is a way to demonstrate this. 291 Mmh is a way to demonstrate this.
288 .P 292 .P
289 In providing several parts of an email system, nmh can hardly 293 In providing several parts of an email system, nmh can hardly
290 compete with the large specialized projects that focus 294 compete with the large specialized projects that focus
291 on only one of the components. 295 on only one of the components.
292 The situation can be improved by concentrating the development power 296 The situation can be improved by concentrating the development power
293 on the most unique part of MH and letting the user pick his preferred 297 on the most unique part of MH and letting the user pick his preferred
294 set of other mail components. 298 set of other mail components.
295 Today's pre-packaged software components encourage this model. 299 Today's pre-packaged software components encourage this model.
296 mmh is a way to go for this approach. 300 Mmh is a way to go for this approach.
297 .P 301 .P
298 It's worthwhile to fork nmh for the development of mmh, because 302 It is worthwhile to fork nmh for the development of mmh, because
299 the two projects focus on different goals and differ in fundamental questions. 303 the two projects focus on different goals and differ in fundamental questions.
300 The nmh community's reluctance to change conflicts 304 The nmh community's reluctance regarding change conflicts
301 with my strong will to change. 305 with my strong desire for it.
302 In developing a separate experimental version new approaches can 306 In developing a separate experimental version new approaches can
303 easily be tried out without the need to discuss changes beforehand. 307 easily be tried out without the need to discuss changes beforehand.
304 In fact, revolutionary changes are hardly possible otherwise. 308 In fact, revolutionary changes are hardly possible otherwise.
305 .P 309 .P
306 The mmh project provides the basis to implemented and demonstrated 310 The mmh project implements and demonstrates the listed ideas
307 the listed ideas without the need to change nmh or its community. 311 without the need to change nmh or its community.
308 Of course, the results of the mmh project shall improve nmh, in the end. 312 Of course, the results of the mmh project shall improve nmh, in the end.
309 313
310 .U2 "Target Field 314 .U2 "Target Field
311 .P 315 .P
312 Any effort needs to be targeted towards a specific goal 316 Any effort needs to be targeted towards a specific goal