comparison ch03.roff @ 20:7a100c80fa91

Some new text (show/mhshow; prompter).
author markus schnalke <meillo@marmaro.de>
date Sun, 06 May 2012 17:33:45 +0200
parents ab5253e48c74
children bb8a8be49024
comparison
equal deleted inserted replaced
19:ab5253e48c74 20:7a100c80fa91
4 .P 4 .P
5 bar 5 bar
6 6
7 .H1 "Removal of Code Relicts 7 .H1 "Removal of Code Relicts
8 .P 8 .P
9 The code base of mmh originates in the late 70s, had been extensively 9 The code base of mmh originates from the late 70s, had been extensively
10 worked on in the mid 80s, and had been partly reorganized and extended 10 worked on in the mid 80s, and had been partly reorganized and extended
11 in the 90s. Relicts of all those times had gathered in the code base. 11 in the 90s. Relicts of all those times had gathered in the code base.
12 My goal was to remove any ancient code parts. One part of the task was 12 My goal was to remove any ancient code parts. One part of the task was
13 converting obsolete code constructs to standard constructs, the other part 13 converting obsolete code constructs to standard constructs, the other part
14 was dropping obsolete functions. 14 was dropping obsolete functions.
31 He converted large parts of the code to POSIX constructs, removing 31 He converted large parts of the code to POSIX constructs, removing
32 the conditionals compilation for now standardized features. 32 the conditionals compilation for now standardized features.
33 I'm thankful for this task being solved. I only pulled the changes into 33 I'm thankful for this task being solved. I only pulled the changes into
34 mmh. 34 mmh.
35 .P 35 .P
36 The other task of dropping ancient functionality to remove old code, 36 The other task \(en dropping ancient functionality to remove old code \(en
37 I did myself, though. My position to strip mmh to the bare minimum of 37 I did myself, though. My position to strip mmh to the bare minimum of
38 frequently used features is much more revolutional than the nmh community 38 frequently used features is much more revolutional than the nmh community
39 sees it. Without the need to justify my decisions, I was able to quickly 39 likes it. Without the need to justify my decisions, I was able to quickly
40 remove code I considered ancient. The need to discuss my decisions with 40 remove functionality I considered ancient.
41 peers likely would have slowed this process down. Of course, I did research 41 The need to discuss my decisions with
42 peers likely would have slowed this process down. Of course, I researched
42 if a particular feature really should be dropped. Having not had any 43 if a particular feature really should be dropped. Having not had any
43 contact to this feature within my computer life was a first indicator to 44 contact to this feature within my computer life was a first indicator to
44 drop it, but I also asked others and searched the literature for modern 45 drop it, but I also asked others and searched the literature for modern
45 usage of the feature. If it appeared to be truly ancient, I dropped it. 46 usage of the feature. If it appeared to be truly ancient, I dropped it.
46 The reason for dropping is always part of the commit message in the 47 The reason for dropping is always part of the commit message in the
119 the support for it. By this removal, MD5 computation is not needed 120 the support for it. By this removal, MD5 computation is not needed
120 anywhere in mmh. Hence, over 500 lines of code were removed by this one 121 anywhere in mmh. Hence, over 500 lines of code were removed by this one
121 change. Even if the `Content-MD5' header field is useful sometimes, 122 change. Even if the `Content-MD5' header field is useful sometimes,
122 I value its usefulnes less than the improvement in maintainability, caused 123 I value its usefulnes less than the improvement in maintainability, caused
123 by the removal. 124 by the removal.
125
126 .U2 "Prompter's Control Keys
127 .P
128 The program
129 .Pn prompter
130 queries the user to fill in a message form. When used by
131 .Pn comp
132 as:
133 .DS
134 comp \-editor prompter
135 .DE
136 the resulting behavior is similar to
137 .Pn mailx .
138 Appearently,
139 .Pn prompter
140 hadn't been touched lately. Otherwise it's hardly explainable why it
141 still offered the switches
142 .Sn \-erase \fUchr\fP
143 and
144 .Sn \-kill \fUchr\fP
145 to name the characters for command line editing.
146 The times when this had been neccessary are long time gone.
147 Today these things work out-of-the-box, and if not, are configured
148 with the standard tool
149 .Pn stty .
124 150
125 151
126 .H1 "Draft and Trash Folders 152 .H1 "Draft and Trash Folders
127 .U2 "Draft Folder 153 .U2 "Draft Folder
128 .P 154 .P
387 413
388 .H1 "Attachments 414 .H1 "Attachments
389 .P 415 .P
390 foo 416 foo
391 417
418 .H1 "mhshow to show Transition
419 .P
420 Since the very beginning, already in the first concept paper,
421 .Pn show
422 had been MH's mail display program.
423 .Pn show
424 found out which pathnames the relevant messages had and invoked
425 .Pn mhl
426 then to let it render the content.
427 With the advent of MIME, this approach wasn't sufficient anymore.
428 MIME messages can consist of multiple parts, some of which aren't
429 directly displayable, and text content can be encoded in
430 foreign charsets.
431 .Pn show 's
432 simple approach and
433 .Pn mhl 's
434 limited display facilities couldn't cope with the task any longer.
435 Instead of extending these tools, new ones were written from scratch
436 and then added to the MH toolchest. Doing so is encouraged by the
437 toolchest approach. The new tools could be added without interfearing
438 with the existing ones. This is great. It allowed MH to be the
439 first MUA to implement MIME.
440 .P
441 The new MIME features were added in form of the single program
442 .Pn mhn .
443 The command
444 .DS
445 mhn \-show 42
446 .DE
447 would show the MIME message numbered 42.
448 With the 1.0 release of nmh in February 1999, Richard Coleman finished
449 the split of
450 .Pn mhn
451 into a set of specialized programs, which together covered the
452 aspects of MIME. One of these resulting tools was
453 .Pn mhshow .
454
455
392 .H1 "Blind Carbon Copies 456 .H1 "Blind Carbon Copies
393 .P 457 .P
394 foo 458 foo
395 459
396 .H1 "Good Defaults 460 .H1 "Good Defaults