comparison discussion.roff @ 181:eb6eeb10afd5

Various stuff: Checked quotes, s/further more/furthermore/, etc
author markus schnalke <meillo@marmaro.de>
date Wed, 11 Jul 2012 09:24:47 +0200
parents 731e747a805b
children 764738b17b74
comparison
equal deleted inserted replaced
180:731e747a805b 181:eb6eeb10afd5
272 272
273 273
274 .H2 "Non-MUA Tools 274 .H2 "Non-MUA Tools
275 .P 275 .P
276 One goal of mmh is to remove the tools that are not part of the MUA's task. 276 One goal of mmh is to remove the tools that are not part of the MUA's task.
277 Further more, any tools that do not significantly improve the MUA's job 277 Furthermore, any tools that do not significantly improve the MUA's job
278 should be removed. 278 should be removed.
279 Loosely related and rarely used tools distract from the lean appearance. 279 Loosely related and rarely used tools distract from the lean appearance.
280 They require maintenance work without adding much to the core task. 280 They require maintenance work without adding much to the core task.
281 By removing these tools, the project shall become more streamlined 281 By removing these tools, the project shall become more streamlined
282 and focused. 282 and focused.
821 A variety of versions of the database library exist. 821 A variety of versions of the database library exist.
822 .[ 822 .[
823 wolter unix incompat notes dbm 823 wolter unix incompat notes dbm
824 .] 824 .]
825 Complicated autoconf code was needed to detect them correctly. 825 Complicated autoconf code was needed to detect them correctly.
826 Further more, the configure switches 826 Furthermore, the configure switches
827 .Sw --with-ndbm=ARG 827 .Sw --with-ndbm=ARG
828 and 828 and
829 .Sw --with-ndbmheader=ARG 829 .Sw --with-ndbmheader=ARG
830 were added to help with difficult setups that would 830 were added to help with difficult setups that would
831 not be detected automatically or correctly. 831 not be detected automatically or correctly.
896 .I username 896 .I username
897 to 897 to
898 .I fakeusername 898 .I fakeusername
899 mapping, based on the password file's GECOS field. 899 mapping, based on the password file's GECOS field.
900 The man page 900 The man page
901 .Mp mh-tailor(5) 901 .Mp mh-tailor (5)
902 described the use case as being the following: 902 described the use case as being the following:
903 .QS 903 .QS
904 This is useful if you want the messages you send to always 904 This is useful if you want the messages you send to always
905 appear to come from the name of an MTA alias rather than your 905 appear to come from the name of an MTA alias rather than your
906 actual account name. For instance, many organizations set up 906 actual account name. For instance, many organizations set up
911 .P 911 .P
912 As mmh sends outgoing mail via the local MTA only, 912 As mmh sends outgoing mail via the local MTA only,
913 the best location to do such global rewrites is there. 913 the best location to do such global rewrites is there.
914 Besides, the MTA is conceptionally the right location because it 914 Besides, the MTA is conceptionally the right location because it
915 does the reverse mapping for incoming mail (aliasing), too. 915 does the reverse mapping for incoming mail (aliasing), too.
916 Further more, masquerading set up there is readily available for all 916 Furthermore, masquerading set up there is readily available for all
917 mail software on the system. 917 mail software on the system.
918 Hence, mmailid masquerading was removed. 918 Hence, mmailid masquerading was removed.
919 .Ci 0836c8000ccb34b59410ef1c15b1b7feac70ce5f 919 .Ci 0836c8000ccb34b59410ef1c15b1b7feac70ce5f
920 .P 920 .P
921 The 921 The
1878 .H2 "Attachments 1878 .H2 "Attachments
1879 .P 1879 .P
1880 The mind model of email attachments is unrelated to MIME. 1880 The mind model of email attachments is unrelated to MIME.
1881 Although the MIME RFCs (2045 through 2049) define the technical 1881 Although the MIME RFCs (2045 through 2049) define the technical
1882 requirements for having attachments, they do not mention the word 1882 requirements for having attachments, they do not mention the word
1883 ``attachment''. 1883 attachment.
1884 Instead of attachments, MIME talks about ``multi-part message bodies'' 1884 Instead of attachments, MIME talks about ``multi-part message bodies''
1885 [RFC\|2045], a more general concept. 1885 [RFC\|2045], a more general concept.
1886 Multi-part messages are messages 1886 Multi-part messages are messages
1887 ``in which one or more different 1887 ``in which one or more different
1888 sets of data are combined in a single body'' 1888 sets of data are combined in a single body''
2426 is planned but not realized yet. 2426 is planned but not realized yet.
2427 .P 2427 .P
2428 Both scripts were written for nmh, hence they needed to be adjust 2428 Both scripts were written for nmh, hence they needed to be adjust
2429 according to the differences between nmh and mmh. 2429 according to the differences between nmh and mmh.
2430 For instance, they use the backup prefix no longer. 2430 For instance, they use the backup prefix no longer.
2431 Further more, compatibility support for old PGP features was dropped. 2431 Furthermore, compatibility support for old PGP features was dropped.
2432 .P 2432 .P
2433 The integrated message signing and encrypting support is one of the 2433 The integrated message signing and encrypting support is one of the
2434 most recent features in mmh. 2434 most recent features in mmh.
2435 It has not yet had the time to mature. 2435 It has not yet had the time to mature.
2436 User feedback and personal experience need to be accumulated to 2436 User feedback and personal experience need to be accumulated to
2606 .Fn 6 2606 .Fn 6
2607 then. 2607 then.
2608 If this new message would be removed as well, 2608 If this new message would be removed as well,
2609 then the backup of the former message is overwritten. 2609 then the backup of the former message is overwritten.
2610 Hence, the ability to restore removed messages did not only depend on 2610 Hence, the ability to restore removed messages did not only depend on
2611 the ``sweeping cron job'' but also on the removing of further messages. 2611 the sweeping cron job but also on the removing of further messages.
2612 It is undesirable to have such obscure and complex mechanisms. 2612 It is undesirable to have such obscure and complex mechanisms.
2613 The user should be given a small set of clear assertions, such as 2613 The user should be given a small set of clear assertions, such as
2614 ``Removed files are restorable within a seven-day grace time.'' 2614 ``Removed files are restorable within a seven-day grace time.''
2615 With the addition ``... unless a message with the same name in the 2615 With the addition ``... unless a message with the same name in the
2616 same folder is removed before.'' the statement becomes complex. 2616 same folder is removed before.'' the statement becomes complex.
2617 A user will hardly be able to keep track of any removal to know 2617 A user will hardly be able to keep track of any removal to know
2618 if the assertion still holds true for a specific file. 2618 if the assertion still holds true for a specific file.
2619 In practice, the real mechanism is unclear to the user. 2619 In practice, the real mechanism is unclear to the user.
2620 The consequences of further removals are not obvious. 2620 The consequences of further removals are not obvious.
2621 .P 2621 .P
2622 Further more, the backup files are scattered within the whole mail storage. 2622 Furthermore, the backup files are scattered within the whole mail storage.
2623 This complicates managing them. 2623 This complicates managing them.
2624 It is possible with the help of 2624 It is possible with the help of
2625 .Pn find , 2625 .Pn find ,
2626 but everything would be more convenient 2626 but everything would be more convenient
2627 if the deleted messages would be collected in one place. 2627 if the deleted messages would be collected in one place.
2926 One application of this rule was the rename of 2926 One application of this rule was the rename of
2927 .Fu check_charset() 2927 .Fu check_charset()
2928 to 2928 to
2929 .Fu is_native_charset() . 2929 .Fu is_native_charset() .
2930 .Ci 8d77b48284c58c135a6b2787e721597346ab056d 2930 .Ci 8d77b48284c58c135a6b2787e721597346ab056d
2931 The same change fixed a violation of ``Be accurate'' as well. 2931 The same change fixed a violation of ``Be accurate''
2932 .[ [
2933 kernighan pike practice of programming
2934 .], p. 4]
2935 as well.
2932 The code did not match the expectation the function suggested, 2936 The code did not match the expectation the function suggested,
2933 as it, for whatever reason, only compared the first ten characters 2937 as it, for whatever reason, only compared the first ten characters
2934 of the charset name. 2938 of the charset name.
2935 .P 2939 .P
2936 More important than using active names is using descriptive names. 2940 More important than using active names is using descriptive names.
2993 They are more difficult to do but lead to larger improvements, 2997 They are more difficult to do but lead to larger improvements,
2994 especially as they influence the outer shape of the tools as well. 2998 especially as they influence the outer shape of the tools as well.
2995 .P 2999 .P
2996 At the end of their chapter on style, 3000 At the end of their chapter on style,
2997 Kernighan and Pike ask: ``But why worry about style?'' 3001 Kernighan and Pike ask: ``But why worry about style?''
3002 .[ [
3003 kernighan pike practice of programming
3004 .], p. 28]
2998 Following are two examples of structural rework that show 3005 Following are two examples of structural rework that show
2999 why style is important in the first place. 3006 why style is important in the first place.
3000 3007
3001 3008
3002 .U3 "Rework of \f(CWanno\fP 3009 .U3 "Rework of \f(CWanno\fP
3343 .P 3350 .P
3344 The MH profile contains the configuration for the user-specific MH setup. 3351 The MH profile contains the configuration for the user-specific MH setup.
3345 MH tools read the profile right after starting up, 3352 MH tools read the profile right after starting up,
3346 as it contains the location of the user's mail storage 3353 as it contains the location of the user's mail storage
3347 and similar settings that influence the whole setup. 3354 and similar settings that influence the whole setup.
3348 Further more, the profile contains the default switches for the tools, 3355 Furthermore, the profile contains the default switches for the tools,
3349 hence, it must be read before the command line switches are processed. 3356 hence, it must be read before the command line switches are processed.
3350 .P 3357 .P
3351 For historic reasons, some MH tools did not read the profile and context. 3358 For historic reasons, some MH tools did not read the profile and context.
3352 Among them were 3359 Among them were
3353 .Pn post /\c 3360 .Pn post /\c
3355 .Pn mhmail , 3362 .Pn mhmail ,
3356 and 3363 and
3357 .Pn slocal . 3364 .Pn slocal .
3358 The reason why these tools ignored the profile were not clearly stated. 3365 The reason why these tools ignored the profile were not clearly stated.
3359 During the discussion on the nmh-workers mailing list, 3366 During the discussion on the nmh-workers mailing list,
3367 David Levine posted an explanation, quoting John Romine:
3360 .[ 3368 .[
3361 nmh-workers levine post profile 3369 nmh-workers levine post profile
3362 .] 3370 .]
3363 David Levine posted an explanation, quoting John Romine:
3364 .QS 3371 .QS
3365 I asked John Romine and here's what he had to say, which 3372 I asked John Romine and here's what he had to say, which
3366 agrees and provides an example that convinces me: 3373 agrees and provides an example that convinces me:
3367 .QS 3374 .QS
3368 My take on this is that 3375 My take on this is that
3474 By writing a clean-profile-wrapper, the concept could have been 3481 By writing a clean-profile-wrapper, the concept could have been
3475 generalized orthogonally to the whole MH tool chest. 3482 generalized orthogonally to the whole MH tool chest.
3476 Then Rose's motivation behind the decision that 3483 Then Rose's motivation behind the decision that
3477 .Pn post 3484 .Pn post
3478 ignores the profile, as quoted by Jeffrey Honig, 3485 ignores the profile, as quoted by Jeffrey Honig,
3486 would have become possible:
3479 .[ 3487 .[
3480 nmh-workers post profile 3488 nmh-workers post profile
3481 .] 3489 .]
3482 would have become possible:
3483 .QS 3490 .QS
3484 when you run mh commands in a script, you want all the defaults to be 3491 when you run mh commands in a script, you want all the defaults to be
3485 what the man page says. 3492 what the man page says.
3486 when you run a command by hand, then you want your own defaults... 3493 when you run a command by hand, then you want your own defaults...
3487 .QE 3494 .QE
3974 .P 3981 .P
3975 As I have read a lot in the code base during the last two years, 3982 As I have read a lot in the code base during the last two years,
3976 I learned about the easy and the difficult parts. 3983 I learned about the easy and the difficult parts.
3977 Code is easy to understand if the influenced code area is small 3984 Code is easy to understand if the influenced code area is small
3978 and its boundaries are strictly defined. 3985 and its boundaries are strictly defined.
3979 Further more, the code needs to solve the problem in a straight-forward way. 3986 Furthermore, the code needs to solve the problem in a straight-forward way.
3980 .P 3987 .P
3981 .\" XXX move this paragraph somewhere else? 3988 .\" XXX move this paragraph somewhere else?
3982 Reading 3989 Reading
3983 .Pn rmm 's 3990 .Pn rmm 's
3984 source code in 3991 source code in
4017 .Fu exec() 4024 .Fu exec()
4018 rather than arbitrary function calls. 4025 rather than arbitrary function calls.
4019 .P 4026 .P
4020 But the real problem is another: 4027 But the real problem is another:
4021 Nmh violates the golden ``one tool, one job'' rule of the Unix philosophy. 4028 Nmh violates the golden ``one tool, one job'' rule of the Unix philosophy.
4029 .\" XXX ref
4022 Understanding 4030 Understanding
4023 .Pn comp 4031 .Pn comp
4024 requires understanding 4032 requires understanding
4025 .Fn uip/annosbr.c 4033 .Fn uip/annosbr.c
4026 and 4034 and
4066 speed might even have been a must to prevent MH from being unusably slow. 4074 speed might even have been a must to prevent MH from being unusably slow.
4067 Whatever the reasons had been, today they are gone. 4075 Whatever the reasons had been, today they are gone.
4068 No longer should we sacrifice readability or conceptional beauty. 4076 No longer should we sacrifice readability or conceptional beauty.
4069 No longer should we violate the Unix philosophy's ``one tool, one job'' 4077 No longer should we violate the Unix philosophy's ``one tool, one job''
4070 guideline. 4078 guideline.
4079 .\" XXX ref
4071 No longer should we keep speed improvements that became unnecessary. 4080 No longer should we keep speed improvements that became unnecessary.
4072 .P 4081 .P
4073 Therefore, mmh's 4082 Therefore, mmh's
4074 .Pn comp 4083 .Pn comp
4075 does no longer send messages. 4084 does no longer send messages.