annotate ch01.roff @ 48:d28ff07dfc0f

Rework in the Intro, with new text.
author markus schnalke <meillo@marmaro.de>
date Sat, 19 May 2012 17:26:15 +0200
parents eae5e50381ce
children a446f89cc5d9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
39
22ae3981a76b style: New RN macro to reset page numbers and change their style.
markus schnalke <meillo@marmaro.de>
parents: 32
diff changeset
1 .RN 1
22ae3981a76b style: New RN macro to reset page numbers and change their style.
markus schnalke <meillo@marmaro.de>
parents: 32
diff changeset
2
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
3 .H0 "Introduction
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
4 .P
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
5 This chapter introduces MH, its history, concepts and how it is used.
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
6 It describes nmh's code base and community to give the reader
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
7 a better understanding of the state from which mmh started off.
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
8 Further more, this chapter outlines the mmh project itself,
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
9 describing the motivation for it and its goals.
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
10
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
11
28
6c63083b4c19 Wrote text for the Preface; changed headings in Preface and Introduction.
markus schnalke <meillo@marmaro.de>
parents: 27
diff changeset
12 .H1 "MH \(en the Mail Handler
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
13 .P
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
14 MH is a conceptual email system design and its concrete implementation.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
15 Notably, MH had started as a design proposal at RAND Corporation,
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
16 where the first implementation followed later.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
17 In spirit, MH is similar to Unix, which
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
18 influenced the world more in being a set of system design concepts
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
19 than in being a specific software product.
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
20 The ideas behind Unix are summarized in the \fIUnix philosophy\fP.
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
21 MH follows this philosophy.
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
22
11
9a313c929a2a style: Introduced .U2 for unnumbered .H2.
markus schnalke <meillo@marmaro.de>
parents: 9
diff changeset
23 .U2 "History
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
24 .P
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
25 In 1977 at RAND Corporation, Norman Shapiro and Stockton Gaines
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
26 had proposed the design
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
27 of a new mail handling system, called ``Mail Handler'' (MH),
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
28 to superseed RAND's old monolithic ``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
29 Two years later, in 1979, Bruce Borden took the proposal and implemented a
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
30 prototype of MH.
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
31 Before the prototype had been available, the concept was
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
32 believed to be practically unusable.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
33 But the prototype had proven successful and replaced MS thereafter.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
34 In replacing MS, MH grew to an all-in-one mail system.
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
35 .P
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
36 In the early Eighties,
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
37 the University of California at Irvine (UCI) had started to use MH.
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
38 They also took over its development and pushed MH forward.
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
39 Marshall T. Rose and John L. Romine became the driving force then.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
40 This was the time when the Internet appeared, when UCB implemented
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
41 the TCP/IP stack, and when Allman wrote Sendmail.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
42 MH was extended as emailing became more featured.
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
43 The development of MH was closely related to the development of email
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
44 RFCs. In the advent of MIME, MH was the first implementation of this new
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
45 email standard.
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
46 .P
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
47 In the Nineties, MH had been moved into the public domain, making it
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
48 attractive to Free Software developers.
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
49 The Internet had became popular and in December 1996,
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
50 Richard Coleman initiated the ``New Mail Handler'' (nmh) project.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
51 The project is a fork of MH 6.8.3 and bases strongly on the
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
52 \fILBL changes\fP by Van Jacobson, Mike Karels and Craig Leres.
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
53 Colman intended to modernize MH and improve its portability and
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
54 MIME handling capabilities.
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
55 This should be done openly within the Internet community.
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
56 The development of MH at UCI stopped after the 6.8.4 release in
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
57 February 1996, soon after the development of nmh had started.
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
58 Today, nmh almost completely replaced the original MH.
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
59 Some systems might still provide old MH, but mainly for historical reasons.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
60 .P
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
61 In the last years, the work on nmh was mostly maintenance work.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
62 However, the development revived in December 2011 and stayed busy since then.
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
63
11
9a313c929a2a style: Introduced .U2 for unnumbered .H2.
markus schnalke <meillo@marmaro.de>
parents: 9
diff changeset
64 .U2 "Concepts
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
65 .P
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
66 MH is a toolchest, modelled after the Unix toolchest. It consists of a
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
67 set of tools, each covering a specific task of email handling, like
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
68 composing a message, replying to a message, refiling a message to a
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
69 different folder, listing the messages in a folder.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
70 All of the programs operate on a common mail storage.
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
71 .P
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
72 The mail storage consists of \fImail folders\fP (directories) and
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
73 \fPmessages\fP (regular files).
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
74 Each message is stored in a separate file in the format it had been
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
75 received (i.e. transfer format).
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
76 The files are named with ascending numbers in each folder.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
77 The specific format of the mail storage characterizes MH in the same way
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
78 like the format of the file system characterizes Unix.
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
79 .P
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
80 MH tools maintain a \fIcontext\fP, which includes the current mail folder.
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
81 Processes in Unix have a similar context, containing the current working
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
82 directory, for instance. In contrast, the process context is maintained
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
83 by the Unix kernel automatically, whereas MH tools need to maintain the MH
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
84 context themselves.
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
85 The user can have one MH context or multiple ones, he can even share it
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
86 with other users.
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
87 .P
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
88 Messages are named by their numeric filename, but they can have symbolic names,
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
89 too. These are either automatically updated
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
90 position names like being the next or the last message,
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
91 or user-settable group names for arbitrary sets of messages.
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
92 These names are called sequences.
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
93 Sequences can be bound to the containing folder or to the context.
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
94 .P
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
95 The user's \fIprofile\fP is a file that contains his MH configuration.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
96 Default switches for the individual tools can be specified to
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
97 adjust them to the user's personal preferences.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
98 Multiple versions of the same command with different
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
99 default values can also be created very easily.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
100 Form templates for new messages or for replies are easily changable,
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
101 and output is adjustable with format files.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
102 Almost every part of the system can be adjusted to personal preference.
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
103 .P
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
104 The system is well scriptable and extendable.
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
105 New MH tools are built out of or on top of existing ones quickly.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
106 Further more, MH encourages the user to taylor, extend and automate the system.
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
107 As the MH toolchest was modelled after the Unix toolchest, the
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
108 properties of the latter apply to the former as well.
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
109
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
110
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
111 .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
112 .P
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
113 Following is an example mail handling session with mmh.
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
114 It should be mostly compatible with nmh and old MH.
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
115 Details might vary but the look'n'feel is the same.
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
116 .DS
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
117 $ \f(CBinc\fP
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
118 Incorporating new mail into inbox...
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
119
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
120 1+ 2012-05-16 11:16 meillo@dream.home Hello
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
121 2 2012-05-16 11:17 meillo@dream.home book
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
122
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
123 $ \f(CBshow\fP
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
124 Date: Wed, 16 May 2012 11:16:00 +0200
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
125 To: meillo
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
126 From: <meillo@dream.home.schnalke.org>
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
127 Subject: Hello
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
128
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
129 part text/plain 13
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
130 mmh is great
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
131
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
132 $ \f(CBnext\fP
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
133 Date: Wed, 16 May 2012 11:17:24 +0200
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
134 To: meillo
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
135 From: <meillo@dream.home.schnalke.org>
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
136 Subject: book
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
137
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
138 part text/plain 79
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
139 Hello meillo,
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
140
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
141 have a look at the ``Daemon book''. You need to read that!
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
142
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
143 foo
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
144
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
145 $ \f(CBrmm 1\fP
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
146
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
147 $ \f(CBscan\fP
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
148 2+ 2012-05-16 11:17 meillo@dream.home book
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
149
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
150 $
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
151 .DE
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
152
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
153
28
6c63083b4c19 Wrote text for the Preface; changed headings in Preface and Introduction.
markus schnalke <meillo@marmaro.de>
parents: 27
diff changeset
154 .H1 "nmh: Code and Community
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
155 .P
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
156 In order to understand the state, goals and dynamics of a project,
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
157 one needs to know its history. MH predates the Internet,
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
158 it comes from times before networking was universal,
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
159 times when emailing was small, short and simple.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
160 Then it grew, spread and adopted to the changes email went through.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
161 The core-concepts, however, remained the same.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
162 During the 80s a small group of students at the University of
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
163 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
164 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
165 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
166 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
167 .P
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
168 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
169 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
170 a part of the developers come from ``the old days''. The developer
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
171 base became more diverse and thus the code had different style.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
172 Programming practices
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
173 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
174 styles came together. It appears as if multiple peers added code
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
175 parts, resulting in a conclomeration rather than a homogenic
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
176 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
177 They were mostly untouched throughout the years.
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
178 .P
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
179 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
180 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
181 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
182 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
183 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
184 This lead to intricate innards.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
185 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
186 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
187 It's also visible that MIME support had been added on top of the
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
188 old MH later. The MH style made this easily possible, but it
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
189 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
190 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
191 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
192 different).
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
193 .P
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
194 For backward-compatibility's sake, it is a common understanding to have the
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
195 default settings to be compatible, requiring any new feature to be
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
196 explicitely enabled.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
197 In consequence, the user needs to activate modern features explicitely
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
198 to be able to use them.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
199 This puts a burden on new users, because nmh
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
200 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
201 usually want to have it practical for modern emailing.
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
202 But of course, this depends if nmh is seen to be a front-end or a
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
203 back-end.
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
204
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
205
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
206 .H1 "mmh
28
6c63083b4c19 Wrote text for the Preface; changed headings in Preface and Introduction.
markus schnalke <meillo@marmaro.de>
parents: 27
diff changeset
207 .P
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
208 I started to work on my experimental version in Fall 2011.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
209 In December, when I announced my work on the nmh-workers mailing list,
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
210 .[
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
211 nmh-workers mmh announce december
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
212 .]
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
213 the activity in nmh rose heavily.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
214 Suddently the community started to move.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
215 This movement was pushed much by Paul Vixie's ``edginess'' message.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
216 .[
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
217 nmh-workers vixie edginess
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
218 .]
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
219 After long years of much stagnation, nmh became actively developed again.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
220 Hence, while I was working on mmh, the community was working on nmh,
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
221 in parallel.
28
6c63083b4c19 Wrote text for the Preface; changed headings in Preface and Introduction.
markus schnalke <meillo@marmaro.de>
parents: 27
diff changeset
222 .P
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
223 The name \fImmh\fP stands for \fImeillo's mail handler\fP,
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
224 because mmh is my own version of MH.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
225 (My login name is \fImeillo\fP.)
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
226 The project follows my personal considerations and preferences.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
227 By calling it a personal project, I don't need to justify my decisions,
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
228 though, still I do.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
229 This enabled me to follow my vision staightly and thus produce
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
230 a result of greater pureness.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
231 This project model was inspired by the window manager \fIdwm\fP,
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
232 which is Anselm Garbe's personal window manager \(en
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
233 targeted to satisfy Garbe's personal needs whenever conflicts appear.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
234 dwm had remained much more focused on its original goals,
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
235 whereas its community-driven predecessor \fIwmii\fP had
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
236 grown large and lost it's leanness.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
237 This should not happen to mmh.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
238 .P
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
239 Mmh can also stand for \fImodern mail handler\fP, and this is
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
240 the variant chosen as titel for this document. One main focus of the
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
241 project was to modernize nmh. Another main goal is resembled in the
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
242 name \fIminimized mail handler\fP: Drop any parts that don't add
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
243 to the main task of mmh, being a MUA.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
244 .P
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
245 It should also be noted that \fLstrcmp("mmh","nmh")<0\fP is true.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
246 Although mmh bases on nmh, it is likely seen as a step backward.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
247 I agree.
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
248 However, this step backward actually is a step forward,
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
249 although in another direction.
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
250
45
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
251
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
252 .H1 "This Thesis
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
253
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
254 .U2 "Motivation
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
255 .P
43
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
256 MH is the most important of very few command line toolchest email systems.
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
257 (There's also \fIim\fP by Tatsuya Kinoshita,
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
258 which operates on an MH mail storage.)
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
259 Toolchests are powerful because they can be perfectly automated and
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
260 extended. Toolchests are good back-ends for various sorts of front-ends.
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
261 They allow multiple front-ends for different special needs
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
262 to be implemented quickly and withough internal knowledge on emailing.
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
263 Further more, toolchests are much better to maintain than large monolithic
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
264 programs.
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
265 As there are few toolchests for emailing and MH-like ones are the most
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
266 popular amoung them, they should be developed further to keep their
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
267 conceptional elegance and unique scripting qualities available to users.
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
268 mmh will create a modern and convenient entry point for new, interested
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
269 users to MH-like systems.
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
270 .P
45
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
271 The mmh project is motivated by deficites of nmh and
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
272 my wish for general changes, combined
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
273 with the nmh community's reluctancy to change.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
274 .P
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
275 nmh hadn't adjusted to modern emailing needs well enough.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
276 The default setup was completely unusable for modern emailing.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
277 Too much setup work was required.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
278 Several modern features were already available but the community
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
279 didn't wanted to have them as default.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
280 mmh is a way to change this.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
281 .P
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
282 In my eyes, MH's concepts could be exploited even better and
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
283 the style of the tools could be improved. Both would simplify
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
284 and generalize the system, providing cleaner interfaces and more
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
285 software leverage, at the same time.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
286 mmh is a way to demonstrate this.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
287 .P
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
288 In providing several parts of an email system, nmh can hardly
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
289 compete with the large specialized projects that focus
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
290 on only one of the components.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
291 The situation can be improved by concentrating the development power
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
292 on the most unique part of MH and letting the user pick his prefered
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
293 set of other mail components.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
294 Today's pre-packaged software components encourage this model.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
295 mmh is a way to go for this approach.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
296 .P
43
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
297 It's worthwhile to fork nmh for the development of mmh, because
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
298 the two projects focus on different goals and differ in fundamental questions.
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
299 The nmh community's reluctance to change conflicts
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
300 with my strong will to change.
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
301 In developing a separate experimental version new approaches can
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
302 easily be tried out without the need to discuss changes beforehand.
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
303 In fact, revolutionary changes are hardly possible otherwise.
45
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
304 These reasons support the decision to start mmh as a fork of nmh.
43
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
305 .P
45
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
306 The mmh project provides the basis to implemented and demonstrated
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
307 the listed ideas without the need to change nmh or its community.
43
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
308 Of course, the results of the mmh project shall improve nmh, in the end.
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
309
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
310 .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
311 .P
45
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
312 Any effort needs to be targeted towards a specific goal
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
313 in order to be successful.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
314 Following is a description of the imagined typical mmh user.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
315 mmh should satisfy his needs.
48
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
316 Actually, as mmh is my personal version of MH, this is a description
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
317 of myself.
45
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
318 .P
43
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
319 The target user of mmh likes Unix and its philosophy.
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
320 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
321 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
322 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
323 productivity by scripting the mail system.
43
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
324 He naturally uses modern email features, like attachments,
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
325 non-ASCII text, and digital cryptrography.
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
326 He is able to setup email system components besides mmh,
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
327 and actually likes the choice to pick the ones he preferes.
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
328 He has a reasonably modern system that complies to standards,
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
329 like POSIX and ANSI C.
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
330 .P
48
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
331 The typical user invokes mmh commands directly in an interactive
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
332 shell session, but as well, he uses them to automate mail handling tasks.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
333 Likely, he runs his mail setup on a server machine, to which he connects
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
334 via ssh. He might also have local mmh installations on his workstations,
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
335 but does rather not rely on graphical frontends. He definitely wants
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
336 to be flexible and thus be able to change his setup to suite his needs.
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
337 .P
48
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
338 The typical mmh user is a programmer himself.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
339 He likes to, occasionally, take the opportunity of Free Software to put
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
340 hands on and get involved in the software he uses.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
341 Hence, he likes small and clean code bases and he cares for code quality.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
342 In general, he believes that:
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
343 .BU
48
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
344 Elegance \(en i.e. simplicity, clarity and generality \(en
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
345 is most important.
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
346 .BU
48
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
347 Concepts are more important than the concrete implementation.
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
348 .BU
48
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
349 Code optimizations for anything but readability should be avoided
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
350 if possible.
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
351 .BU
45
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
352 Having a lot of choice is bad.
48
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
353 .BU
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
354 Removed code is debugged code.
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
355
48
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
356 .U2 "Goals
45
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
357 .P
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
358 The general goals for the mmh project are the following:
48
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
359 .IP "Stream-lining
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
360 Mmh should be stripped down to its core, which is the MUA part of emailing.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
361 The feature set should be distilled to the ones really needed,
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
362 effectively removing corner-cases.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
363 Functions that are not related to the main task should be removed.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
364 This includes, the MTA and MRA facilities.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
365 Choice should be reduced to the main options.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
366 .IP "Modernizing
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
367 Mmh's feature set needs to become more modern.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
368 Better support for attachment and digital cryptography needs to be added.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
369 MIME support needs to be integrated deeper and more naturally.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
370 The modern email features need to be readily available, out-of-the-box.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
371 And on the other hand,
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
372 bulletin board support and similar obsolete facilities need to be dropped
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
373 out.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
374 Likewise, ancient technologies, like hardcopy terminals, should not
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
375 be supported any further.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
376 .IP "Code style
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
377 Mmh's source code needs to be updated to modern standards.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
378 Standardized library functions should replace non-standard versions
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
379 whenever possible.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
380 Code should be separated into distinct modules when possible.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
381 Time and space optimizations should to be replaced by
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
382 clear and readable code.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
383 A uniform programming style should prevail.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
384 .IP "Homogenity
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
385 The available concepts need to be expanded as far as possible.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
386 A small set of concepts should prevail thoroughly throughout the system.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
387 The whole system should appear to be of-one-style.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
388 It should feel like being cast as one.