docs/master

diff ch03.roff @ 100:6ae7dc4a3a02

Included changes proposed by Lydi.
author markus schnalke <meillo@marmaro.de>
date Tue, 19 Jun 2012 10:54:50 +0200
parents d894191d7a33
children e8e6adb14beb
line diff
     1.1 --- a/ch03.roff	Tue Jun 19 09:40:46 2012 +0200
     1.2 +++ b/ch03.roff	Tue Jun 19 10:54:50 2012 +0200
     1.3 @@ -10,7 +10,7 @@
     1.4  
     1.5  
     1.6  
     1.7 -.H1 "Stream-lining
     1.8 +.H1 "Stream-Lining
     1.9  
    1.10  .P
    1.11  MH had been considered an all-in-one system for mail handling.
    1.12 @@ -29,7 +29,7 @@
    1.13  .P
    1.14  Doing something well, requires to focus on a small set of specific aspects.
    1.15  Under the assumption that focused development produces better results
    1.16 -in the particular area, specialized projects will likely be superior
    1.17 +in the particular area, specialized projects will be superior
    1.18  in their field of focus.
    1.19  Hence, all-in-one mail system projects \(en no matter if monolithic
    1.20  or modular \(en will never be the best choice in any of the fields.
    1.21 @@ -47,21 +47,21 @@
    1.22  it has.
    1.23  .P
    1.24  In consequence, I believe that the available development resources
    1.25 -should be focused on the point where MH is most unique.
    1.26 +should focus on the point where MH is most unique.
    1.27  This is clearly the user interface \(en the MUA.
    1.28  Peripheral parts should be removed to stream-line mmh for the MUA task.
    1.29  
    1.30  
    1.31 -.H2 "Removal of the Mail Transfer Facilities
    1.32 +.H2 "Mail Transfer Facilities
    1.33  .P
    1.34  In contrast to nmh, which also provides mail submission and mail retrieval
    1.35  agents, mmh is a MUA only.
    1.36 -This general difference in the view on the character of nmh
    1.37 -initiated the development of mmh.
    1.38 +This general difference initiated the development of mmh.
    1.39  Removing the mail transfer facilities had been the first work task
    1.40  in the mmh project.
    1.41  .P
    1.42 -The MSA is called \fIMessage Transfer Service\fP (MTS) in nmh.
    1.43 +The Mail Submission Agent (MSA) is called
    1.44 +\fIMessage Transfer Service\fP (MTS) in nmh.
    1.45  The facility established network connections and spoke SMTP to submit
    1.46  messages for relay to the outside world.
    1.47  This part was implemented by the
    1.48 @@ -95,22 +95,24 @@
    1.49  The requirement to parse the recipient addresses out of the message header 
    1.50  is likely to be removed in the future.
    1.51  Then mmh would give the recipient addresses as command line arguments.
    1.52 -This is clearly the better interface, but mmh does not provide it yet.
    1.53 +This appears to be the better interface.
    1.54  .\" XXX implement it
    1.55  .P
    1.56  To retrieve mail, the
    1.57  .Pn inc
    1.58 -command established network connections
    1.59 +command acted as Mail Retrieval Agent (MRA).
    1.60 +It established network connections
    1.61  and spoke POP3 to retrieve mail from remote servers.
    1.62  As with mail submission, the network connections required encryption and
    1.63  authentication, thus TLS and SASL were added.
    1.64  Support for message retrieval through IMAP will become necessary
    1.65 -to be added soon, too, and so on for any changes in mail transfer.
    1.66 -Mmh has dropped the support for retrieving mail from remote locations.
    1.67 +to be added soon, too, and likewise for any other changes in mail transfer.
    1.68 +Not so for mmh because it has dropped the support for retrieving mail
    1.69 +from remote locations.
    1.70  .Ci ab7b48411962d26439f92f35ed084d3d6275459c
    1.71  Instead, it depends on an external tool to cover this task.
    1.72 -In mmh there exist two paths for messages to enter mmh's mail storage:
    1.73 -(1) Mail can be incorporate with
    1.74 +In mmh exist two paths for messages to enter mmh's mail storage:
    1.75 +(1) Mail can be incorporated with
    1.76  .Pn inc
    1.77  from the system maildrop, or (2) with
    1.78  .Pn rcvstore
    1.79 @@ -118,9 +120,6 @@
    1.80  .P
    1.81  With the removal of the MSA and MRA, mmh converted from an all-in-one
    1.82  mail system to being a MUA only.
    1.83 -Following the Unix philosophy, it now focuses on one job and
    1.84 -tries to do that one well.
    1.85 -Not only the programs follow that tenet but also the project itself does so.
    1.86  Now, of course, mmh depends on third-party software.
    1.87  An external MSA is required to transfer mail to the outside world;
    1.88  an external MRA is required to retrieve mail from remote machines.
    1.89 @@ -137,7 +136,7 @@
    1.90  or
    1.91  .Pn less
    1.92  aren't available, appears to be ridiculous.
    1.93 -Now, an MSA or MRA is more complex than a text pager
    1.94 +Of course, MSAs and MRAs are more complex than text pagers
    1.95  and not necessarily available but still the concept of orthogonal
    1.96  design holds: ``Write programs that do one thing and do it well.''
    1.97  .[
    1.98 @@ -153,7 +152,7 @@
    1.99  ``Develop projects that focus on one thing and do it well.''
   1.100  Projects grown complex should be split for the same reasons programs grown
   1.101  complex should be split.
   1.102 -If it is conceptionally more elegant to have the MSA and MRA
   1.103 +If it is conceptionally more elegant to have the MSA and MRA as
   1.104  separate projects then they should be separated.
   1.105  This is the case here, in my opinion.
   1.106  The RFCs propose this separation by clearly distinguishing the different
   1.107 @@ -164,31 +163,31 @@
   1.108  The small interfaces between the mail agents support the separation.
   1.109  .P
   1.110  In the beginning, email had been small and simple.
   1.111 -(\c
   1.112 +At that time,
   1.113  .Pn /bin/mail
   1.114 -had once covered anything there was to email and still had been small
   1.115 -and simple.)
   1.116 -Then the essential complexity of email increased.
   1.117 +had covered anything there was to email and still had been small
   1.118 +and simple.
   1.119 +Later, the essential complexity of email increased.
   1.120  (Essential complexity is the complexity defined by the problem itself.\0
   1.121  .[[
   1.122  brooks no silver bullet
   1.123  .]])
   1.124  Email systems reacted to this change: They grew.
   1.125 -RFCs started to introduce mail agents and separated the various tasks
   1.126 -because the existing tasks became more extensive and new tasks appeared.
   1.127 -Again, email systems grew, or they split parts off.
   1.128 -In nmh, for instance, the POP server, which the original MH had included,
   1.129 -was removed.
   1.130 -Now is the time to go one step further and remove the MSA and MRA, too.
   1.131 +RFCs started to introduce the concept of mail agents to separate the
   1.132 +various tasks because they became more extensive and new tasks appeared.
   1.133 +As the mail systems grew even more, parts were split off.
   1.134 +In nmh, for instance, the POP server, which was included in the original
   1.135 +MH, was removed.
   1.136 +Now is the time to go one step further and split the MSA and MRA off, too.
   1.137  Not only does this decrease the code size of the project,
   1.138  but, more important, it unburdens mmh of the whole field of
   1.139  message transfer with all its implications for the project.
   1.140 -There's no more need to concern with changes in network transfer.
   1.141 +There is no more need to concern with changes in network transfer.
   1.142  This independence is received by depending on an external program
   1.143  that covers the field.
   1.144  Today, this is a reasonable exchange.
   1.145  .P
   1.146 -Function can be added in three different ways:
   1.147 +Functionality can be added in three different ways:
   1.148  .BU
   1.149  Implementing the function originally in the project.
   1.150  .BU
   1.151 @@ -207,7 +206,7 @@
   1.152  thus information can be exchanged more flexible.
   1.153  Adding code to a project increases maintenance work.
   1.154  .\" XXX ref
   1.155 -Implementing complex functions originally in the project will add
   1.156 +Implementing complex functions originally in the project adds
   1.157  a lot of code.
   1.158  This should be avoided if possible.
   1.159  Hence, the dependencies only change in kind, not in their existence.
   1.160 @@ -249,14 +248,14 @@
   1.161  .I fdm .
   1.162  
   1.163  
   1.164 -.H2 "Removal of non-MUA Tools
   1.165 +.H2 "Non-MUA Tools
   1.166  .P
   1.167  One goal of mmh is to remove the tools that are not part of the MUA's task.
   1.168  Further more, any tools that don't improve the MUA's job significantly
   1.169  should be removed.
   1.170  Loosely related and rarely used tools distract from the lean appearance.
   1.171  They require maintenance work without adding much to the core task.
   1.172 -On removing these tools, the project shall become more stream-lined
   1.173 +By removing these tools, the project shall become more stream-lined
   1.174  and focused.
   1.175  In mmh the following tools are not available anymore:
   1.176  .BU
   1.177 @@ -282,7 +281,7 @@
   1.178  If users like to be informed of new mail, the shell's
   1.179  .Ev MAILPATH
   1.180  variable or graphical notifications are technically more appealing.
   1.181 -Writing directly to a terminals is hardly ever wanted today.
   1.182 +Writing directly to terminals is hardly ever wanted today.
   1.183  If though one wants to have it this way, the standard tool
   1.184  .Pn write
   1.185  can be used in a way similar to:
   1.186 @@ -312,11 +311,11 @@
   1.187  .VS
   1.188  ls -l /var/mail/meillo
   1.189  VE
   1.190 -It did distinguished between old and new mail, but
   1.191 -this detail information and can be retrieved with
   1.192 +It did distinguish between old and new mail, but
   1.193 +this detail information can be retrieved with
   1.194  .Pn stat (1),
   1.195  too.
   1.196 -A very small shell script could be written to output the information
   1.197 +A small shell script could be written to print the information
   1.198  in a similar way, if truly necessary.
   1.199  As mmh's
   1.200  .Pn inc
   1.201 @@ -344,8 +343,7 @@
   1.202  .Pn wmh ,
   1.203  saved more than 7\|000 lines of C code \(en
   1.204  about 15\|% of the project's original source code amount.
   1.205 -.P
   1.206 -Having less code (with equal readability, of course)
   1.207 +Having less code \(en with equal readability, of course \(en
   1.208  for the same functionality is an advantage.
   1.209  Less code means less bugs and less maintenance work.
   1.210  As
   1.211 @@ -369,9 +367,10 @@
   1.212  .Pn slocal .
   1.213  .Pn slocal
   1.214  is an MDA and thus not directly MUA-related.
   1.215 -It should be removed, because including it is a violation
   1.216 -of the idea that mmh is a MUA only.
   1.217 -It should become a separate project.
   1.218 +It should be removed from mmh, because including it conflicts with
   1.219 +the idea that mmh is a MUA only.
   1.220 +.Pn slocal
   1.221 +should rather become a separate project.
   1.222  However,
   1.223  .Pn slocal
   1.224  provides rule-based processing of messages, like filing them into
   1.225 @@ -379,8 +378,8 @@
   1.226  Although
   1.227  .Pn slocal
   1.228  does neither pull in dependencies nor does it include a separate
   1.229 -technical area (cf. Sec. XXX),
   1.230 -still it accounts for about 1\|000 lines of code that need to be maintained.
   1.231 +technical area (cf. Sec. XXX), still,
   1.232 +it accounts for about 1\|000 lines of code that need to be maintained.
   1.233  As
   1.234  .Pn slocal
   1.235  is almost self-standing, it should be split off into a separate project.
   1.236 @@ -390,24 +389,25 @@
   1.237  .Pn slocal
   1.238  would become yet another independent MDA, like
   1.239  .I procmail .
   1.240 -The need to install a complete MH system to have
   1.241 +Then
   1.242  .Pn slocal
   1.243 -would be gone.
   1.244 +could be installed without the complete MH system.
   1.245  Likewise, mmh users could decide to use
   1.246  .I procmail
   1.247  without having a second, unused MDA,
   1.248  .Pn slocal ,
   1.249  installed.
   1.250 -That's conceptionally the best solution.
   1.251 +That appears to be conceptionally the best solution.
   1.252  Yet,
   1.253  .Pn slocal
   1.254  is not split off.
   1.255 -I feel unsure with removing it from mmh.
   1.256 -Hence, I defer the decision over
   1.257 -.Pn slocal .
   1.258 -In the meanwhile
   1.259 +I defer the decision over
   1.260  .Pn slocal
   1.261 -does not hurt because it is unrelated to the rest of mmh.
   1.262 +in need for deeper investigation.
   1.263 +In the meanwhile, it remains part of mmh.
   1.264 +That does not hurt because
   1.265 +.Pn slocal
   1.266 +is unrelated to the rest of the project.
   1.267  
   1.268  
   1.269  .H2 "\fLshow\fP and \fPmhshow\fP
   1.270 @@ -420,8 +420,8 @@
   1.271  .Pn mhl
   1.272  to have the files formatted.
   1.273  With MIME, this approach wasn't sufficient anymore.
   1.274 -MIME messages can consist of multiple parts, some of which aren't
   1.275 -directly displayable, further more text content might be encoded in
   1.276 +MIME messages can consist of multiple parts. Some parts are not
   1.277 +directly displayable and text content might be encoded in
   1.278  foreign charsets.
   1.279  .Pn show 's
   1.280  understanding of messages and
   1.281 @@ -487,7 +487,7 @@
   1.282  Different behavior would have surprised the user.
   1.283  .P
   1.284  Today, non-MIME messages are rather seen to be a special case of
   1.285 -MIME messages, although it's the other way round.
   1.286 +MIME messages, although it is the other way round.
   1.287  As
   1.288  .Pn mhshow
   1.289  had already be able to display non-MIME messages, it appeared natural
   1.290 @@ -549,7 +549,7 @@
   1.291  supporting MIME demands for higher essential complexity.
   1.292  
   1.293  
   1.294 -.H2 "Removal of Configure Options
   1.295 +.H2 "Configure Options
   1.296  .P
   1.297  Customization is a double-edged sword.
   1.298  It allows better suiting setups, but not for free.
   1.299 @@ -560,7 +560,7 @@
   1.300  The code complexity directly affects the developers.
   1.301  Less tested code affects both, users and developers.
   1.302  The problem of choice affects the users, for once by having to
   1.303 -choose, but also by complexer interfaces that require more documentation.
   1.304 +choose, but also by more complex interfaces that require more documentation.
   1.305  Whenever options add little advantages, they should be considered for
   1.306  removal.
   1.307  I have reduced the number of project-specific configure options from 
   1.308 @@ -598,13 +598,16 @@
   1.309  More variations require more testing and maintenance work.
   1.310  .P
   1.311  Two other options only specified default configuration values:
   1.312 -.Sw --with-mts=[smtp|sendmail]
   1.313 -defined the default transport service.
   1.314 +.Sw --with-mts
   1.315 +defined the default transport service, either
   1.316 +.Ar smtp
   1.317 +or
   1.318 +.Ar sendmail .
   1.319  In mmh this fixed to
   1.320  .Ar sendmail .
   1.321  .Ci f6aa95b724fd8c791164abe7ee5468bf5c34f226
   1.322  With
   1.323 -.Sw --with-smtpservers=[server1...]
   1.324 +.Sw --with-smtpservers
   1.325  default SMTP servers for the
   1.326  .Ar smtp
   1.327  transport service could be specified.
   1.328 @@ -624,11 +627,12 @@
   1.329  option was named
   1.330  .Sw --with-backup-prefix.
   1.331  and had the prefix symbol as argument.
   1.332 -Because giving the hash symbol as argument caused to many problems
   1.333 -for configure,
   1.334 -the option was limited to use the hash symbol as the default prefix.
   1.335 -This makes me believe, that the choice for the hash was personal preference.
   1.336 -Being it related or not, words that start with the hash symbol
   1.337 +But giving the hash symbol as argument caused too many problems
   1.338 +for Autoconf,
   1.339 +thus the option was limited to use the hash symbol as the default prefix.
   1.340 +This supports the assumption, that the choice for the hash was
   1.341 +personal preference only.
   1.342 +Being related or not, words that start with the hash symbol
   1.343  introduce a comment in the Unix shell.
   1.344  Thus, the command line
   1.345  .Cl "rm #13 #15
   1.346 @@ -639,7 +643,7 @@
   1.347  To delete the backup files,
   1.348  .Cl "rm ./#13 ./#15"
   1.349  needs to be used.
   1.350 -Using the hash as backup prefix can be seen as a precaution agains
   1.351 +Using the hash as backup prefix can be seen as a precaution against
   1.352  data loss.
   1.353  .P
   1.354  I removed the configure option but added the profile entry
   1.355 @@ -654,8 +658,8 @@
   1.356  .Cf "Sec. XXX
   1.357  obsoleted the concept of the backup prefix completely.
   1.358  .Ci 8edc5aaf86f9f77124664f6801bc6c6cdf258173
   1.359 -(Well, there still are corner-cases to remove until the backup
   1.360 -prefix can be laid to rest, eventually.)
   1.361 +.\" (Well, there still are corner-cases to remove until the backup
   1.362 +.\" prefix can be laid to rest, eventually.)
   1.363  .\" FIXME: Do this work in the code!
   1.364  
   1.365  .U3 "Editor and Pager
   1.366 @@ -748,13 +752,6 @@
   1.367  the new behavior confirms better to the common style on Unix systems.
   1.368  Additionally, the new approach is more uniform and clearer to users.
   1.369  
   1.370 -.U3 "Locale
   1.371 -.P
   1.372 -The configure option
   1.373 -.Sw --disable-locale
   1.374 -was removed because POSIX provides locale support and there's
   1.375 -hardly any need to disable locale support.
   1.376 -.Ci ccf4f175ef4c4e7522f9510a4a1149c15d810dd9
   1.377  
   1.378  .U3 "ndbm
   1.379  .P
   1.380 @@ -771,7 +768,7 @@
   1.381  .Sw -suppressdup
   1.382  switch.)
   1.383  .P
   1.384 -A variety of version of the database library exist.
   1.385 +A variety of versions of the database library exist.
   1.386  .[
   1.387  wolter unix incompat notes dbm
   1.388  .]
   1.389 @@ -937,7 +934,7 @@
   1.390  
   1.391  
   1.392  
   1.393 -.H2 "Removal of Switches
   1.394 +.H2 "Command Line Switches
   1.395  .P
   1.396  The command line switches of MH tools follow the X Window style.
   1.397  They are words, introduced by a single dash.
   1.398 @@ -1021,12 +1018,14 @@
   1.399  .\" XXX Ref
   1.400  displays the number of switches for each of the tools that is available
   1.401  in both, nmh and mmh.
   1.402 -Visible as well as hidden switches were counted,
   1.403 +The tools are sorted by the number of switches they had in nmh.
   1.404 +Visible and hidden switches were counted,
   1.405  but not the generic help and version switches.
   1.406  Whereas in the beginning of the project, the average tool had 11 switches,
   1.407  now it has no more than 5 \(en only half as many.
   1.408  If the `no' switches and similar inverse variant are folded onto
   1.409 -their counter-parts, the average tool has 8 switches in pre-mmh to 4 now.
   1.410 +their counter-parts, the average tool had 8 switches in pre-mmh times and
   1.411 +has 4 now.
   1.412  The total number of functional switches in mmh dropped from 465
   1.413  to 234.
   1.414  
   1.415 @@ -1050,15 +1049,14 @@
   1.416  
   1.417  .U3 "Draft Folder Facility
   1.418  .P
   1.419 -A change early in the project was the completely transition from
   1.420 +A change early in the project was the complete transition from
   1.421  the single draft message to the draft folder facility.
   1.422  .Ci 337338b404931f06f0db2119c9e145e8ca5a9860
   1.423 -The draft folder facility was introduced in the mid-Eighties.
   1.424 -(Rose and Romine called it a ``relatively new feature''
   1.425 +The draft folder facility was introduced in the mid-Eighties, when
   1.426 +Rose and Romine called it a ``relatively new feature''.
   1.427  .[
   1.428  rose romine real work
   1.429  .]
   1.430 -in 1985.)
   1.431  Since then, the facility had existed but was deactivated by default.
   1.432  The default activation and the related rework of the tools made it
   1.433  possible to remove the
   1.434 @@ -1103,7 +1101,7 @@
   1.435  .Pn anno
   1.436  had the switches
   1.437  .Sw -[no]inplace
   1.438 -to either annotate the message inplace and thus preserve hard links,
   1.439 +to either annotate the message in place and thus preserve hard links,
   1.440  or annotate a copy to replace the original message, breaking hard links.
   1.441  Following the assumption that linked messages should truly be the
   1.442  same message, and annotating it should not break the link, the
   1.443 @@ -1227,7 +1225,8 @@
   1.444  .U3 "MIME Tools
   1.445  .P
   1.446  The MIME tools, which were once part of
   1.447 -.Pn mhn ,
   1.448 +.Pn mhn
   1.449 +[sic!],
   1.450  had several switches that added little practical value to the programs.
   1.451  The
   1.452  .Sw -[no]realsize
   1.453 @@ -1449,7 +1448,7 @@
   1.454  .P
   1.455  The
   1.456  .Sw -noedit
   1.457 -switches of
   1.458 +switch of
   1.459  .Pn comp ,
   1.460  .Pn repl ,
   1.461  .Pn forw ,
   1.462 @@ -1484,17 +1483,15 @@
   1.463  .P
   1.464  Effectively, the
   1.465  .Sw -nowhatnowproc
   1.466 -switch stored a copy of the form file into the draft folder.
   1.467 +switch creates only a draft message.
   1.468  As
   1.469  .Cl "-whatnowproc true
   1.470  causes the same behavior, the
   1.471  .Sw -nowhatnowproc
   1.472  switch was removed for being redundant.
   1.473 -Likely, however, the intention for specifying
   1.474 +Likely, the
   1.475  .Sw -nowhatnowproc
   1.476 -is sending a fully prepared form file at once.
   1.477 -This can be done with
   1.478 -.Cl "-whatnowproc send" .
   1.479 +switch was intended to be used by front-ends.
   1.480  
   1.481  
   1.482  .U3 "Compatibility Switches
   1.483 @@ -1651,7 +1648,7 @@
   1.484  .H1 "Modernizing
   1.485  
   1.486  
   1.487 -.H2 "Removal of Code Relicts
   1.488 +.H2 "Code Relicts
   1.489  .P
   1.490  The code base of mmh originates from the late Seventies,
   1.491  had been extensively
   1.492 @@ -1901,7 +1898,7 @@
   1.493  
   1.494  
   1.495  
   1.496 -.H1 "Code style
   1.497 +.H1 "Code Style
   1.498  .P
   1.499  foo
   1.500