comparison discussion.roff @ 179:b59201e345e5

Applied further corrections by Aaron.
author markus schnalke <meillo@marmaro.de>
date Tue, 10 Jul 2012 23:13:45 +0200
parents 520b3c7abba1
children 731e747a805b
comparison
equal deleted inserted replaced
178:520b3c7abba1 179:b59201e345e5
1655 I explained my reasons in the commit messages 1655 I explained my reasons in the commit messages
1656 in the version control system. 1656 in the version control system.
1657 Hence, others can comprehend my view and argue for undoing the change 1657 Hence, others can comprehend my view and argue for undoing the change
1658 if I have missed an important aspect. 1658 if I have missed an important aspect.
1659 I was quick in dropping parts. 1659 I was quick in dropping parts.
1660 I rather re-included falsely dropped parts than going at a slower pace. 1660 I rather include falsely dropped parts again, than going at a slower pace.
1661 Mmh is experimental work; it required tough decisions. 1661 Mmh is experimental work; it requires tough decisions.
1662 .\" XXX ``exp. work'' schon oft gesagt 1662 .\" XXX ``exp. work'' schon oft gesagt
1663 1663
1664 1664
1665 .U3 "Forking 1665 .U3 "Forking
1666 .P 1666 .P
1968 Drafts with attachment headers are converted to MIME automatically by 1968 Drafts with attachment headers are converted to MIME automatically by
1969 .Pn send . 1969 .Pn send .
1970 The conversion to MIME is invisible to the user. 1970 The conversion to MIME is invisible to the user.
1971 The draft stored in the draft folder is always in source form with 1971 The draft stored in the draft folder is always in source form with
1972 attachment headers. 1972 attachment headers.
1973 If the MIMEification fails, for instance because the file to attach 1973 If the MIMEification fails (e.g. because the file to attach
1974 is not accessible, the original draft is not changed. 1974 is not accessible) the original draft is not changed.
1975 .P 1975 .P
1976 The attachment system handles the forwarding of messages, too. 1976 The attachment system handles the forwarding of messages, too.
1977 If the attachment header value starts with a plus character (`\fL+\fP'), 1977 If the attachment header value starts with a plus character (`\fL+\fP'),
1978 like in 1978 like in
1979 .Cl "Attach: +bob 30 42" , 1979 .Cl "Attach: +bob 30 42" ,
1990 If the user did not call `mime', a broken message would be sent. 1990 If the user did not call `mime', a broken message would be sent.
1991 Therefore, the 1991 Therefore, the
1992 .Pe automimeproc 1992 .Pe automimeproc
1993 profile entry could be specified to have the `mime' command invoked 1993 profile entry could be specified to have the `mime' command invoked
1994 automatically each time. 1994 automatically each time.
1995 Unfortunately, this approach conflicted with attachment system 1995 Unfortunately, this approach conflicted with the attachment system
1996 because the draft would already be in MIME format at the time 1996 because the draft would already be in MIME format at the time
1997 when the attachment system wanted to MIMEify it. 1997 when the attachment system wanted to MIMEify it.
1998 To use nmh's attachment system, `mime' must not be called at the 1998 To use nmh's attachment system, `mime' must not be called at the
1999 WhatNow prompt and 1999 WhatNow prompt and
2000 .Pe automimeproc 2000 .Pe automimeproc
2046 This is a difficult task, yet it spares the user irritating work. 2046 This is a difficult task, yet it spares the user irritating work.
2047 Determining the correct MIME type of content is partly mechanical, 2047 Determining the correct MIME type of content is partly mechanical,
2048 partly intelligent work. 2048 partly intelligent work.
2049 Forcing the user to find out the correct MIME type, 2049 Forcing the user to find out the correct MIME type,
2050 forces him to do partly mechanical work. 2050 forces him to do partly mechanical work.
2051 Letting the computer do the work, can lead to bad choices for difficult 2051 Letting the computer do the work can lead to bad choices for difficult
2052 content. 2052 content.
2053 For mmh, the latter option was chosen. 2053 For mmh, the latter option was chosen.
2054 .P 2054 .P
2055 Determining the MIME type by the suffix of the file name is a dumb 2055 Determining the MIME type by the suffix of the file name is a dumb
2056 approach, yet it is simple to implement and provides good results 2056 approach, yet it is simple to implement and provides good results
2233 .P 2233 .P
2234 One should note that this section completely ignores the original 2234 One should note that this section completely ignores the original
2235 .Pn show 2235 .Pn show
2236 program, because it was not capable to display MIME messages 2236 program, because it was not capable to display MIME messages
2237 and is no longer part of mmh. 2237 and is no longer part of mmh.
2238 .\" XXX ref to other section
2238 Although 2239 Although
2239 .Pn mhshow 2240 .Pn mhshow
2240 was renamed to 2241 was renamed to
2241 .Pn show 2242 .Pn show
2242 in mmh, this section uses the name 2243 in mmh, this section uses the name
2243 .Pn mhshow , 2244 .Pn mhshow ,
2244 in order to avoid confusion. 2245 in order to avoid confusion.
2245 .\" XXX ref to other section
2246 .P 2246 .P
2247 In mmh, the basic idea is that 2247 In mmh, the basic idea is that
2248 .Pn mhshow 2248 .Pn mhshow
2249 should display a message in one single pager session. 2249 should display a message in one single pager session.
2250 Therefore, 2250 Therefore,
2284 .Ci d0581ba306a7299113a346f9b4c46ce97bc4cef6 2284 .Ci d0581ba306a7299113a346f9b4c46ce97bc4cef6
2285 This could already be requested with the, now removed, 2285 This could already be requested with the, now removed,
2286 .Sw -serialonly 2286 .Sw -serialonly
2287 switch of 2287 switch of
2288 .Pn mhshow . 2288 .Pn mhshow .
2289 As MIME parts are always processed exclusively , i.e. serially, 2289 As MIME parts are always processed exclusively, i.e. serially,
2290 the `%e' escape in 2290 the `%e' escape in
2291 .Pe mhshow-show-* 2291 .Pe mhshow-show-*
2292 profile entries became useless and was thus removed. 2292 profile entries became useless and was thus removed.
2293 .Ci a20d405db09b7ccca74d3e8c57550883da49e1ae 2293 .Ci a20d405db09b7ccca74d3e8c57550883da49e1ae
2294 .P 2294 .P
2763 Unless they are strongly convinced of the concepts, they will fail. 2763 Unless they are strongly convinced of the concepts, they will fail.
2764 I have seen friends of me giving up disappointed 2764 I have seen friends of me giving up disappointed
2765 before they truly used the system, 2765 before they truly used the system,
2766 although they had been motivated in the beginning. 2766 although they had been motivated in the beginning.
2767 They suffer hard enough to get used to the tool chest approach, 2767 They suffer hard enough to get used to the tool chest approach,
2768 we should spare them further inconveniences. 2768 we developers should spare them further inconveniences.
2769 .P 2769 .P
2770 Maintaining compatibility for its own sake is bad, 2770 Maintaining compatibility for its own sake is bad,
2771 because the code base collects more and more compatibility code. 2771 because the code base collects more and more compatibility code.
2772 Sticking to the compatiblity code means remaining limited; 2772 Sticking to the compatiblity code means remaining limited;
2773 whereas adjusting to the changes renders the compatibility unnecessary. 2773 whereas adjusting to the changes renders the compatibility unnecessary.
3811 .H2 "Modularization 3811 .H2 "Modularization
3812 .P 3812 .P
3813 The source code of the mmh tools is located in the 3813 The source code of the mmh tools is located in the
3814 .Fn uip 3814 .Fn uip
3815 (``user interface programs'') directory. 3815 (``user interface programs'') directory.
3816 Each tools has a source file with the same name. 3816 Each tools has a source file with the name of the command.
3817 For example, 3817 For example,
3818 .Pn rmm 3818 .Pn rmm
3819 is built from 3819 is built from
3820 .Fn uip/rmm.c . 3820 .Fn uip/rmm.c .
3821 Some source files are used for multiple programs. 3821 Some source files are used for multiple programs.
3839 Splitting the source code of a large program into multiple files can 3839 Splitting the source code of a large program into multiple files can
3840 increase the readability of its source code. 3840 increase the readability of its source code.
3841 Most of the mmh tools, however, are simple and straight-forward programs. 3841 Most of the mmh tools, however, are simple and straight-forward programs.
3842 With the exception of the MIME handling tools, 3842 With the exception of the MIME handling tools,
3843 .Pn pick 3843 .Pn pick
3844 is the largest tools. 3844 is the largest tool.
3845 It contains 1\|037 lines of source code (measured with 3845 It contains 1\|037 lines of source code (measured with
3846 .Pn sloccount ), excluding the MH library. 3846 .Pn sloccount ), excluding the MH library.
3847 Only the MIME handling tools (\c 3847 Only the MIME handling tools (\c
3848 .Pn mhbuild , 3848 .Pn mhbuild ,
3849 .Pn mhstore , 3849 .Pn mhstore ,
3852 are larger. 3852 are larger.
3853 Splitting programs with less than 1\|000 lines of code into multiple 3853 Splitting programs with less than 1\|000 lines of code into multiple
3854 source files seldom leads to better readability. 3854 source files seldom leads to better readability.
3855 For such tools, splitting makes sense 3855 For such tools, splitting makes sense
3856 when parts of the code are reused in other programs, 3856 when parts of the code are reused in other programs,
3857 and the reused code fragment is not general enough 3857 and the reused code fragment is (1) not general enough
3858 for including it in the MH library, 3858 for including it in the MH library
3859 or, if the code has dependencies on a library that only few programs need. 3859 or (2) has dependencies on a library that only few programs need.
3860 .Fn uip/packsbr.c , 3860 .Fn uip/packsbr.c ,
3861 for instance, provides the core program logic for the 3861 for instance, provides the core program logic for the
3862 .Pn packf 3862 .Pn packf
3863 and 3863 and
3864 .Pn rcvpack 3864 .Pn rcvpack
4019 because 4019 because
4020 .Pn comp 4020 .Pn comp
4021 does annotate and send messages. 4021 does annotate and send messages.
4022 In nmh, there surely exists the tool 4022 In nmh, there surely exists the tool
4023 .Pn send , 4023 .Pn send ,
4024 which does (almost) only send messages. 4024 which does mainly send messages.
4025 But 4025 But
4026 .Pn comp 4026 .Pn comp
4027 and 4027 and
4028 .Pn repl 4028 .Pn repl
4029 and 4029 and
4032 .Pn dist 4032 .Pn dist
4033 and 4033 and
4034 .Pn whatnow 4034 .Pn whatnow
4035 and 4035 and
4036 .Pn viamail , 4036 .Pn viamail ,
4037 they all (!) have the same message sending function included, too. 4037 they all (!) have the same message sending function included, as well.
4038 In result, 4038 In result,
4039 .Pn comp 4039 .Pn comp
4040 sends messages without using 4040 sends messages without using
4041 .Pn send . 4041 .Pn send .
4042 The situation is the same as if 4042 The situation is the same as if