annotate ch01.roff @ 27:b687d151eed3

Reorganized the content in the Intro and added placeholders for missing parts.
author markus schnalke <meillo@marmaro.de>
date Tue, 08 May 2012 18:37:12 +0200
parents 9a313c929a2a
children 6c63083b4c19
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
1 .H0 "Introduction
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
2 .P
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
3 This chapter describes the background of the topics in this thesis.
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
4 General knowledge of electronic mail is assumed.
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
5 It explains the situation at the start of the project.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
6 It tries to describe from what state the project lifted of and where
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
7 it headed to. This shall give an overview.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
8
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
9
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
10 .H1 "Email Prerequisites
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
11 .P
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
12 XXX Do we really need that?
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
13
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
14
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
15 .H1 "What is MH?
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
16 .P
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
17 MH is an electronic mail system, originating in the RAND Corporation.
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
18 Historically, it had been a all-in-one mail system, with both Mail Transfer
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
19 Agent (MTA) and Mail User Agent (MUA).
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
20 Later, when email setups changed, Mail Submission Agent (MSA)
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
21 and Mail Retrieval Agent (MRA) facilities were added.
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
22 The MTA became less important, whereas the MUA became even more the
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
23 central part.
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
24 .P
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
25 MH defines a mail handling concept.
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
26 It had started as a design proposal, not as an implementation, and
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
27 in spirit had remained this way. This is similar to Unix, which
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
28 rather is a style of system design than specific software product.
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
29 .P
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
30 XXX Link to the Unix phil.
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
31 .P
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
32 XXX comparision to monolithic mail systems.
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
33 .P
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
34 XXX Differenciation of MUA and mail system.
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
35
11
9a313c929a2a style: Introduced .U2 for unnumbered .H2.
markus schnalke <meillo@marmaro.de>
parents: 9
diff changeset
36 .U2 "History
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
37 .P
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
38 MH is an electronic mail system, originating in the RAND Corporation.
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
39 In 1977, Norman Shapiro and Stockton Gaines had proposed the design
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
40 of a new mail handling system, called ``Mail Handler'' (MH) for RAND,
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
41 to superseed their ``Mail System'' (MS).
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
42 Two years later, in 1979, Bruce Borden took the proposal and implemented a
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
43 prototype of MH. It proved successful and replaced MS thereafter.
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
44 .P
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
45 A decade later, the University of California had started to use MH.
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
46 They also took over its development and pushed MH forward.
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
47 This had been the time when the Internet appeared, Berkeley implemented
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
48 the TCP stack, and Sendmail was born. MH had often contained the first
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
49 implementation of new RFCs.
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
50 .P
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
51 In the nineties, MH had been moved into the public domain, making it
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
52 attractive to Free Software developers. The Internet had started to become
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
53 mainstream and in 1997, Richard Coleman initiated the ``New Mail Handler''
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
54 (nmh), a fork of MH. He intended to modernize MH, improve its MIME
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
55 capabilities, and this should be done openly within the Internet
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
56 community. Today, nmh almost completely replaced the original MH.
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
57
11
9a313c929a2a style: Introduced .U2 for unnumbered .H2.
markus schnalke <meillo@marmaro.de>
parents: 9
diff changeset
58 .U2 "Concepts
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
59 .P
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
60 MH is a toolchest, modelled after the Unix toolchest. It consists of a
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
61 bunch of tools, each covering one task of email handling. These programs
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
62 operate on a common mail storage. The specific format of the mail storage
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
63 also defines MH, like the file system structure defines Unix. It
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
64 consists of directories (mail folders) and files (mail messages).
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
65 Each file contains exactly one message in the format it had been
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
66 received (i.e. transfer format). MH tools carry a state (context),
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
67 consisting of current mail folder and current message. Messages can
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
68 have symbolic names, like the next or last message or for some
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
69 arbitrary group of messages. These names are called sequences.
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
70 .P
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
71 New MH tools can be build out of existing ones easily. Default values to
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
72 commands are stored on a command name-basis, making it trivial to have
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
73 different versions of the same command with different defaults. Most
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
74 of the configuration is stored in the user's profile. Form templates,
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
75 e.g. for new messages or replies, are exchangeable and output is generally
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
76 adjustable with format files.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
77 .P
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
78 MH allows the user to automate almost everything and to modify amost
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
79 any behavior. The system is scriptable and extendable.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
80
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
81 .U2 "Available Versions
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
82 .P
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
83 Three versions of MH are available today:
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
84 .BU
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
85 .I "Original MH" .
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
86 In most cases it has been replaced by nmh, but some systems still
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
87 provide old MH. As nmh is old MH-compatible, there exist few reasons
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
88 not to upgrade to new.
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
89 The development of old MH has stopped after the 6.8.4 release in
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
90 February 1996.
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
91 .BU
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
92 .I nmh .
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
93 The most widespread version of MH was forked off version 6.8.3 in December
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
94 1996. It incorporated the \fILBL changes\fP.
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
95 It provides backward-compatible to old MH by having new featues deactivated
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
96 by default. To use them, the user needs to activate them explicitely.
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
97 Its development went slowly in the previous years, but had revived
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
98 in December 2011.
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
99 .BU
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
100 .I mmh .
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
101 This version is the subject of this thesis.
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
102 It is a descendent of nmh. It had started as a non-compatible experimental
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
103 version, but became de facto a fork. It tries to expand the same
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
104 principle concepts in a more modern way.
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
105
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
106 .U2 "Example Session
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
107 .P
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
108 Example mail handling session with mmh, but mostly compatible with nmh
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
109 and old MH. The look'n'feel is common among them.
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
110
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
111
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
112 .H1 "Understanding the Code and Community
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
113 .P
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
114 In order to understand the state, goals and dynamics of a project,
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
115 one needs to know its history. MH comes from a time before the
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
116 Internet, a time before networking became universal, a time when
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
117 emailing was small, short and simple. Then it grew, spread and
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
118 adopted to the changes. The core-concepts, however, remained the
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
119 same. During the XXX a small group of students at the University of
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
120 California, actively worked on MH. They added features and optimized,
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
121 like it is common for scientific work. This is still in pre-ANSI C
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
122 times. The source code contains many ancient parts. Code constructs
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
123 specific to BSD or hardware of that time are usual.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
124 .P
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
125 Nmh started eight years after the ANSI C standard had been
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
126 established. A more modern coding style entered the code base. Still
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
127 a part of the developers come from ``the old days''. The developer
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
128 base became more diverse and thus the code. Programming practices
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
129 from different decades merged into the project. Different coding
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
130 styles came together. It appears as if multiple peers added code
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
131 parts, resulting in a conclomeration rather than an homogenic
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
132 of-one-cast mail system. Still, the basic concepts hold it together.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
133 They were mostly untouched throughout the years.
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
134 .P
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
135 Although, at the surface, nmh is a toolchest, meaning a collection
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
136 of completely modularized small programs, on the source code level,
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
137 it is much more interweaved. Parts of the basic functions are
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
138 collected in a MH standard library, which is good, but often
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
139 separate functions are compiled into programs, for effiency reasons.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
140 This lead to intricate innards.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
141 The advent of MIME rose the complexity of email by a magnitude. This
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
142 is visible in nmh. The MIME-related parts are the most complex ones.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
143 It's also visible that MIME support had been added on top of the
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
144 original MH later. The MH style made this easily possible, but it
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
145 also lead to duplicated functions (e.g. \fLshow\fP, \fLmhshow\fP)
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
146 and had not been thoroughly included into the concepts (e.g. the
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
147 user-visible access to whole messages and MIME parts are inherently
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
148 different).
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
149 .P
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
150 For compatibility's sake, it is a common understanding to have the
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
151 default settings to be compatible, requiring any new feature to be
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
152 explicitely enabled. This puts a burden on new users, because nmh
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
153 out-of-the-box keeps staying in the same ancient style, where users
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
154 usually want to have it practical for modern emailing.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
155 But of course, this depends on if nmh is seen to be a front-end or a
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
156 back-end.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
157
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
158
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
159 .H1 "mmh
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
160
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
161 .U2 "Motivation
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
162 .P
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
163 XXX
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
164
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
165 .U2 "Why it is worth it
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
166 .P
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
167 XXX
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
168
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
169 .U2 "Target Field
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
170 .P
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
171 XXX Target field and scenarios
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
172 .P
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
173 The target user in mind likes Unix and its philosophy.
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
174 He likes to use programs that are conceptionally appealing.
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
175 He's familiar with the command line and enjoys its power.
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
176 He is at least capable of shell scripting and wants to improve his
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
177 productivity by scripting the mail system.
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
178 His computer and operating system are from post-ANSI C times.
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
179 He likes to attach files, exchanges text containing non-ASCII
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
180 characters, signs or encrypts his messages.
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
181 He does not use bulletin boards anymore, nor non-mbox style mail
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
182 drops, nor does he rely on compatibility to nmh.
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
183 He already has and MTA/MSA and MRA running or is able to set them
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
184 up.
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
185 He does not want to have to read a book in order to make his MUA
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
186 usable.
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
187 .P
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
188 XXX Limitations
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
189
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
190 .U2 "The Vision
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
191 .P
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
192 The general goals of the mmh project are the following:
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
193 .BU
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
194 I believe that mmh should be perfectly suited for modern emailing,
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
195 out-of-the-box.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
196 .BU
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
197 I care less about compatibility and more about conceptionally elegant
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
198 approaches.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
199 .BU
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
200 I care for general, clear, and simple concepts.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
201 .BU
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
202 I like to create an of-one-style email system. It should feel like
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
203 cast as one.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
204 .BU
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
205 I plan to remove any optimizations that rises obscurity, unless it
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
206 appears to be neccessary to make mmh usable at all.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
207
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
208 .U2 "Work to do
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
209 .BU
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
210 Remove the MTA and MRA facilities. Mmh shall concentrate on the MUA
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
211 task. Mail shall enter mmh's mail storage via the system mail drop
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
212 and it shall leave mmh via the local \fLsendmail\fP command.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
213 .BU
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
214 Remove any further functions that are not related to mmh's main task.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
215 Bulletin board support is on example. Also remove support for ancient
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
216 technologies, like hardcopy terminals.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
217 .BU
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
218 Refactor the source code to meet modern style criteria. Use
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
219 standardized library functions when possible.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
220 .BU
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
221 Replace performance optimizations by clear and readable code.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
222 .BU
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
223 Reduce the feature set to the commonly used one, removing
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
224 corner-cases. Set sane default values.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
225 .BU
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
226 Add better attachment support. Add support for digital signatures and
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
227 encryption.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
228 .BU
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
229 Merge \fLshow\fP and \fLmhshow\fP into one single mail display program.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
230 Integrate MIME support deeper and more natural into MH.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
231 .BU
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
232 Provide a ready-to-use setup out-of-the-box.
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
233
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
234
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
235 .H1 "Goals of this Thesis
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
236
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
237 .U2 "Methods
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
238 .P
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
239 foo