docs/master
diff discussion.roff @ 168:277eeb5ba223
Applied suggestions by Lydi.
author | markus schnalke <meillo@marmaro.de> |
---|---|
date | Tue, 10 Jul 2012 11:46:20 +0200 |
parents | f102dcc06bb9 |
children | f4ffe121a0a2 |
line diff
1.1 --- a/discussion.roff Tue Jul 10 10:26:04 2012 +0200 1.2 +++ b/discussion.roff Tue Jul 10 11:46:20 2012 +0200 1.3 @@ -1518,8 +1518,10 @@ 1.4 .Sw -[no]preserve 1.5 of 1.6 .Pn refile 1.7 -was removed because what use was it anyway? 1.8 -Quoting nmh's man page of 1.9 +was removed 1.10 +.Ci 8edc5aaf86f9f77124664f6801bc6c6cdf258173 1.11 +because what use was it anyway? 1.12 +Quoting nmh's man page 1.13 .Mp refile (1): 1.14 .QS 1.15 Normally when a message is refiled, for each destination 1.16 @@ -2002,7 +2004,11 @@ 1.17 But then the case of non-ASCII text without attachment headers was 1.18 not caught. 1.19 All in all, the solution was complex and irritating. 1.20 -My patch from December 2010 would have simplified the situation. 1.21 +My patch from December 2010 1.22 +.[ 1.23 +nmh-workers attachment proposal 1.24 +.] 1.25 +would have simplified the situation. 1.26 .P 1.27 Mmh's current solution is even more elaborate. 1.28 Any necessary MIMEification is done automatically. 1.29 @@ -2465,23 +2471,21 @@ 1.30 .Fn draft 1.31 in the MH directory, which is treated special. 1.32 On composing a message, this draft file was used. 1.33 -As the draft file was one particular file, only one draft could be 1.34 -managed at any time. 1.35 When starting to compose another message before the former one was sent, 1.36 the user had to decide among: 1.37 .BU 1.38 -Use the old draft to finish and send it before starting with a new one. 1.39 +Using the old draft to finish and send it before starting with a new one. 1.40 .BU 1.41 -Discard the old draft, replacing it with the new one. 1.42 +Discarding the old draft and replacing it with a new one. 1.43 .BU 1.44 -Preserve the old draft by refiling it to a folder. 1.45 +Preserving the old draft by refiling it to a folder. 1.46 .P 1.47 -This was, it was only possible to work in alternation on multiple drafts. 1.48 +It was only possible to work in alternation on multiple drafts. 1.49 Therefore, the current draft needed to be refiled to a folder and 1.50 -another one re-using for editing. 1.51 +another one re-used for editing. 1.52 Working on multiple drafts at the same time was impossible. 1.53 The usual approach of switching to a different MH context did not 1.54 -change anything. 1.55 +help anything. 1.56 .P 1.57 The draft folder facility exists to 1.58 allow true parallel editing of drafts, in a straight forward way. 1.59 @@ -2526,21 +2530,24 @@ 1.60 switches were removed because operating on a draft message is no longer 1.61 special. 1.62 It became indistinguishable to operating on any other message. 1.63 -There is no more need to query the user for draft handling. 1.64 +.Ci 337338b404931f06f0db2119c9e145e8ca5a9860 1.65 +.P 1.66 +There is no more need to query the user for draft handling 1.67 +.Ci 2d48b455c303a807041c35e4248955f8bec59eeb . 1.68 It is always possible to add another new draft. 1.69 Refiling drafts is without difference to refiling other messages. 1.70 -All these special cases are gone. 1.71 +All of these special cases are gone. 1.72 Yet, one draft-related switch remained. 1.73 .Pn comp 1.74 still has 1.75 .Sw -[no]use 1.76 for switching between two modes: 1.77 .BU 1.78 -.Sw -use : 1.79 -Modify an existing draft. 1.80 +.Sw -use 1.81 +to modify an existing draft. 1.82 .BU 1.83 -.Sw -nouse : 1.84 -Compose a new draft, possibly taking some existing message as a form. 1.85 +.Sw -nouse 1.86 +to compose a new draft, possibly taking some existing message as template. 1.87 .P 1.88 In either case, the behavior of 1.89 .Pn comp 1.90 @@ -2578,35 +2585,34 @@ 1.91 The specific file would then be ignored by MH because only files with 1.92 names consisting of digits only are treated as messages. 1.93 Although files remained in the file system, 1.94 -the messages were no more visible in MH. 1.95 -To truly delete them, a maintenance job is needed. 1.96 -Usually a cron job is installed to delete them after a grace time. 1.97 +the messages were no longer visible in MH. 1.98 +To truly delete them, a maintenance job was needed. 1.99 +Usually a cron job was installed to delete them after a grace time. 1.100 For instance: 1.101 .VS 1.102 find $HOME/Mail -type f -name ',*' -ctime +7 -delete 1.103 VE 1.104 -In such a setup, the original message can be restored 1.105 +In such a setup, the original message could be restored 1.106 within the grace time interval by stripping the 1.107 backup prefix from the file name. 1.108 -But the user can not rely on this statement. 1.109 -If the last message of a folder with six messages (1-6) is removed, 1.110 +But the user could not rely on this statement. 1.111 +If the last message of a folder with six messages (\fL1-6\fP) was removed, 1.112 message 1.113 .Fn 6 , 1.114 -becomes file 1.115 +became file 1.116 .Fn ,6 . 1.117 -If then a new message enters the same folder, it will be given 1.118 -the number one higher than the highest message. 1.119 -In this case the message is named 1.120 +If then a new message entered the same folder, it would be named with 1.121 +the number one above the highest existing message number. 1.122 +In this case the message would be named 1.123 .Fn 6 1.124 then. 1.125 -If this message is removed as well, 1.126 -then the backup of the former message gets overwritten. 1.127 -Hence, the ability to restore removed messages does not only depend on 1.128 +If this new message would be removed as well, 1.129 +then the backup of the former message is overwritten. 1.130 +Hence, the ability to restore removed messages did not only depend on 1.131 the ``sweeping cron job'' but also on the removing of further messages. 1.132 It is undesirable to have such obscure and complex mechanisms. 1.133 -The user should be given a small set of clear assertions. 1.134 +The user should be given a small set of clear assertions, such as 1.135 ``Removed files are restorable within a seven-day grace time.'' 1.136 -is such a clear assertion. 1.137 With the addition ``... unless a message with the same name in the 1.138 same folder is removed before.'' the statement becomes complex. 1.139 A user will hardly be able to keep track of any removal to know 1.140 @@ -2628,20 +2634,20 @@ 1.141 was introduced very early to improve the situation. 1.142 It could be set to any command, which would be executed to remove 1.143 the specified messages. 1.144 -This would override the default action, described above. 1.145 -Refiling the to-be-removed files to a garbage folder is the usual example. 1.146 +This would override the default action described above. 1.147 +Refiling the to-be-removed files to a trash folder is the usual example. 1.148 Nmh's man page 1.149 .Mp rmm (1) 1.150 proposes to set the 1.151 .Pe rmmproc 1.152 to 1.153 .Cl "refile +d 1.154 -to move messages to the garbage folder, 1.155 +to move messages to the trash folder, 1.156 .Fn +d , 1.157 instead of renaming them with the backup prefix. 1.158 The man page proposes additionally the expunge command 1.159 .Cl "rm `mhpath +d all` 1.160 -to empty the garbage folder. 1.161 +to empty the trash folder. 1.162 .P 1.163 Removing messages in such a way has advantages. 1.164 The mail storage is prevented from being cluttered with removed messages 1.165 @@ -2670,8 +2676,10 @@ 1.166 where the 1.167 .Sw -unlink 1.168 switch causes the files to be unlinked. 1.169 +.Ci 8edc5aaf86f9f77124664f6801bc6c6cdf258173 1.170 +.Ci ca0b3e830b86700d9e5e31b1784de2bdcaf58fc5 1.171 .P 1.172 -Dropping the legacy approach and completely converting to the new approach 1.173 +Dropping the legacy approach and converting to the new approach completely 1.174 simplified the code base. 1.175 The relationship between 1.176 .Pn rmm 1.177 @@ -2739,9 +2747,8 @@ 1.178 .P 1.179 Yet, the real problem lies less in enabling the features, as this is 1.180 straight forward as soon as one knows what he wants. 1.181 -The real problem is that new users need deep insights into the project 1.182 -before they find out what they are missing and that nmh actually 1.183 -provides it already, it just was not activated. 1.184 +The real problem is that new users need deep insight into the project 1.185 +to find out about inactive features nmh already provides. 1.186 To give an example, I needed one year of using nmh 1.187 before I became aware of the existence of the attachment system. 1.188 One could argue that this fact disqualifies my reading of the 1.189 @@ -2764,8 +2771,8 @@ 1.190 Maintaining compatibility for its own sake is bad, 1.191 because the code base collects more and more compatibility code. 1.192 Sticking to the compatiblity code means remaining limited; 1.193 -not using it renders it unnecessary. 1.194 -Keeping unused alternative in the code is a bad choice as they likely 1.195 +whereas adjusting to the changes renders the compatibility unnecessary. 1.196 +Keeping unused alternatives in the code is a bad choice as they likely 1.197 gather bugs, by not being well tested. 1.198 Also, the increased code size and the greater number of conditions 1.199 increase the maintenance costs. 1.200 @@ -2778,11 +2785,11 @@ 1.201 Nmh's user base is small and old. 1.202 Changing the interfaces would cause inconvenience to long-term users of MH. 1.203 It would force them to change their many years old MH configurations. 1.204 -I do understand this aspect, but it keeps new users from using MH. 1.205 -By sticking to the old users, new users are kept away. 1.206 +I do understand this aspect, but by sticking to the old users, 1.207 +new users are kept away. 1.208 Yet, the future lies in new users. 1.209 -Hence, mmh invites new users by providing a convenient and modern setup, 1.210 -readily usable out-of-the-box. 1.211 +In consequence, mmh invites new users by providing a convenient 1.212 +and modern setup, readily usable out-of-the-box. 1.213 .P 1.214 In mmh, all modern features are active by default and many previous 1.215 approaches are removed or only accessible in manual ways. 1.216 @@ -2809,7 +2816,7 @@ 1.217 .P 1.218 In consequence, a setup with a profile that defines only the path to the 1.219 mail storage, is already convenient to use. 1.220 -Again, Paul Vixie's ``edginess'' appeal supports the direction I took: 1.221 +Again, Paul Vixie's ``edginess'' call supports the direction I took: 1.222 ``the `main branch' should just be modern''. 1.223 .[ 1.224 paul vixie edginess nmh-workers 1.225 @@ -2832,7 +2839,7 @@ 1.226 Good style is so important to good programming that we have chose 1.227 to cover it first. 1.228 .QE 1.229 -This section covers changes in mmh that were motivated by the desire 1.230 +This section covers changes in mmh that were guided by the desire 1.231 to improve on style. 1.232 Many of them follow the rules given in the quoted book. 1.233 .[ 1.234 @@ -2848,10 +2855,11 @@ 1.235 .U3 "Indentation Style 1.236 .P 1.237 Indentation styles are the holy cow of programmers. 1.238 -Again Kernighan and Pike: 1.239 +Kernighan and Pike 1.240 .[ [ 1.241 kernighan pike practice of programming 1.242 .], p. 10] 1.243 +wrote: 1.244 .QS 1.245 Programmers have always argued about the layout of programs, 1.246 but the specific style is much less important than its consistent 1.247 @@ -3001,15 +3009,7 @@ 1.248 .Sw -component 1.249 and 1.250 .Sw -text , 1.251 -which took an argument each, 1.252 -and the two pairs of flags, 1.253 -.Sw -[no]date 1.254 -and 1.255 -.Sw -[no]inplace., 1.256 -.Sw -component 1.257 -and 1.258 -.Sw -text , 1.259 -which took an argument each, 1.260 +which have an argument each, 1.261 and the two pairs of flags, 1.262 .Sw -[no]date 1.263 and 1.264 @@ -3300,6 +3300,7 @@ 1.265 .Fn sbr/path.c . 1.266 .Fn sbr/m_maildir.c 1.267 is removed. 1.268 +.Ci d39e2c447b0d163a5a63f480b23d06edb7a73aa0 1.269 .P 1.270 Along with the path conversion rework, I also replaced 1.271 .Fu getfolder(FDEF) 1.272 @@ -3315,12 +3316,14 @@ 1.273 .Fn sbr/getfolder.c 1.274 to 1.275 .Fn sbr/path.c . 1.276 +.Ci d39e2c447b0d163a5a63f480b23d06edb7a73aa0 1.277 .P 1.278 The related function 1.279 .Fu etcpath() 1.280 was moved to 1.281 .Fn sbr/path.c , 1.282 -too. 1.283 +too 1.284 +.Ci b4c29794c12099556151d93a860ee51badae2e35 . 1.285 Previously, it had been located in 1.286 .Fn config/config.c , 1.287 for whatever reasons. 1.288 @@ -3331,7 +3334,6 @@ 1.289 The readability of the code is highly improved. 1.290 Additionally, each of the six exported and one static functions 1.291 is introduced by an explaining comment. 1.292 -.Ci d39e2c447b0d163a5a63f480b23d06edb7a73aa0 1.293 1.294 1.295 1.296 @@ -3772,8 +3774,9 @@ 1.297 appeared to be inconsistent. 1.298 The approach chosen for mmh is consistent, simple, and familiar to 1.299 Unix users. 1.300 +.Ci 7030d7edb099bff36ded7548bb5380f7acab4f9b 1.301 .P 1.302 -MH allows users to have multiiple MH setups. 1.303 +MH allows users to have multiple MH setups. 1.304 Therefore, it is necessary to select a different profile. 1.305 The profile is the single entry point to access the rest of a 1.306 personal MH setup. 1.307 @@ -3796,6 +3799,7 @@ 1.308 override the paths to the profile and context files, respectively. 1.309 This approach allows the set of personal configuration files to be chosen 1.310 independently from the profile, context, and mail storage. 1.311 +.Ci 7030d7edb099bff36ded7548bb5380f7acab4f9b 1.312 .P 1.313 The separation of the files by type is sensible and convenient. 1.314 The new approach has no functional disadvantages, 1.315 @@ -3891,7 +3895,7 @@ 1.316 a MH-MIME library, as a companion to the MH standard library. 1.317 This is left open for the future. 1.318 .P 1.319 -The work already done, focussed on the non-MIME tools. 1.320 +The work already done focussed on the non-MIME tools. 1.321 The amount of code compiled into each program was reduced. 1.322 This eases the understanding of the code base. 1.323 In nmh, 1.324 @@ -4076,15 +4080,27 @@ 1.325 .Pn whatnow 1.326 which thereafter invokes 1.327 .Pn send . 1.328 +.Ci 3df5ab3c116e6d4a2fb4bb5cc9dfc5f781825815 1.329 +.Ci c73c00bfccd22ec77e9593f47462aeca4a8cd9c0 1.330 The clear separation on the surface is maintained on the level below. 1.331 Human users and the tools use the same interface \(en 1.332 annotations, for example, are made by invoking 1.333 .Pn anno , 1.334 no matter if requested by programs or by human beings. 1.335 +.Ci 469a4163c2a1a43731d412eaa5d9cae7d670c48b 1.336 +.Ci aed384169af5204b8002d06e7a22f89197963d2d 1.337 +.Ci 3caf9e298a8861729ca8b8a84f57022b6f3ea742 1.338 The decrease of tools built from multiple source files and thus 1.339 the decrease of 1.340 .Fn uip/*sbr.c 1.341 files confirm the improvement. 1.342 +.Ci 9e6d91313f01c96b4058d6bf419a8ca9a207bc33 1.343 +.ci 81744a46ac9f845d6c2b9908074d269275178d2e 1.344 +.Ci f0f858069d21111f0dbea510044593f89c9b0829 1.345 +.Ci 0503a6e9be34f24858b55b555a5c948182b9f24b 1.346 +.Ci 27826f9353e0f0b04590b7d0f8f83e60462b90f0 1.347 +.Ci d1da1f94ce62160aebb30df4063ccbc53768656b 1.348 +.Ci c42222869e318fff5dec395eca3e776db3075455 1.349 .P 1.350 .\" XXX move this paragraph up somewhere 1.351 One disadvantage needs to be taken with this change: