Mercurial > docs > master
annotate ch03.roff @ 15:66d1835189ad
style: renamed font RC to SC and added font IC. (All concerning small caps.)
author | markus schnalke <meillo@marmaro.de> |
---|---|
date | Sun, 22 Apr 2012 12:34:14 +0200 |
parents | 55ec590cfa07 |
children | 81f703140554 |
rev | line source |
---|---|
0
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
1 .H0 "Work Report |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
2 .P |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
3 foo |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
4 .P |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
5 bar |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
6 |
12
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
7 .H1 "Removal of Code Relicts |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
8 .P |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
9 The code base of mmh originates in the late 70s, had been extensively |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
10 worked on in the mid 80s, and had been partly reorganized and extended |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
11 in the 90s. Relicts of all those times had gathered in the code base. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
12 My goal was to remove any ancient code parts. One part of the task was |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
13 converting obsolete code constructs to standard constructs, the other part |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
14 was dropping obsolete functions. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
15 .P |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
16 As I'm not even thirty years old and have no more than seven years of |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
17 Unix experience, I needed to learn about the history in retroperspective. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
18 Older people likely have used those ancient constructs themself |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
19 and have suffered from their incompatiblities and have longed for |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
20 standardization. Unfortunately, I have only read that others had done so. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
21 This put me in a much more difficult positions when working on the old |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
22 code. I needed to recherche what other would have known by heart from |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
23 experience. All my programming experience comes from a time past ANSI C |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
24 and past POSIX. Although I knew about the times before, I took the |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
25 current state implicitely for granted most of the time. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
26 .P |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
27 Being aware of |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
28 these facts, I rather let people with more historic experience solve the |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
29 task of converting the ancient code constructs to standardized ones. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
30 Luckily, Lyndon Nerenberg focused on this task at the nmh project. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
31 He converted large parts of the code to POSIX constructs, removing |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
32 the conditionals compilation for now standardized features. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
33 I'm thankful for this task being solved. I only pulled the changes into |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
34 mmh. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
35 .P |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
36 The other task of dropping ancient functionality to remove old code, |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
37 I did myself, though. My position to strip mmh to the bare minimum of |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
38 frequently used features is much more revolutional than the nmh community |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
39 sees it. Without the need to justify my decisions, I was able to quickly |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
40 remove code I considered ancient. The need to discuss my decisions with |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
41 peers likely would have slowed this process down. Of course, I did research |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
42 if a particular feature really should be dropped. Having not had any |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
43 contact to this feature within my computer life was a first indicator to |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
44 drop it, but I also asked others and searched the literature for modern |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
45 usage of the feature. If it appeared to be truly ancient, I dropped it. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
46 The reason for dropping is always part of the commit message in the |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
47 version control system. Thus, it is easy for others to check their |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
48 view on the topic with mine and possibly to argue for reinclusion. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
49 |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
50 .U2 "MMDF maildrop support |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
51 .P |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
52 I did drop any support for the MMDF maildrop format. This type of format |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
53 is conceptionally similar to the mbox format, but uses four bytes with |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
54 value 1 (\fL^A^A^A^A\fP) as message delimiter, |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
55 instead of the string ``\fLFrom\0\fP''. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
56 Due to the similarity and mbox being the de-facto standard maildrop |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
57 format on Unix, but also due to the larger influence of Sendmail than MMDF, |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
58 the MMDF maildrop format had vanished. |
0
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
59 .P |
12
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
60 The simplifications within the code were only moderate. Switches could |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
61 be removed from tools like |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
62 .L packf , |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
63 which generate packed mailboxes. Only one packed mailbox format remained: |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
64 mbox. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
65 The most important changes affect the equally named mail parsing routine in |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
66 .L sbr/m_getfld.c . |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
67 The direct MMDF code had been removed, but as now only one packed mailbox |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
68 format is left, code structure simplifications are likely possible. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
69 The reason why they are still outstanding is the heavily optimized code |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
70 of \fLm_getfld()\fP. Changes beyond a small local scope \(en |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
71 which restructuring in its core is \(en cause a high risk of damaging |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
72 the intricate workings of the optimized code. This problem is know |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
73 to the developers of nmh, too. They also avoid touching this minefield |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
74 if possible. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
75 |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
76 .U2 "UUCP Bang Paths |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
77 .P |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
78 More questionably than the former topic is the removal of support for the |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
79 UUCP bang path address style. However, the user may translate the bang |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
80 paths on retrieval to Internet addresses and the other way on posting |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
81 messages. The former can be done my an MDA like procmail; the latter |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
82 by a sendmail wrapper. This would ensure that any address handling would |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
83 work as expected. However, it might just work well without any |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
84 such modifications, as mmh does not touch addresses much, in general. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
85 But I can't ensure as I have never used an environment with bang paths. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
86 Also, the behavior might break at any point in further development. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
87 |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
88 .U2 "Hardcopy terminal support |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
89 .P |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
90 More of a funny anecdote is the remaining of a check for printing to a |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
91 hardcopy terminal until Spring 2012, when I finally removed it. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
92 I surely would be very happy to see such a terminal in action, maybe |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
93 actually being able to work on it, but I fear my chances are null. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
94 .P |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
95 The check only prevented a pager to be placed between the outputting |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
96 program (\fLmhl\fP) and the terminal. This could have been ensured with |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
97 the \fL-nomoreproc\fP at the command line statically, too. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
98 |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
99 .U2 "Removed support for header fields |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
100 .P |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
101 The `Encrypted' header had been introduced by RFC\^822, but already |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
102 marked legacy in RFC 2822. It was superseded by FIXME. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
103 Mmh does no more support this header. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
104 .P |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
105 `Content-MD5' headers were introduced by RFC\^1864. They provide only |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
106 a verification of data corruption during the transfer. By no means can |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
107 they ensure verbatim end-to-end delivery of the contents. This is clearly |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
108 stated in the RFC. The proper approach to provide verificationability |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
109 of content in an end-to-end relationship is the use of digital cryptography |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
110 (RFCs FIXME). On the other hand, transfer protocols should ensure the |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
111 integrity of the transmission. In combinations these two approaches |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
112 make the `Content-MD5' header field useless. In consequence, I removed |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
113 the support for it. By this removal, MD5 computation is not needed |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
114 anywhere in mmh. Hence, over 500 lines of code were removed by this one |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
115 change. Even if the `Content-MD5' header field is useful sometimes, |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
116 I value its usefulnes less than the improvement in maintainability, caused |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
117 by the removal. |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
118 |
7ca384d68edc
Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents:
0
diff
changeset
|
119 |
14
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
120 .H1 "Draft and Trash Folders |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
121 .U2 "The Draft Folder |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
122 .P |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
123 Historically, MH provided exactly one draft message, named `\fLdraft\fP' and |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
124 being located in the MH directory. When starting to compose another message |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
125 before the former one was sent, the user had been questioned wether to use, |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
126 refile or replace the old draft. Working on multiple drafts at the same time |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
127 was impossible. One could only work on them in alteration by refiling the |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
128 previous one to some directory and fetching some other one for reediting. |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
129 This manual draft management needed to be done each time the user wanted |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
130 to switch between editing one draft to editing another. |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
131 .P |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
132 To allow true parallel editing of drafts, in a straight forward way, the |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
133 draft folder facility exists. It had been introduced already in July 1984 |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
134 by Marshall T. Rose. The facility was deactivated by default. |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
135 Even in nmh, the draft folder facility remained deactivated by default. |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
136 At least, Richard Coleman added the man page \fImh-draft(5)\fI to document |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
137 the feature well. |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
138 .P |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
139 The only advantage of not using the draft folder facility is the static |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
140 name of the draft file. This could be an issue for MH frontends like mh-e. |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
141 But as they likely want to provide working on multiple drafts in parallel, |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
142 the issue is only concerning compatibility. The aim of nmh to stay compatible |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
143 prevented the default activation of the draft folder facility. |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
144 .P |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
145 On the other hand, a draft folder is the much more natural concept than |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
146 a draft message. MH's mail storage consists of folders and messages, |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
147 the messages named with ascending numbers. A draft message breaks with this |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
148 concept by introducing a message in a file named ``draft''. This draft |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
149 message is special. It can not be simply listed with the available tools, |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
150 but instead special switches were required. I.e. corner-cases were |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
151 introduced. A draft folder, in contrast, does not introduce such |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
152 corner-cases. The available tools can operate on the messages within that |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
153 folder like on any messages within any mail folders. The only difference |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
154 is the fact that the default folder for \fLsend\fP is the draft folder, |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
155 instead of the current folder, like for all other tools. |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
156 .P |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
157 The trivial part of the change was activating the draft folder facility |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
158 by default and setting a default name for this folder. Obviously, I chose |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
159 the name ``\fL+drafts\fP''. This made the \fL\-draftfolder\fP and |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
160 \fL\-draftmessage\fP switches useless, thus I could remove them two. |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
161 The more difficult but also the part that showed the real improvement, |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
162 was updating the tools to the new concept. \fL\-draft\fP switches could |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
163 be dropped, as operating on a draft message became indistinguishable to |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
164 operating on any other message for the tools. \fLcomp\fP still has its |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
165 \fL\-use\fP switch for switching between its two modes: (1) Compose a new |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
166 draft, possibly by taking some existing message as a form. (2) Modify |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
167 an existing draft. In either case, the behavior of \fLcomp\fP is |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
168 deterministic. There is no more need to query the user. I consider this |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
169 a major improvement. By making \fLsend\fP simply operate on the current |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
170 message in the draft folder by default, with both, message and folder, |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
171 overridable by specifying them on the command line, it is now possible |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
172 to send any message in the storage by simply specifying its folder and |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
173 name. |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
174 .P |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
175 All theses changes converted special cases to regular cases, thus |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
176 simplifying the tools and increasing the flexibility. |
55ec590cfa07
Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents:
12
diff
changeset
|
177 |
0
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
178 |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
179 .H1 "Paths to ... |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
180 .P |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
181 foo |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
182 |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
183 .H1 "Path Notations |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
184 .P |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
185 foo |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
186 |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
187 .H1 "Attachments |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
188 .P |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
189 foo |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
190 |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
191 .H1 "Blind Carbon Copies |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
192 .P |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
193 foo |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
194 |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
195 .H1 "Good Defaults |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
196 .P |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
197 foo |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
198 |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
199 .H1 "Modularization |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
200 .P |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
201 foo |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
202 |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
203 .H1 "Code style |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
204 .P |
dc2bfef4cda7
Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff
changeset
|
205 foo |