docs/master

diff discussion.roff @ 159:8b411125645d

Corrections and improvements by Kate, Phil, Matou, Michi, Lydi.
author markus schnalke <meillo@marmaro.de>
date Mon, 09 Jul 2012 11:16:30 +0200
parents 0cce17978f0a
children 5c01017be420
line diff
     1.1 --- a/discussion.roff	Sun Jul 08 17:25:35 2012 +0200
     1.2 +++ b/discussion.roff	Mon Jul 09 11:16:30 2012 +0200
     1.3 @@ -21,10 +21,11 @@
     1.4  I believe that the development of all-in-one mail systems is obsolete.
     1.5  Today, email is too complex to be fully covered by single projects.
     1.6  Such a project won't be able to excel in all aspects.
     1.7 -Instead, the aspects of email should be covered my multiple projects,
     1.8 +Instead, the aspects of email should be covered by multiple projects,
     1.9  which then can be combined to form a complete system.
    1.10  Excellent implementations for the various aspects of email exist already.
    1.11  Just to name three examples: Postfix is a specialized MTA,
    1.12 +.\" XXX homepages verlinken
    1.13  Procmail is a specialized MDA, and Fetchmail is a specialized MRA.
    1.14  I believe that it is best to use such specialized tools instead of
    1.15  providing the same function again as a side-component in the project.
    1.16 @@ -65,7 +66,7 @@
    1.17  .P
    1.18  Focusing on one mail agent role only is motivated by Eric Allman's
    1.19  experience with Sendmail.
    1.20 -He identified limiting Sendmail the MTA task had be one reason for
    1.21 +He identified the limitation of Sendmail to the MTA task as one reason for
    1.22  its success:
    1.23  .[ [
    1.24  costales sendmail
    1.25 @@ -78,12 +79,12 @@
    1.26  were incorporated directly into the user agents.
    1.27  .QE
    1.28  .P
    1.29 -In mmh, the Mail Submission Agent (MSA) is called
    1.30 +In nmh, the Mail Submission Agent (MSA) is called
    1.31  \fIMessage Transfer Service\fP (MTS).
    1.32  This facility, implemented by the
    1.33  .Pn post
    1.34  command, established network connections and spoke SMTP to submit
    1.35 -messages for relay to the outside world.
    1.36 +messages to be relayed to the outside world.
    1.37  The changes in email demanded changes in this part of nmh too.
    1.38  Encryption and authentication for network connections
    1.39  needed to be supported, hence TLS and SASL were introduced into nmh.
    1.40 @@ -126,7 +127,7 @@
    1.41  from remote locations.
    1.42  .Ci ab7b48411962d26439f92f35ed084d3d6275459c
    1.43  Instead, it depends on an external tool to cover this task.
    1.44 -In mmh exist two paths for messages to enter mmh's mail storage:
    1.45 +In mmh, two paths exist for messages to enter mmh's mail storage:
    1.46  (1) Mail can be incorporated with
    1.47  .Pn inc
    1.48  from the system maildrop, or (2) with
    1.49 @@ -139,12 +140,12 @@
    1.50  An external MSA is required to transfer mail to the outside world;
    1.51  an external MRA is required to retrieve mail from remote machines.
    1.52  There exist excellent implementations of such software,
    1.53 -which do this specific task likely better than the internal
    1.54 -versions had done it.
    1.55 -Also, the best suiting programs can be freely chosen.
    1.56 +which likely are superior than the internal version.
    1.57 +Additionally, the best suiting programs can be freely chosen.
    1.58  .P
    1.59  As it had already been possible to use an external MSA or MRA,
    1.60  why not keep the internal version for convenience?
    1.61 +.\" XXX ueberleitung
    1.62  The question whether there is sense in having a fall-back pager in all
    1.63  the command line tools, for the cases when
    1.64  .Pn more
    1.65 @@ -202,6 +203,7 @@
    1.66  that covers the field.
    1.67  Today, this is a reasonable exchange.
    1.68  .P
    1.69 +.\" XXX ueberleitung ???
    1.70  Functionality can be added in three different ways:
    1.71  .BU
    1.72  Implementing the function originally in the project.
    1.73 @@ -210,7 +212,8 @@
    1.74  .BU
    1.75  Depending on a program that provides the function.
    1.76  .P
    1.77 -Whereas adding the function originally to the project increases the
    1.78 +.\" XXX Rework sentence
    1.79 +While adding the function originally to the project increases the
    1.80  code size most and requires most maintenance and development work,
    1.81  it makes the project most independent of other software.
    1.82  Using libraries or external programs require less maintenance work
    1.83 @@ -221,7 +224,7 @@
    1.84  thus information can be exchanged more flexible.
    1.85  Adding code to a project increases maintenance work.
    1.86  .\" XXX ref
    1.87 -Implementing complex functions originally in the project adds
    1.88 +Implementing complex functions in the project itself adds
    1.89  a lot of code.
    1.90  This should be avoided if possible.
    1.91  Hence, the dependencies only change in kind, not in their existence.
    1.92 @@ -230,8 +233,8 @@
    1.93  and
    1.94  .Pn libcrypto /\c
    1.95  .Pn libssl
    1.96 -were treated against program dependencies on an MSA and an MRA.
    1.97 -This also meant treating build-time dependencies against run-time
    1.98 +were traded against program dependencies on an MSA and an MRA.
    1.99 +This also meant trading build-time dependencies against run-time
   1.100  dependencies.
   1.101  Besides program dependencies providing the stronger separation
   1.102  and being more flexible, they also allowed
   1.103 @@ -246,6 +249,7 @@
   1.104  Also, the popular MSAs and MRAs have large communities and a lot
   1.105  of documentation available.
   1.106  Choices for MSAs range from full-featured MTAs like
   1.107 +.\" XXX refs
   1.108  .I Postfix
   1.109  over mid-size MTAs like
   1.110  .I masqmail
   1.111 @@ -292,7 +296,7 @@
   1.112  was removed
   1.113  .Ci 14767c94b3827be7c867196467ed7aea5f6f49b0
   1.114  because its use case of writing to the user's terminal
   1.115 -on receiving of mail is obsolete.
   1.116 +on receival of mail is obsolete.
   1.117  If users like to be informed of new mail, the shell's
   1.118  .Ev MAILPATH
   1.119  variable or graphical notifications are technically more appealing.
   1.120 @@ -305,6 +309,7 @@
   1.121  VE
   1.122  .BU
   1.123  .Pn viamail
   1.124 +.\" XXX was macht viamail
   1.125  was removed
   1.126  .Ci eda72d6a7a7c20ff123043fb7f19c509ea01f932
   1.127  when the new attachment system was activated, because
   1.128 @@ -317,6 +322,7 @@
   1.129  .Ci 0e82199cf3c991a173e0ac8aa776efdb3ded61e6
   1.130  .BU
   1.131  .Pn msgchk
   1.132 +.\" XXX was macht msgchk
   1.133  was removed
   1.134  .Ci bb9360ead7eb7a3fedcce2eeedfc660014e41dbe ,
   1.135  because it lost its use case when POP support was removed.
   1.136 @@ -343,11 +349,11 @@
   1.137  .Ci 916690191222433a6923a4be54b0d8f6ac01bd02
   1.138  because the tool was in conflict with the philosophy of MH.
   1.139  It provided an interactive shell to access the features of MH,
   1.140 -but it wasn't just a shell, tailored to the needs of mail handling.
   1.141 +but it wasn't just a shell tailored to the needs of mail handling.
   1.142  Instead it was one large program that had several MH tools built in.
   1.143  This conflicts with the major feature of MH of being a tool chest.
   1.144  .Pn msh 's
   1.145 -main use case had been accessing Bulletin Boards, which have seized to
   1.146 +main use case had been accessing Bulletin Boards, which have ceased to
   1.147  be popular.
   1.148  .P
   1.149  Removing
   1.150 @@ -422,7 +428,7 @@
   1.151  .Pn slocal
   1.152  in need for deeper investigation.
   1.153  In the meanwhile, it remains part of mmh.
   1.154 -That does not hurt because
   1.155 +However, its continued existence is not significant because
   1.156  .Pn slocal
   1.157  is unrelated to the rest of the project.
   1.158  
   1.159 @@ -432,6 +438,7 @@
   1.160  .Id mhshow
   1.161  .P
   1.162  Since the very beginning, already in the first concept paper,
   1.163 +.\" XXX ref!!!
   1.164  .Pn show
   1.165  had been MH's message display program.
   1.166  .Pn show
   1.167 @@ -509,7 +516,7 @@
   1.168  MIME messages, although it is the other way round.
   1.169  As
   1.170  .Pn mhshow
   1.171 -had already be able to display non-MIME messages, it appeared natural
   1.172 +had already been able to display non-MIME messages, it appeared natural
   1.173  to drop
   1.174  .Pn show
   1.175  in favor of using
   1.176 @@ -554,7 +561,8 @@
   1.177  even more natural.
   1.178  Today, mmh's new
   1.179  .Pn show
   1.180 -became the one single message display program again, with the difference
   1.181 +has become the one single message display program once more,
   1.182 +with the difference
   1.183  that today it handles MIME messages as well as non-MIME messages.
   1.184  The outcome of the transition is one program less to maintain,
   1.185  no second display program for users to deal with,
   1.186 @@ -563,10 +571,11 @@
   1.187  Still, removing the old
   1.188  .Pn show
   1.189  hurts in one regard: It had been such a simple program.
   1.190 -Its lean elegance is missing to the new
   1.191 -.Pn show .
   1.192 -But there is no chance;
   1.193 -supporting MIME demands for higher essential complexity.
   1.194 +Its lean elegance is missing from the new
   1.195 +.Pn show ,
   1.196 +.\" XXX
   1.197 +however there is no alternative;
   1.198 +supporting MIME demands higher essential complexity.
   1.199  
   1.200  .ig
   1.201  XXX
   1.202 @@ -591,13 +600,13 @@
   1.203  There is the cost of code complexity to be able to customize.
   1.204  There is the cost of less tested setups, because there are
   1.205  more possible setups and especially corner-cases.
   1.206 -And, there is the cost of choice itself.
   1.207 +Additionally, there is the cost of choice itself.
   1.208  The code complexity directly affects the developers.
   1.209  Less tested code affects both, users and developers.
   1.210 -The problem of choice affects the users, for once by having to
   1.211 -choose, but also by more complex interfaces that require more documentation.
   1.212 -Whenever options add little advantages, they should be considered for
   1.213 -removal.
   1.214 +The problem of choice affects the users, for once by having to choose,
   1.215 +but also by more complex interfaces that require more documentation.
   1.216 +Whenever options add few advantages but increase the complexity of the
   1.217 +system, they should be considered for removal.
   1.218  I have reduced the number of project-specific configure options from 
   1.219  fifteen to three.
   1.220  
   1.221 @@ -611,10 +620,14 @@
   1.222  and
   1.223  .Sw --with-cyrus-sasl
   1.224  had activated the support for transfer encryption and authentication.
   1.225 +.\" XXX cf
   1.226 +.\" XXX gruende kurz wiederholen
   1.227  This is not needed anymore.
   1.228  .Ci fecd5d34f65597a4dfa16aeabea7d74b191532c3
   1.229  .Ci 156d35f6425bea4c1ed3c4c79783dc613379c65b
   1.230  .P
   1.231 +.\" XXX cf
   1.232 +.\" XXX ``For the same reason ...''
   1.233  The configure switch
   1.234  .Sw --enable-pop
   1.235  activated the message retrieval facility.
   1.236 @@ -624,7 +637,7 @@
   1.237  Whereas the code base changes would only slightly change on toggling
   1.238  TLS or SASL support, it changed much on toggling POP support.
   1.239  The changes in the code base could hardly be overviewed.
   1.240 -By having POP support togglable a second code base had been created,
   1.241 +By having POP support togglable, a second code base had been created,
   1.242  one that needed to be tested.
   1.243  This situation is basically similar for the conditional TLS and SASL  
   1.244  code, but there the changes are minor and can yet be overviewed.
   1.245 @@ -638,6 +651,7 @@
   1.246  .Ar smtp
   1.247  or
   1.248  .Ar sendmail .
   1.249 +.\" XXX naechster Satz ganz raus?
   1.250  In mmh this fixed to
   1.251  .Ar sendmail .
   1.252  .Ci f6aa95b724fd8c791164abe7ee5468bf5c34f226
   1.253 @@ -654,6 +668,7 @@
   1.254  The backup prefix is the string that was prepended to message
   1.255  filenames to tag them as deleted.
   1.256  By default it had been the comma character `\f(CW,\fP'.
   1.257 +.\" XXX Zeitlich ordnen
   1.258  In July 2000, Kimmo Suominen introduced
   1.259  the configure option
   1.260  .Sw --with-hash-backup
   1.261 @@ -681,7 +696,7 @@
   1.262  Using the hash as backup prefix can be seen as a precaution against
   1.263  data loss.
   1.264  .P
   1.265 -I removed the configure option but added the profile entry
   1.266 +First, I removed the configure option but added the profile entry
   1.267  .Pe backup-prefix ,
   1.268  which allows to specify an arbitrary string as backup prefix.
   1.269  .Ci 6c40d481d661d532dd527eaf34cebb6d3f8ed086
   1.270 @@ -823,6 +838,7 @@
   1.271  .Ci ecd6d6a20cb7a1507e3a20d6c4cb3a1cf14c6bbf
   1.272  The change removed functionality too, but that is minor to the
   1.273  improvement by dropping the dependency and the complex autoconf code.
   1.274 +.\" XXX argument: slocal ist sowieso nicht teil vom mmh kern
   1.275  
   1.276  .U3 "mh-e Support
   1.277  .P
   1.278 @@ -849,6 +865,7 @@
   1.279  .Ci a7ce7b4a580d77b6c2c4d980812beb589aa4c643
   1.280  Removing the option removed a second code setup that would have
   1.281  needed to be tested.
   1.282 +.\" XXX datum?
   1.283  This change was first done in nmh and thereafter merged into mmh.
   1.284  .P
   1.285  The interface changes in mmh require mh-e to be adjusted in order
   1.286 @@ -918,6 +935,7 @@
   1.287  hadn't supported it already.
   1.288  .Ci 2abae0bfd0ad5bf898461e50aa4b466d641f23d9
   1.289  Username extensions are possible in mmh, but less convenient to use.
   1.290 +.\" XXX covered by next paragraph
   1.291  .\" XXX format file %(getenv USERNAME_EXTENSION)
   1.292  .P
   1.293  The
   1.294 @@ -978,8 +996,8 @@
   1.295  Every program in mmh has two generic switches:
   1.296  .Sw -help ,
   1.297  to print a short message on how to use the program, and 
   1.298 -.Sw -Version ,
   1.299 -to tell what version of mmh the program belongs to.
   1.300 +.Sw -Version
   1.301 +[sic!], to tell what version of mmh the program belongs to.
   1.302  .P
   1.303  Switches change the behavior of programs.
   1.304  Programs that do one thing in one way require no switches.
   1.305 @@ -1050,7 +1068,7 @@
   1.306  (These numbers include two generic switches, help and version.)
   1.307  .P
   1.308  The figure displays the number of switches for each of the tools
   1.309 -that is available in both, nmh and mmh.
   1.310 +that is available in both nmh and mmh.
   1.311  The tools are sorted by the number of switches they had in nmh.
   1.312  Visible and hidden switches were counted,
   1.313  but not the generic help and version switches.
   1.314 @@ -1108,7 +1126,7 @@
   1.315  The only flexibility removed with this change is having multiple
   1.316  draft folders within one profile.
   1.317  I consider this a theoretical problem only.
   1.318 -In the same go, the
   1.319 +At the same time, the
   1.320  .Sw -draft
   1.321  switch of
   1.322  .Pn anno ,
   1.323 @@ -1116,9 +1134,9 @@
   1.324  and
   1.325  .Pn send
   1.326  was removed.
   1.327 -The special-casing of `the' draft message became irrelevant after
   1.328 +The special treatment of \fIthe\fP draft message became irrelevant after
   1.329  the rework of the draft system.
   1.330 -(df. Sec.
   1.331 +(cf. Sec.
   1.332  .Cf draft-folder )
   1.333  Equally,
   1.334  .Pn comp
   1.335 @@ -1270,7 +1288,9 @@
   1.336  .Pn mhlist
   1.337  were removed, doing real size calculations always now
   1.338  .Ci 8d8f1c3abc586c005c904e52c4adbfe694d2201c ,
   1.339 -as
   1.340 +as nmh's
   1.341 +.Mp mhbuild (1)
   1.342 +man page states
   1.343  ``This provides an accurate count at the expense of a small delay.''
   1.344  This small delay is not noticable on modern systems.
   1.345  .P
   1.346 @@ -1303,7 +1323,7 @@
   1.347  switches was completely removed.
   1.348  .Ci d1fefd9f614e4dc3cda16da6c69133c1b2005269
   1.349  External MIME parts are rare today, having a caching facility
   1.350 -for them is appears to be unnecessary.
   1.351 +for them appears to be unnecessary.
   1.352  .P
   1.353  In pre-MIME times,
   1.354  .Pn mhl
   1.355 @@ -1322,7 +1342,7 @@
   1.356  .P
   1.357  .Pn folder 's
   1.358  data output is self-explaining enough that
   1.359 -displaying the header line makes few sense.
   1.360 +displaying the header line makes little sense.
   1.361  Hence, the
   1.362  .Sw -[no]header
   1.363  switch was removed and headers are never printed.
   1.364 @@ -1379,7 +1399,7 @@
   1.365  with an empty argument.
   1.366  .Ci 75fca31a5b9d5c1a99c74ab14c94438d8852fba9
   1.367  (Specifying
   1.368 -.Cl "-editor true
   1.369 +.Cl "-editor /bin/true
   1.370  is nearly the same, only differing by the previous editor being set.)
   1.371  .P
   1.372  The more important change is the removal of the
   1.373 @@ -1404,7 +1424,7 @@
   1.374  .Sw -nowhatnowproc
   1.375  switch creates only a draft message.
   1.376  As
   1.377 -.Cl "-whatnowproc true
   1.378 +.Cl "-whatnowproc /bin/true
   1.379  causes the same behavior, the
   1.380  .Sw -nowhatnowproc
   1.381  switch was removed for being redundant.
   1.382 @@ -1454,6 +1474,7 @@
   1.383  nor page the output itself (\c
   1.384  .Sw -length
   1.385  .Ci 5b9d883db0318ed2b84bb82dee880d7381f99188 ).
   1.386 +.\" XXX Ref
   1.387  Generally, the pager to use is no longer specified with the
   1.388  .Sw -[no]moreproc
   1.389  command line switches for
   1.390 @@ -1507,6 +1528,7 @@
   1.391  by Rose and
   1.392  ``Lists messages in reverse order with the `\-reverse' switch.
   1.393  This should be considered a bug.'' by Romine in the documentation.
   1.394 +.\" XXX Ref: welche datei genau.
   1.395  The question remains why neither Rose and Romine had fixed this
   1.396  bug in the eighties when they wrote these comments nor has anyone
   1.397  thereafter.
   1.398 @@ -1563,8 +1585,8 @@
   1.399  .\" --------------------------------------------------------------
   1.400  .H1 "Modernizing
   1.401  .P
   1.402 -In the over thirty years of MH's existence, its code base was
   1.403 -extended more and more.
   1.404 +In the more thirty years of MH's existence, its code base was
   1.405 +increasingly extended.
   1.406  New features entered the project and became alternatives to the
   1.407  existing behavior.
   1.408  Relicts from several decades have gathered in the code base,
   1.409 @@ -1578,13 +1600,15 @@
   1.410  
   1.411  .H2 "Code Relicts
   1.412  .P
   1.413 -My position to drop obsolete functions of mmh, in order to remove old code,
   1.414 -is much more revolutional than the nmh community likes to have it.
   1.415 -Working on an experimental version, I was able to quickly drop
   1.416 +My position regarding the removal of obsolete functions of mmh,
   1.417 +.\" XXX ``in order to remove old code,''
   1.418 +is much more revolutional than the nmh community appreciates.
   1.419 +Working on an experimental version, I was quickly able to drop
   1.420  functionality I considered ancient.
   1.421  The need for consensus with peers would have slowed this process down.
   1.422  Without the need to justify my decisions, I was able to rush forward.
   1.423  In December 2011, Paul Vixie motivated the nmh developers to just
   1.424 +.\" XXX ugs
   1.425  do the work:
   1.426  .[
   1.427  paul vixie edginess nmh-workers
   1.428 @@ -1603,18 +1627,20 @@
   1.429  .LP
   1.430  I did so already in the months before.
   1.431  I pushed forward.
   1.432 +.\" XXX semicolon ?
   1.433  I simply dropped the cruft.
   1.434  .P
   1.435  The decision to drop a feature was based on literature research and
   1.436 -careful thinking, but whether having had contact to this particular
   1.437 +careful thinking, but whether having had contact with this particular
   1.438  feature within my own computer life served as a rule of thumb.
   1.439 -Always, I explained my reasons in the commit messages
   1.440 +I explained my reasons in the commit messages
   1.441  in the version control system.
   1.442  Hence, others can comprehend my view and argue for undoing the change
   1.443  if I have missed an important aspect.
   1.444  I was quick in dropping parts.
   1.445 -I rather re-included falsely dropped parts than going a slower pace.
   1.446 +I rather re-included falsely dropped parts than going at a slower pace.
   1.447  Mmh is experimental work; it required tough decisions.
   1.448 +.\" XXX ``exp. work'' schon oft gesagt
   1.449  
   1.450  
   1.451  .U3 "Forking
   1.452 @@ -1623,9 +1649,9 @@
   1.453  In earlier times
   1.454  .Fu fork()
   1.455  had been an expensive system call, because the process's image needed
   1.456 -to be duplicated completely at once.
   1.457 -This was especially painful in the common case when the image gets
   1.458 -replaced by a call to
   1.459 +to be completely duplicated at once.
   1.460 +This expensive work was especially unnecessary in the commonly occuring
   1.461 +case wherein the image is replaced by a call to
   1.462  .Fu exec()
   1.463  right after having forked the child process.
   1.464  The
   1.465 @@ -1672,7 +1698,7 @@
   1.466  .Fu fork()
   1.467  calls in the code were wrapped into loops to retry the
   1.468  .Fu fork()
   1.469 -several times, to increase the changes to succeed, eventually.
   1.470 +several times, to increase the chances to succeed, eventually.
   1.471  On modern systems, a failing
   1.472  .Fu fork()
   1.473  call is unusual.
   1.474 @@ -1695,7 +1721,7 @@
   1.475  header fields is removed in mmh.
   1.476  .Ci 064527f7b57ab050e5af13e15ad99aeeab125857
   1.477  .BU
   1.478 -Native support for
   1.479 +The native support for
   1.480  .Hd Face
   1.481  header fields has been removed, as well.
   1.482  .Ci 8e5be81f784682822f5e868c1bf3c8624682bd23
   1.483 @@ -1706,7 +1732,7 @@
   1.484  Instead of encoding the image data directly into the header field,
   1.485  it contains the hostname and UDP port where the image
   1.486  date can be retrieved.
   1.487 -There exists even a third Face system,
   1.488 +There is even a third Face system,
   1.489  which is the successor of
   1.490  .Hd X-Face ,
   1.491  although it re-uses the
   1.492 @@ -1750,9 +1776,9 @@
   1.493  but uses a different message delimiter (`\fL\\1\\1\\1\\1\fP',
   1.494  commonly written as `\fL^A^A^A^A\fP', instead of `\fLFrom\0\fP').
   1.495  Mbox is the de-facto standard maildrop format on Unix,
   1.496 -whereas the MMDF maildrop format became forgotten.
   1.497 -I did drop MMDF maildrop format support.
   1.498 -Mbox is the only packed mailbox format supported in mmh.
   1.499 +whereas the MMDF maildrop format is now forgotten.
   1.500 +By dropping the MMDF maildrop format support,
   1.501 +mbox became the only packed mailbox format supported in mmh.
   1.502  .P
   1.503  The simplifications within the code were moderate.
   1.504  Mainly, the reading and writing of MMDF mailbox files was removed.
   1.505 @@ -1773,9 +1799,6 @@
   1.506  is heavily optimized and thus dangerous to touch.
   1.507  The risk of damaging the intricate workings of the optimized code is
   1.508  too high.
   1.509 -.\" XXX: move somewhere else
   1.510 -This problem is known to the developers of nmh, too.
   1.511 -They also avoid touching this minefield.
   1.512  
   1.513  
   1.514  .U3 "Prompter's Control Keys
   1.515 @@ -1812,11 +1835,8 @@
   1.516  .P
   1.517  More of a funny anecdote is a check for being connected to a
   1.518  hardcopy terminal.
   1.519 -It remained in the code until Spring 2012, when I finally removed it
   1.520 +It remained in the code until spring 2012, when I finally removed it
   1.521  .Ci b7764c4a6b71d37918a97594d866258f154017ca .
   1.522 -I would be truly happy to see such a terminal in action today,
   1.523 -maybe even being able to work on it.
   1.524 -But I fear my chances are null.
   1.525  .P
   1.526  The check only prevented a pager to be placed between the printing
   1.527  program (\c
   1.528 @@ -1831,7 +1851,7 @@
   1.529  .Ev PAGER
   1.530  to
   1.531  .Pn cat
   1.532 -does the job.
   1.533 +is sufficient.
   1.534  
   1.535  
   1.536  
   1.537 @@ -1859,7 +1879,9 @@
   1.538  MH's MIME support is a direct implementation of the RFCs.
   1.539  The perception of the topic described in the RFCs is clearly visible
   1.540  in MH's implementation.
   1.541 -In result, MH had all the MIME features but no idea of attachments.
   1.542 +.\" XXX rewrite ``no idea''.
   1.543 +As a result,
   1.544 +MH had all the MIME features but no idea of attachments.
   1.545  But users don't need all the MIME features,
   1.546  they want convenient attachment handling.
   1.547  
   1.548 @@ -1873,8 +1895,8 @@
   1.549  .Fn docs/README-ATTACHMENTS ,
   1.550  he described his motivation to do so as such:
   1.551  .QS
   1.552 -Although nmh contains the necessary functionality for MIME message handing,
   1.553 -the interface to this functionality is pretty obtuse.
   1.554 +Although nmh contains the necessary functionality for MIME message
   1.555 +handing [sic!], the interface to this functionality is pretty obtuse.
   1.556  There's no way that I'm ever going to convince my partner to write
   1.557  .Pn mhbuild
   1.558  composition files!
   1.559 @@ -1909,7 +1931,7 @@
   1.560  It is pre-defined to
   1.561  .Hd Attach .
   1.562  .P
   1.563 -To add an attachment to a draft, simply add an attachment header:
   1.564 +To add an attachment to a draft, a header line needs to be added:
   1.565  .VS
   1.566  To: bob
   1.567  Subject: The file you wanted
   1.568 @@ -1927,7 +1949,7 @@
   1.569  Drafts with attachment headers are converted to MIME automatically by
   1.570  .Pn send .
   1.571  The conversion to MIME is invisible to the user.
   1.572 -The draft stored in the draft folder is always in source form, with
   1.573 +The draft stored in the draft folder is always in source form with
   1.574  attachment headers.
   1.575  If the MIMEification fails, for instance because the file to attach
   1.576  is not accessible, the original draft is not changed.
   1.577 @@ -1936,7 +1958,7 @@
   1.578  If the attachment header value starts with a plus character (`+'),
   1.579  like in
   1.580  .Cl "Attach: +bob 30 42" ,
   1.581 -The given messages in the specified folder will be attached.
   1.582 +the given messages in the specified folder will be attached.
   1.583  This allowed to simplify
   1.584  .Pn forw .
   1.585  .Ci f41f04cf4ceca7355232cf7413e59afafccc9550
   1.586 @@ -1951,7 +1973,7 @@
   1.587  .Pe automimeproc
   1.588  profile entry could be specified to have the `mime' command invoked
   1.589  automatically each time.
   1.590 -Unfortunately, this approach conflicted with with attachment system
   1.591 +Unfortunately, this approach conflicted with attachment system
   1.592  because the draft would already be in MIME format at the time
   1.593  when the attachment system wanted to MIMEify it.
   1.594  To use nmh's attachment system, `mime' must not be called at the
   1.595 @@ -1968,9 +1990,10 @@
   1.596  There is no `mime' command at the WhatNow prompt anymore.
   1.597  The draft will be converted automatically to MIME when either an
   1.598  attachment header or non-ASCII text is present.
   1.599 -Further more, the special meaning of the hash character (`#')
   1.600 -at line beginnings in the draft message is removed.
   1.601 -Users need not at all deal with the whole topic.
   1.602 +Furthermore, the hash character (`#') is not special any more
   1.603 +at line beginnings in the draft message.
   1.604 +.\" XXX REF ?
   1.605 +Users need not concern themselves with the whole topic at all.
   1.606  .P
   1.607  Although the new approach does not anymore support arbitrary MIME
   1.608  compositions directly, the full power of
   1.609 @@ -1985,18 +2008,17 @@
   1.610  Because the resulting draft does neither contain non-ASCII characters
   1.611  nor has it attachment headers, the attachment system will not touch it.
   1.612  .P
   1.613 -The approach taken in mmh is tailored towards todays most common case:
   1.614 -a text part with possibly attachments.
   1.615 -This case is simplified a lot for users.
   1.616 +The approach taken in mmh is tailored towards today's most common case:
   1.617 +a text part, possibly with attachments.
   1.618 +This case was simplified.
   1.619  
   1.620  
   1.621  .U3 "MIME Type Guessing
   1.622  .P
   1.623 -The use of
   1.624 +From the programmer's point of view, the use of
   1.625  .Pn mhbuild
   1.626 -composition drafts had one notable advantage over attachment headers
   1.627 -from the programmer's point of view: The user provides the appropriate
   1.628 -MIME types for files to include.
   1.629 +composition drafts had one notable advantage over attachment headers:
   1.630 +The user provides the appropriate MIME types for files to include.
   1.631  The attachment system needs to find out the correct MIME type itself.
   1.632  This is a difficult task, yet it spares the user irritating work.
   1.633  Determining the correct MIME type of content is partly mechanical,
   1.634 @@ -2026,7 +2048,7 @@
   1.635  Nevertheless, modern versions of GNU
   1.636  .Pn file ,
   1.637  which is prevalent on the popular GNU/Linux systems,
   1.638 -provides MIME type output in machine-readable form.
   1.639 +provide MIME type output in machine-readable form.
   1.640  Although this solution is highly system-dependent,
   1.641  it solves the difficult problem well.
   1.642  On systems where GNU
   1.643 @@ -2050,8 +2072,8 @@
   1.644  `application/octet-stream'.
   1.645  It is not possible in mmh to override the automatic MIME type guessing
   1.646  for a specific file.
   1.647 -To do so, the user would need to know in advance for which file
   1.648 -the automatic guessing does fail, or the system would require interaction.
   1.649 +To do so, either the user would need to know in advance for which file
   1.650 +the automatic guessing fails, or the system would require interaction.
   1.651  I consider both cases impractical.
   1.652  The existing solution should be sufficient.
   1.653  If not, the user may always fall back to
   1.654 @@ -2136,9 +2158,8 @@
   1.655  Users will likely need to invoke
   1.656  .Pn mhstore
   1.657  a second time with
   1.658 -.Sw -force
   1.659 -then.
   1.660 -Eventually, only the user can decide in the concrete case.
   1.661 +.Sw -force .
   1.662 +Eventually, only the user can decide in the specific case.
   1.663  This requires interaction, which I like to avoid if possible.
   1.664  Appending a unique suffix to the filename is another bad option.
   1.665  For now, the behavior remains as it is.
   1.666 @@ -2149,15 +2170,16 @@
   1.667  mode.
   1.668  Instead of storing message/rfc822 parts as files to disk,
   1.669  they are stored as messages into the current mail folder.
   1.670 -The same applies to message/partial, only, the parts are reassembled
   1.671 -automatically before.
   1.672 -Parts of type message/external-body are not automatically retrieved
   1.673 -anymore. Instead, Information on how to retrieve them is output.
   1.674 +The same applies to message/partial, although the parts are
   1.675 +automatically reassembled beforehand.
   1.676 +MIME parts of type message/external-body are not automatically retrieved
   1.677 +anymore.
   1.678 +Instead, information on how to retrieve them is output.
   1.679  Not supporting this rare case saved nearly one thousand lines of code.
   1.680  .Ci 55e1d8c654ee0f7c45b9361ce34617983b454c32
   1.681  .\" XXX mention somewhere else too: (The profile entry `nmh-access-ftp'
   1.682  .\"     and sbr/ruserpass.c for reading ~/.netrc are gone now.)
   1.683 -Not special anymore is `application/octet-stream; type=tar'.
   1.684 +`application/octet-stream; type=tar' is not special anymore.
   1.685  Automatically extracting such MIME parts had been the dangerous part
   1.686  of the
   1.687  .Sw -auto
   1.688 @@ -2186,7 +2208,7 @@
   1.689  .Pn mhshow 's
   1.690  behavior to the modern view on the topic.
   1.691  .P
   1.692 -Note that this section completely ignores the original
   1.693 +One should note that this section completely ignores the original
   1.694  .Pn show
   1.695  program, because it was not capable to display MIME messages
   1.696  and is no longer part of mmh.
   1.697 @@ -2197,6 +2219,7 @@
   1.698  in mmh, this section uses the name
   1.699  .Pn mhshow ,
   1.700  in order to avoid confusion.
   1.701 +.\" XXX ref to other section
   1.702  .P
   1.703  In mmh, the basic idea is that
   1.704  .Pn mhshow