annotate ch01.roff @ 83:99ab58dc891f

New macro: .VF to read verbatim text from file. Outsourced the MH session.
author markus schnalke <meillo@marmaro.de>
date Wed, 06 Jun 2012 18:11:35 +0200
parents ff4537327162
children 7d5b180de542
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
53
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
5 MH is a set of mail handling tools with a common concept, similar to
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
6 the Unix tool chest, which is a set of file handling tools with a common
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
7 concept. \fInmh\fP is the currently most popular implementation of an
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
8 MH-like mail handling system.
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
9 This thesis describes an experimental version of nmh, named \fImmh\fP.
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
10 .P
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
11 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
12 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
13 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
14 Further more, this chapter outlines the mmh project itself,
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
15 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
16
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
17
28
6c63083b4c19 Wrote text for the Preface; changed headings in Preface and Introduction.
markus schnalke <meillo@marmaro.de>
parents: 27
diff changeset
18 .H1 "MH \(en the Mail Handler
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
19 .P
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
20 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
21 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
22 where the first implementation followed later.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
23 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
24 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
25 than in being a specific software product.
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
26 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
27 MH follows this philosophy.
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
28
11
9a313c929a2a style: Introduced .U2 for unnumbered .H2.
markus schnalke <meillo@marmaro.de>
parents: 9
diff changeset
29 .U2 "History
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
30 .P
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
31 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
32 had proposed the design
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
33 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
34 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
35 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
36 prototype of MH.
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
37 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
38 believed to be practically unusable.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
39 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
40 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
41 .P
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
42 In the early Eighties,
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
43 the University of California at Irvine (UCI) had started to use MH.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
44 Marshall T. Rose and John L. Romine became the driving force then.
57
8776101db595 Intro: Fixed the history.
markus schnalke <meillo@marmaro.de>
parents: 54
diff changeset
45 They took over the development and pushed MH forward.
8776101db595 Intro: Fixed the history.
markus schnalke <meillo@marmaro.de>
parents: 54
diff changeset
46 RAND had put the code into the public domain by then.
8776101db595 Intro: Fixed the history.
markus schnalke <meillo@marmaro.de>
parents: 54
diff changeset
47 MH was developed at UCI at the time when the Internet appeared,
8776101db595 Intro: Fixed the history.
markus schnalke <meillo@marmaro.de>
parents: 54
diff changeset
48 when UCB implemented the TCP/IP stack, and when Allman wrote Sendmail.
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
49 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
50 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
51 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
52 email standard.
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
53 .P
57
8776101db595 Intro: Fixed the history.
markus schnalke <meillo@marmaro.de>
parents: 54
diff changeset
54 In the Nineties, the Internet had become popular and in December 1996,
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
55 Richard Coleman initiated the ``New Mail Handler'' (nmh) project.
57
8776101db595 Intro: Fixed the history.
markus schnalke <meillo@marmaro.de>
parents: 54
diff changeset
56 Nmh is a fork of MH 6.8.3 and bases strongly on the
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
57 \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
58 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
59 MIME handling capabilities.
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
60 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
61 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
62 February 1996, soon after the development of nmh had started.
57
8776101db595 Intro: Fixed the history.
markus schnalke <meillo@marmaro.de>
parents: 54
diff changeset
63 Today, nmh has almost completely replaced the original MH.
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
64 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
65 .P
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
66 In the last years, the work on nmh was mostly maintenance work.
57
8776101db595 Intro: Fixed the history.
markus schnalke <meillo@marmaro.de>
parents: 54
diff changeset
67 However, the development revived in December 2011
8776101db595 Intro: Fixed the history.
markus schnalke <meillo@marmaro.de>
parents: 54
diff changeset
68 and stayed busy since then.
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
69
11
9a313c929a2a style: Introduced .U2 for unnumbered .H2.
markus schnalke <meillo@marmaro.de>
parents: 9
diff changeset
70 .U2 "Concepts
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
71 .P
53
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
72 MH consists of a set of tools, each covering a specific task of
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
73 email handling, like composing a message, replying to a message,
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
74 refiling a message to a different folder, listing the messages in a folder.
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
75 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
76 .P
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
77 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
78 \fPmessages\fP (regular files).
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
79 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
80 received (i.e. transfer format).
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
81 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
82 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
83 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
84 .P
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
85 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
86 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
87 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
88 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
89 context themselves.
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
90 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
91 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
92 .P
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
93 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
94 too. These are either automatically updated
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
95 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
96 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
97 These names are called sequences.
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
98 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
99 .P
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
100 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
101 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
102 adjust them to the user's personal preferences.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
103 Multiple versions of the same command with different
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
104 default values can also be created very easily.
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
105 Form templates for new messages or for replies are easily changeable,
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
106 and output is adjustable with format files.
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
107 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
108 .P
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
109 The system is well scriptable and extensible.
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
110 New MH tools are built out of or on top of existing ones quickly.
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
111 Further more, MH encourages the user to tailor, extend and automate the system.
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
112 As the MH tool chest was modeled after the Unix tool chest, the
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
113 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
114
54
d9c18bd9ed92 Intro: Filled in the very basics for Using MH.
markus schnalke <meillo@marmaro.de>
parents: 53
diff changeset
115 .U2 "Using MH
53
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
116 .P
54
d9c18bd9ed92 Intro: Filled in the very basics for Using MH.
markus schnalke <meillo@marmaro.de>
parents: 53
diff changeset
117 It is strongly recommended to have a look at the MH Book,
d9c18bd9ed92 Intro: Filled in the very basics for Using MH.
markus schnalke <meillo@marmaro.de>
parents: 53
diff changeset
118 which introduces well into using MH.
d9c18bd9ed92 Intro: Filled in the very basics for Using MH.
markus schnalke <meillo@marmaro.de>
parents: 53
diff changeset
119 .[ [
d9c18bd9ed92 Intro: Filled in the very basics for Using MH.
markus schnalke <meillo@marmaro.de>
parents: 53
diff changeset
120 peek mh book
d9c18bd9ed92 Intro: Filled in the very basics for Using MH.
markus schnalke <meillo@marmaro.de>
parents: 53
diff changeset
121 .], Part II]
d9c18bd9ed92 Intro: Filled in the very basics for Using MH.
markus schnalke <meillo@marmaro.de>
parents: 53
diff changeset
122 Rose and Romine provide a deeper and more technical
d9c18bd9ed92 Intro: Filled in the very basics for Using MH.
markus schnalke <meillo@marmaro.de>
parents: 53
diff changeset
123 though slightly outdated introduction in only about two dozens pages.
d9c18bd9ed92 Intro: Filled in the very basics for Using MH.
markus schnalke <meillo@marmaro.de>
parents: 53
diff changeset
124 .[
d9c18bd9ed92 Intro: Filled in the very basics for Using MH.
markus schnalke <meillo@marmaro.de>
parents: 53
diff changeset
125 rose romine real work
d9c18bd9ed92 Intro: Filled in the very basics for Using MH.
markus schnalke <meillo@marmaro.de>
parents: 53
diff changeset
126 .]
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
127 .P
53
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
128 Following is an example mail handling session.
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
129 It uses mmh but is mostly compatible with nmh and old MH.
32
6a9abf543297 Rework in the Introduction (about MH).
markus schnalke <meillo@marmaro.de>
parents: 28
diff changeset
130 Details might vary but the look'n'feel is the same.
82
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 57
diff changeset
131
83
99ab58dc891f New macro: .VF to read verbatim text from file. Outsourced the MH session.
markus schnalke <meillo@marmaro.de>
parents: 82
diff changeset
132 .VF input/mh-session
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
133
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
134
28
6c63083b4c19 Wrote text for the Preface; changed headings in Preface and Introduction.
markus schnalke <meillo@marmaro.de>
parents: 27
diff changeset
135 .H1 "nmh: Code and Community
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
136 .P
49
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
137 In order to understand the condition, goals and dynamics of a project,
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
138 one needs to know the reasons.
53
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
139 This section explains the background.
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
140 .P
49
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
141 MH predates the Internet, it comes from times before networking was universal,
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
142 it comes from times when emailing was small, short and simple.
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
143 Then it grew, spread and adopted to the changes email went through.
49
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
144 Its core-concepts, however, remained the same.
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
145 During the Eighties students at UCI actively worked on MH.
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
146 They added new features and optimized the code for the then popular systems.
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
147 All this still was in times before POSIX and ANSI C.
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
148 As large parts of the code stem from this time, today's nmh source code
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
149 still contains many ancient parts.
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
150 BSD-specific code and constructs tailored for hardware of that time
49
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
151 are frequent.
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
152 .P
49
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
153 Nmh started about a decade after the POSIX and ANSI C standards had been
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
154 established. A more modern coding style entered the code base, but still
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
155 a part of the developers came from ``the old days''. The developer
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
156 base became more diverse and thus resulted in code of different style.
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
157 Programming practices from different decades merged in the project.
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
158 As several peers added code, the system became more a conglomeration
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
159 of single tools rather than a homogeneous of-one-cast mail system.
49
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
160 Still, the existing basic concepts held it together.
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
161 They were mostly untouched throughout the years.
2
65e4327aa9f8 Added some introduction text.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
162 .P
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
163 Despite the tool chest approach at the surface \(en a collection
49
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
164 of separate small programs \(en on the source code level
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
165 it is much more interweaved.
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
166 Several separate components were compiled into one program
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
167 for efficiency reasons.
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
168 This lead to intricate innards.
49
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
169 Unfortunately, the clear separation on the outside appeared as being
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
170 pretty interweaved inside.
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
171 .P
49
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
172 The advent of MIME rose the complexity of email by a magnitude.
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
173 This is visible in nmh. The MIME-related parts are the most complex ones.
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
174 It's also visible that MIME support had been added on top of the old MH core.
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
175 MH's tool chest style made this easily possible and encourages
49
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
176 such approaches, but unfortunately, it lead to duplicated functions
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
177 and half-hearted implementation of the concepts.
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
178 .P
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
179 To provide backward-compatibility, it is a common understanding to not
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
180 change the default settings.
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
181 In consequence, the user needs to activate modern features explicitly
47
eae5e50381ce Rework in Preface and Intro.
markus schnalke <meillo@marmaro.de>
parents: 45
diff changeset
182 to be able to use them.
49
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
183 This puts a burden on new users, because out-of-the-box nmh remains
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
184 in the same ancient style.
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
185 If nmh is seen to be a back-end, then this compatibility surely is important.
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
186 However, in the same go, new users have difficulties to use nmh for modern
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
187 emailing.
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
188 The small but matured community around nmh hardly needs much change
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
189 as they have their convenient setups since decades.
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
190
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
191
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
192 .H1 "mmh
28
6c63083b4c19 Wrote text for the Preface; changed headings in Preface and Introduction.
markus schnalke <meillo@marmaro.de>
parents: 27
diff changeset
193 .P
49
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
194 I started to work on my experimental version in October 2011,
53
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
195 at a time when there were no more than three commits to nmh
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
196 since the beginning of the year.
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
197 In December, when I announced my work in progress on the
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
198 nmh-workers mailing list,
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
199 .[
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
200 nmh-workers mmh announce December
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
201 .]
53
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
202 nmh's community became active, too.
49
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
203 This movement was heavily pushed by Paul Vixie's ``edginess'' comment.
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
204 .[
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
205 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
206 .]
53
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
207 After long years of stagnation, nmh became actively developed again.
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
208 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
209 in parallel.
28
6c63083b4c19 Wrote text for the Preface; changed headings in Preface and Introduction.
markus schnalke <meillo@marmaro.de>
parents: 27
diff changeset
210 .P
53
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
211 The name \fImmh\fP may stand for \fImodern mail handler\fP,
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
212 because the project tries to modernize nmh.
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
213 Personally however, I prefer to call mmh \fImeillo's mail handler\fP,
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
214 emphasizing that the project follows my visions and preferences.
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
215 (My login name is \fImeillo\fP.)
53
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
216 This project model was inspired by \fIdwm\fP,
42
af8c46461924 Rework and new text about mmh's name in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 39
diff changeset
217 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
218 targeted to satisfy Garbe's personal needs whenever conflicts appear.
53
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
219 Dwm had retained its lean elegance and its focused character, whereas
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
220 its community-driven predecessor \fIwmii\fP had grown fat over time.
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
221 The development of mmh should remain focused.
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
222
45
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
223
27
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
224 .U2 "Motivation
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
225 .P
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
226 MH is the most important of very few command line tool chest email systems.
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
227 Tool chests are powerful because they can be perfectly automated and
53
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
228 extended. They allow arbitrary kinds of front-ends to be
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
229 implemented on top of them quickly and without internal knowledge.
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
230 Additionally, tool chests are much better to maintain than monolithic
43
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
231 programs.
53
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
232 As there are few tool chests for emailing and as MH-like ones are the most
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
233 popular among them they should be developed further.
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
234 This keeps their
43
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
235 conceptional elegance and unique scripting qualities available to users.
53
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
236 Mmh will create a modern and convenient entry point to MH-like systems
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
237 for new and interested users.
43
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
238 .P
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
239 The mmh project is motivated by deficits of nmh and
45
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
240 my wish for general changes, combined
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
241 with the nmh community's reluctancy to change.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
242 .P
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
243 nmh hadn't adjusted to modern emailing needs well enough.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
244 The default setup was completely unusable for modern emailing.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
245 Too much setup work was required.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
246 Several modern features were already available but the community
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
247 didn't wanted to have them as default.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
248 mmh is a way to change this.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
249 .P
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
250 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
251 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
252 and generalize the system, providing cleaner interfaces and more
53
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
253 software leverage at the same time.
45
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
254 mmh is a way to demonstrate this.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
255 .P
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
256 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
257 compete with the large specialized projects that focus
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
258 on only one of the components.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
259 The situation can be improved by concentrating the development power
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
260 on the most unique part of MH and letting the user pick his preferred
45
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
261 set of other mail components.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
262 Today's pre-packaged software components encourage this model.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
263 mmh is a way to go for this approach.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
264 .P
43
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
265 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
266 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
267 The nmh community's reluctance to change conflicts
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
268 with my strong will to change.
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
269 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
270 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
271 In fact, revolutionary changes are hardly possible otherwise.
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
272 .P
45
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
273 The mmh project provides the basis to implemented and demonstrated
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
274 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
275 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
276
b687d151eed3 Reorganized the content in the Intro and added placeholders for missing parts.
markus schnalke <meillo@marmaro.de>
parents: 11
diff changeset
277 .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
278 .P
45
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
279 Any effort needs to be targeted towards a specific goal
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
280 in order to be successful.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
281 Following is a description of the imagined typical mmh user.
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
282 mmh should satisfy his needs.
53
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
283 .\" XXX Remove the next sentence?
48
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
284 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
285 of myself.
45
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
286 .P
43
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
287 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
288 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
289 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
290 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
291 productivity by scripting the mail system.
43
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
292 He naturally uses modern email features, like attachments,
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
293 non-ASCII text, and digital cryptography.
43
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
294 He is able to setup email system components besides mmh,
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
295 and actually likes the choice to pick the ones he prefers.
43
c21ff903c71c New text on mmh in Intro.
markus schnalke <meillo@marmaro.de>
parents: 42
diff changeset
296 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
297 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
298 .P
48
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
299 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
300 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
301 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
302 via ssh. He might also have local mmh installations on his workstations,
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
303 but does rather not rely on graphical front-ends. He definitely wants
48
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
304 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
305 .P
48
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
306 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
307 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
308 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
309 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
310 In general, he believes that:
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
311 .BU
48
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
312 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
313 is most important.
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
314 .BU
48
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
315 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
316 .BU
48
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
317 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
318 if possible.
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
319 .BU
45
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
320 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
321 .BU
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
322 Removed code is debugged code.
8
3ef5449c1175 Moved text; wrote more text; removed ch02.roff.
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
323
48
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
324 .U2 "Goals
45
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
325 .P
7a33b5adb672 Rework in the Intro.
markus schnalke <meillo@marmaro.de>
parents: 43
diff changeset
326 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
327 .IP "Stream-lining
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
328 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
329 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
330 effectively removing corner-cases.
53
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
331 Parts that don't add to the main task of being a conceptionally
01d06ca2eb1b Rework based on comments by Lydi.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
332 appealing MUA should be removed.
48
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
333 This includes, the MTA and MRA facilities.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
334 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
335 .IP "Modernizing
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
336 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
337 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
338 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
339 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
340 And on the other hand,
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
341 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
342 out.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
343 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
344 be supported any further.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
345 .IP "Code style
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
346 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
347 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
348 whenever possible.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
349 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
350 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
351 clear and readable code.
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
352 A uniform programming style should prevail.
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 50
diff changeset
353 .IP "Homogeneity
48
d28ff07dfc0f Rework in the Intro, with new text.
markus schnalke <meillo@marmaro.de>
parents: 47
diff changeset
354 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
355 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
356 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
357 It should feel like being cast as one.