docs/master

changeset 169:f4ffe121a0a2

Applied excellent suggestions and corrections by Kate.
author markus schnalke <meillo@marmaro.de>
date Tue, 10 Jul 2012 13:08:51 +0200
parents 277eeb5ba223
children 97461b0b34d2
files discussion.roff intro.roff
diffstat 2 files changed, 83 insertions(+), 85 deletions(-) [+]
line diff
     1.1 --- a/discussion.roff	Tue Jul 10 11:46:20 2012 +0200
     1.2 +++ b/discussion.roff	Tue Jul 10 13:08:51 2012 +0200
     1.3 @@ -1,8 +1,9 @@
     1.4  .H0 "Discussion
     1.5  .P
     1.6 -This main chapter discusses the practical work done in the mmh project.
     1.7 -It is structured along the goals to achieve.
     1.8 -The concrete work done
     1.9 +This main chapter discusses the practical work accomplished in the
    1.10 +mmh project.
    1.11 +It is structured along the goals set for the project.
    1.12 +The concrete work undertaken
    1.13  is described in the examples of how the general goals were achieved.
    1.14  The discussion compares the current version of mmh with the state of
    1.15  nmh just before the mmh project started, i.e. Fall 2011.
    1.16 @@ -15,15 +16,16 @@
    1.17  .H1 "Streamlining
    1.18  
    1.19  .P
    1.20 -MH had been considered an all-in-one system for mail handling.
    1.21 -The community around nmh has a similar understanding.
    1.22 -In fundamental difference, mmh shall be a MUA only.
    1.23 +MH once provided anything necessary for email handling.
    1.24 +The community around nmh has the similar understanding that nmh should
    1.25 +provide a complete email system.
    1.26 +In fundamental contrast, mmh shall be a MUA only.
    1.27  I believe that the development of all-in-one mail systems is obsolete.
    1.28  Today, email is too complex to be fully covered by single projects.
    1.29  Such a project won't be able to excel in all aspects.
    1.30  Instead, the aspects of email should be covered by multiple projects,
    1.31  which then can be combined to form a complete system.
    1.32 -Excellent implementations for the various aspects of email exist already.
    1.33 +Excellent implementations for the various aspects of email already exist.
    1.34  Just to name three examples: Postfix is a specialized MTA,
    1.35  .\" XXX homepages verlinken
    1.36  Procmail is a specialized MDA, and Fetchmail is a specialized MRA.
    1.37 @@ -31,24 +33,23 @@
    1.38  providing the same function again as a side-component in the project.
    1.39  .\" XXX mail agent picture here
    1.40  .P
    1.41 -Doing something well, requires to focus on a small set of specific aspects.
    1.42 -Under the assumption that focused development produces better results
    1.43 -in the particular area, specialized projects will be superior
    1.44 +Doing something well requires focusing on a small set of specific aspects.
    1.45 +Under the assumption that development focussed on a particular area
    1.46 +produces better results there, specialized projects will be superior
    1.47  in their field of focus.
    1.48  Hence, all-in-one mail system projects \(en no matter if monolithic
    1.49  or modular \(en will never be the best choice in any of the fields.
    1.50 -Even in providing the best consistent all-in-one system they are likely
    1.51 +Even in providing the best consistent all-in-one system, they are likely
    1.52  to be beaten by projects that focus only on integrating existing mail
    1.53 -components to a homogeneous system.
    1.54 +components to create a homogeneous system.
    1.55  .P
    1.56 -The limiting resource in Free Software community development
    1.57 +The limiting resource in the community development of Free Software
    1.58  is usually man power.
    1.59  If the development power is spread over a large development area,
    1.60  it becomes even more difficult to compete with the specialists in the
    1.61  various fields.
    1.62  The concrete situation for MH-based mail systems is even tougher,
    1.63 -given the small and aged community, including both developers and users,
    1.64 -it has.
    1.65 +given their small and aged community, concerning both developers and users.
    1.66  .P
    1.67  In consequence, I believe that the available development resources
    1.68  should focus on the point where MH is most unique.
    1.69 @@ -62,10 +63,10 @@
    1.70  In contrast to nmh, which also provides mail submission and mail retrieval
    1.71  agents, mmh is a MUA only.
    1.72  This general difference initiated the development of mmh.
    1.73 -Removing the mail transfer facilities had been the first work task
    1.74 +The removal of the mail transfer facilities was the first work task
    1.75  in the mmh project.
    1.76  .P
    1.77 -Focusing on one mail agent role only is motivated by Eric Allman's
    1.78 +Focusing on one mail agent role only, is motivated by Eric Allman's
    1.79  experience with Sendmail.
    1.80  He identified the limitation of Sendmail to the MTA task as one reason for
    1.81  its success:
    1.82 @@ -86,13 +87,13 @@
    1.83  .Pn post
    1.84  command, established network connections and spoke SMTP to submit
    1.85  messages to be relayed to the outside world.
    1.86 -The changes in email demanded changes in this part of nmh too.
    1.87 +The changes in email demanded changes in this part of nmh as well.
    1.88  Encryption and authentication for network connections
    1.89  needed to be supported, hence TLS and SASL were introduced into nmh.
    1.90  This added complexity to nmh without improving it in its core functions.
    1.91  Also, keeping up with recent developments in the field of
    1.92  mail transfer requires development power and specialists.
    1.93 -In mmh this whole facility was simply cut off.
    1.94 +In mmh, this whole facility was simply cut off.
    1.95  .Ci f6aa95b724fd8c791164abe7ee5468bf5c34f226
    1.96  .Ci fecd5d34f65597a4dfa16aeabea7d74b191532c3
    1.97  .Ci 156d35f6425bea4c1ed3c4c79783dc613379c65b
    1.98 @@ -111,24 +112,24 @@
    1.99  VE
   1.100  The requirement to parse the recipient addresses out of the message header 
   1.101  is likely to be removed in the future.
   1.102 -Then mmh would give the recipient addresses as command line arguments.
   1.103 +Then mmh would pass the recipient addresses as command line arguments.
   1.104  This appears to be the better interface.
   1.105  .\" XXX implement it
   1.106  .P
   1.107  To retrieve mail, the
   1.108  .Pn inc
   1.109 -command acted as Mail Retrieval Agent (MRA).
   1.110 +command acted as an Mail Retrieval Agent (MRA).
   1.111  It established network connections
   1.112  and spoke POP3 to retrieve mail from remote servers.
   1.113  As with mail submission, the network connections required encryption and
   1.114  authentication, thus TLS and SASL were added.
   1.115 -Support for message retrieval through IMAP will become necessary
   1.116 -to be added soon, too, and likewise for any other changes in mail transfer.
   1.117 +Support for message retrieval through IMAP will soon become necessary
   1.118 +additions, too, and likewise for any other changes in mail transfer.
   1.119  Not so for mmh because it has dropped the support for retrieving mail
   1.120  from remote locations.
   1.121  .Ci ab7b48411962d26439f92f35ed084d3d6275459c
   1.122  Instead, it depends on an external tool to cover this task.
   1.123 -In mmh, two paths exist for messages to enter mmh's mail storage:
   1.124 +Mmh has two paths for messages to enter mmh's mail storage:
   1.125  (1) Mail can be incorporated with
   1.126  .Pn inc
   1.127  from the system maildrop, or (2) with
   1.128 @@ -140,7 +141,7 @@
   1.129  Now, of course, mmh depends on third-party software.
   1.130  An external MSA is required to transfer mail to the outside world;
   1.131  an external MRA is required to retrieve mail from remote machines.
   1.132 -There exist excellent implementations of such software,
   1.133 +Excellent implementations of such software exist,
   1.134  which likely are superior than the internal version.
   1.135  Additionally, the best suiting programs can be freely chosen.
   1.136  .P
   1.137 @@ -167,11 +168,11 @@
   1.138  to the programs but to the project itself.
   1.139  In other words:
   1.140  Develop projects that focus on one thing and do it well.
   1.141 -Projects grown complex should be split for the same reasons programs
   1.142 -grown complex should be split.
   1.143 +Projects which have grown complex should be split, for the same
   1.144 +reasons that programs which have grown complex should be split.
   1.145  If it is conceptionally more elegant to have the MSA and MRA as
   1.146  separate projects then they should be separated.
   1.147 -This is the case here, in my opinion.
   1.148 +In my opinion, this is the case here.
   1.149  The RFCs propose this separation by clearly distinguishing the different
   1.150  mail handling tasks.
   1.151  .[
   1.152 @@ -179,11 +180,10 @@
   1.153  .]
   1.154  The small interfaces between the mail agents support the separation.
   1.155  .P
   1.156 -In the beginning, email had been small and simple.
   1.157 +Email once had been small and simple.
   1.158  At that time,
   1.159  .Pn /bin/mail
   1.160 -had covered anything there was to email and still had been small
   1.161 -and simple.
   1.162 +had covered everything there was to email and still was small and simple.
   1.163  Later, the essential complexity of email increased.
   1.164  (Essential complexity is the complexity defined by the problem itself.\0
   1.165  .[[
   1.166 @@ -193,42 +193,44 @@
   1.167  RFCs started to introduce the concept of mail agents to separate the
   1.168  various tasks because they became more extensive and new tasks appeared.
   1.169  As the mail systems grew even more, parts were split off.
   1.170 -In nmh, for instance, the POP server, which was included in the original
   1.171 -MH, was removed.
   1.172 +For instance, a POP server was included in the original MH;
   1.173 +it was removed in nmh.
   1.174  Now is the time to go one step further and split off the MSA and MRA, too.
   1.175  Not only does this decrease the code size of the project,
   1.176 -but, more important, it unburdens mmh of the whole field of
   1.177 +more importantly, it unburdens mmh of the whole field of
   1.178  message transfer with all its implications for the project.
   1.179 -There is no more need to concern with changes in network transfer.
   1.180 -This independence is received by depending on an external program
   1.181 +There is no more need for concern with changes in network transfer.
   1.182 +This independence is gained by depending on an external program
   1.183  that covers the field.
   1.184  Today, this is a reasonable exchange.
   1.185  .P
   1.186  .\" XXX ueberleitung ???
   1.187  Functionality can be added in three different ways:
   1.188  .BU
   1.189 -Implementing the function originally in the project.
   1.190 +Implementing the function in the project itself.
   1.191  .BU
   1.192  Depending on a library that provides the function.
   1.193  .BU
   1.194  Depending on a program that provides the function.
   1.195  .P
   1.196  .\" XXX Rework sentence
   1.197 -While adding the function originally to the project increases the
   1.198 -code size most and requires most maintenance and development work,
   1.199 -it makes the project most independent of other software.
   1.200 -Using libraries or external programs require less maintenance work
   1.201 +While implementing the function in the project itself leads to the
   1.202 +largest increase in code size and requires the most maintenance
   1.203 +and development work,
   1.204 +it increases the project's independence of other software the most.
   1.205 +Using libraries or external programs requires less maintenance work
   1.206  but introduces dependencies on external software.
   1.207 -Programs have the smallest interfaces and provide the best separation
   1.208 +Programs have the smallest interfaces and provide the best separation,
   1.209  but possibly limit the information exchange.
   1.210 -External libraries are stronger connected than external programs,
   1.211 -thus information can be exchanged more flexible.
   1.212 +External libraries are more strongly connected than external programs,
   1.213 +thus information can be exchanged in a more flexible manner.
   1.214  Adding code to a project increases maintenance work.
   1.215  .\" XXX ref
   1.216  Implementing complex functions in the project itself adds
   1.217  a lot of code.
   1.218  This should be avoided if possible.
   1.219 -Hence, the dependencies only change in kind, not in their existence.
   1.220 +Hence, the dependencies only change in their character,
   1.221 +not in their existence.
   1.222  In mmh, library dependencies on
   1.223  .Pn libsasl2
   1.224  and
   1.225 @@ -237,8 +239,8 @@
   1.226  were traded against program dependencies on an MSA and an MRA.
   1.227  This also meant trading build-time dependencies against run-time
   1.228  dependencies.
   1.229 -Besides program dependencies providing the stronger separation
   1.230 -and being more flexible, they also allowed
   1.231 +Besides providing stronger separation and greater flexibility,
   1.232 +program dependencies also allowed
   1.233  over 6\|000 lines of code to be removed from mmh.
   1.234  This made mmh's code base about 12\|% smaller.
   1.235  Reducing the project's code size by such an amount without actually
   1.236 @@ -246,17 +248,17 @@
   1.237  Actually, as external MSAs and MRAs are likely superior to the
   1.238  project's internal versions, the common user even gains functionality.
   1.239  .P
   1.240 -Users of MH should not have problems to set up an external MSA and MRA.
   1.241 +Users of MH should not have problems setting up an external MSA and MRA.
   1.242  Also, the popular MSAs and MRAs have large communities and a lot
   1.243 -of documentation available.
   1.244 -Choices for MSAs range from full-featured MTAs like
   1.245 +of available documentation.
   1.246 +Choices for MSAs range from full-featured MTAs such as
   1.247  .\" XXX refs
   1.248 -.I Postfix
   1.249 -over mid-size MTAs like
   1.250 +.I Postfix ,
   1.251 +over mid-size MTAs such as
   1.252  .I masqmail
   1.253  and
   1.254 -.I dma
   1.255 -to small forwarders like
   1.256 +.I dma ,
   1.257 +to small forwarders such as
   1.258  .I ssmtp
   1.259  and
   1.260  .I nullmailer .
   1.261 @@ -271,13 +273,13 @@
   1.262  .H2 "Non-MUA Tools
   1.263  .P
   1.264  One goal of mmh is to remove the tools that are not part of the MUA's task.
   1.265 -Further more, any tools that don't improve the MUA's job significantly
   1.266 +Further more, any tools that don't significantly improve the MUA's job
   1.267  should be removed.
   1.268  Loosely related and rarely used tools distract from the lean appearance.
   1.269  They require maintenance work without adding much to the core task.
   1.270  By removing these tools, the project shall become more streamlined
   1.271  and focused.
   1.272 -In mmh the following tools are not available anymore:
   1.273 +In mmh, the following tools are not available anymore:
   1.274  .BU
   1.275  .Pn conflict
   1.276  was removed
   1.277 @@ -301,8 +303,8 @@
   1.278  If users like to be informed of new mail, the shell's
   1.279  .Ev MAILPATH
   1.280  variable or graphical notifications are technically more appealing.
   1.281 -Writing directly to terminals is hardly ever wanted today.
   1.282 -If though one wants to have it this way, the standard tool
   1.283 +Writing directly to terminals is hardly ever desired today.
   1.284 +If, though, one prefers this approach, the standard tool
   1.285  .Pn write
   1.286  can be used in a way similar to:
   1.287  .VS
   1.288 @@ -334,7 +336,7 @@
   1.289  ls -l /var/mail/meillo
   1.290  VE
   1.291  It did distinguish between old and new mail, but
   1.292 -this detail information can be retrieved with
   1.293 +these details can be retrieved with
   1.294  .Pn stat (1),
   1.295  too.
   1.296  A small shell script could be written to print the information
   1.297 @@ -343,7 +345,7 @@
   1.298  .Pn inc
   1.299  only incorporates mail from the user's local maildrop,
   1.300  and thus no data transfers over slow networks are involved,
   1.301 -there's hardly any need to check for new mail before incorporating it.
   1.302 +there is hardly any need to check for new mail before incorporating it.
   1.303  .BU
   1.304  .Pn msh
   1.305  was removed
   1.306 @@ -351,18 +353,18 @@
   1.307  because the tool was in conflict with the philosophy of MH.
   1.308  It provided an interactive shell to access the features of MH,
   1.309  but it wasn't just a shell tailored to the needs of mail handling.
   1.310 -Instead it was one large program that had several MH tools built in.
   1.311 +Instead, it was one large program that had several MH tools built in.
   1.312  This conflicts with the major feature of MH of being a tool chest.
   1.313  .Pn msh 's
   1.314  main use case had been accessing Bulletin Boards, which have ceased to
   1.315  be popular.
   1.316  .P
   1.317  Removing
   1.318 -.Pn msh ,
   1.319 +.Pn msh
   1.320  together with the truly archaic code relicts
   1.321  .Pn vmh
   1.322  and
   1.323 -.Pn wmh ,
   1.324 +.Pn wmh
   1.325  saved more than 7\|000 lines of C code \(en
   1.326  about 15\|% of the project's original source code amount.
   1.327  Having less code \(en with equal readability, of course \(en
   1.328 @@ -383,9 +385,9 @@
   1.329  is not related to the mail client, and
   1.330  .Pn msh
   1.331  conflicts with the basic concept of MH.
   1.332 -Theses two tools might still be useful, but they should not be part of mmh.
   1.333 +These two tools might still be useful, but they should not be part of mmh.
   1.334  .P
   1.335 -Finally, there's
   1.336 +Finally, there is
   1.337  .Pn slocal .
   1.338  .Pn slocal
   1.339  is an MDA and thus not directly MUA-related.
   1.340 @@ -399,11 +401,10 @@
   1.341  different folders, which is otherwise not available in mmh.
   1.342  Although
   1.343  .Pn slocal
   1.344 -does neither pull in dependencies nor does it include a separate
   1.345 +neither pulls in dependencies, nor does it include a separate
   1.346  technical area (cf. Sec.
   1.347  .Cf mail-transfer-facilities ),
   1.348 -still,
   1.349 -it accounts for about 1\|000 lines of code that need to be maintained.
   1.350 +it still accounts for about 1\|000 lines of code that need to be maintained.
   1.351  As
   1.352  .Pn slocal
   1.353  is almost self-standing, it should be split off into a separate project.
   1.354 @@ -427,7 +428,7 @@
   1.355  is not split off.
   1.356  I defer the decision over
   1.357  .Pn slocal
   1.358 -in need for deeper investigation.
   1.359 +out of a need for deeper investigation.
   1.360  In the meanwhile, it remains part of mmh.
   1.361  However, its continued existence is not significant because
   1.362  .Pn slocal
   1.363 @@ -865,7 +866,7 @@
   1.364  Removing the option removed a second code setup that would have
   1.365  needed to be tested.
   1.366  .\" XXX datum?
   1.367 -This change was first done in nmh and thereafter merged into mmh.
   1.368 +This change was first accomplished in nmh and thereafter merged into mmh.
   1.369  .P
   1.370  The interface changes in mmh require mh-e to be adjusted in order
   1.371  to be able to use mmh as back-end.
   1.372 @@ -2108,7 +2109,7 @@
   1.373  
   1.374  .U3 "Storing Attachments
   1.375  .P
   1.376 -Extracting MIME parts of a message and storing them to disk is done by
   1.377 +Extracting MIME parts of a message and storing them to disk is performed by
   1.378  .Pn mhstore .
   1.379  The program has two operation modes,
   1.380  .Sw -auto
   1.381 @@ -2279,7 +2280,7 @@
   1.382  profile entries can be used to display MIME parts in a specific way.
   1.383  For instance, PDF and Postscript files could be converted to plain text
   1.384  to display them in the terminal.
   1.385 -In mmh, the displaying of MIME parts will always be done serially.
   1.386 +In mmh, MIME parts will always be displayed serially.
   1.387  The request to display the MIME type `multipart/parallel' in parallel
   1.388  is ignored.
   1.389  It is simply treated as `multipart/mixed'.
   1.390 @@ -2311,8 +2312,8 @@
   1.391  Therefore,
   1.392  .Pe mhshow-charset-*
   1.393  profile entries used to be needed.
   1.394 -In mmh, the conversion is done automatically by piping the text through
   1.395 -the
   1.396 +In mmh, the conversion is performed automatically by piping the
   1.397 +text through the
   1.398  .Pn iconv
   1.399  command, if necessary.
   1.400  .Ci 2433122c20baccb10b70b49c04c6b0497b5b3b60
   1.401 @@ -2569,7 +2570,7 @@
   1.402  but applies them.
   1.403  .Cl "scan +drafts" ,
   1.404  for instance, is a truly natural request.
   1.405 -Most of the work was already done by Rose in the eighties.
   1.406 +Most of the work was already performed by Rose in the eighties.
   1.407  The original improvement of mmh is dropping the old draft message approach
   1.408  and thus simplifying the tools, the documentation and the system as a whole.
   1.409  Although my part in the draft handling improvement was small,
   1.410 @@ -2657,8 +2658,8 @@
   1.411  But most important is the ability to keep removed messages in the MH domain.
   1.412  Messages in the trash folder can be listed like those in any other folder.
   1.413  Deleted messages can be displayed like any other messages.
   1.414 -Restoring a deleted messages can be done with
   1.415 -.Pn refile .
   1.416 +.Pn refile
   1.417 +can restore deleted messages.
   1.418  All operations on deleted files are still covered by the MH tools.
   1.419  The trash folder is just like any other folder in the mail storage.
   1.420  .P
   1.421 @@ -2981,8 +2982,7 @@
   1.422  of related code parts.
   1.423  Having the new variables with descriptive names, a more
   1.424  straight forward implementation became apparent.
   1.425 -Before the clarification was done,
   1.426 -the possibility to improve had not be seen.
   1.427 +Before the code was clarified, the possibility to improve had not be seen.
   1.428  .Ci aa60b0ab5e804f8befa890c0a6df0e3143ce0723
   1.429  
   1.430  
   1.431 @@ -3529,9 +3529,8 @@
   1.432  and
   1.433  .Pn spost
   1.434  can be considered to be merged.
   1.435 -Direct invocations of
   1.436  .Pn spost
   1.437 -are only done by the to-be-changed
   1.438 +is only invoked directly by the to-be-changed
   1.439  .Pn mhmail
   1.440  implementation and by
   1.441  .Pn rcvdist ,
   1.442 @@ -3895,7 +3894,7 @@
   1.443  a MH-MIME library, as a companion to the MH standard library.
   1.444  This is left open for the future.
   1.445  .P
   1.446 -The work already done focussed on the non-MIME tools.
   1.447 +The work already accomplished focussed on the non-MIME tools.
   1.448  The amount of code compiled into each program was reduced.
   1.449  This eases the understanding of the code base.
   1.450  In nmh,
     2.1 --- a/intro.roff	Tue Jul 10 11:46:20 2012 +0200
     2.2 +++ b/intro.roff	Tue Jul 10 13:08:51 2012 +0200
     2.3 @@ -339,9 +339,8 @@
     2.4  They are familiar with the command line and enjoy its power.
     2.5  They are at least capable of shell scripting and want to improve their
     2.6  productivity by scripting the mail system.
     2.7 -.\" XXX Naturally, he uses ...
     2.8 -They naturally use modern email features, such as attachments,
     2.9 -non-ASCII text, digital signatures and message encryption.
    2.10 +They use modern email features, such as attachments,
    2.11 +non-ASCII text, digital signatures and message encryption in a natural way.
    2.12  They are able to setup email system components besides mmh,
    2.13  and actually like to have the choice to pick the ones they prefer.
    2.14  They have a reasonably modern operating system that complies to the