docs/master

annotate ch01.roff @ 27:b687d151eed3

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