rev |
line source |
meillo@161
|
1 .H0 "Summary
|
meillo@132
|
2 .P
|
meillo@161
|
3 This document describes and explains my work on mmh.
|
meillo@161
|
4 I have streamlined the project by removing programs, facilities
|
meillo@178
|
5 and options that diverted from the main task of mmh, being an MUA.
|
meillo@161
|
6 I have modernized the code base removing obsolete functions and
|
meillo@161
|
7 activating modern features per default.
|
meillo@181
|
8 Furthermore, I improved the style by refactoring clumpsy code
|
meillo@179
|
9 and by defining or forcing clear concepts.
|
meillo@161
|
10 All my work was motivated by Antoine de Saint Exupery's well-known
|
meillo@161
|
11 statement:
|
meillo@161
|
12 .[
|
meillo@161
|
13 antoine de saint exupery: Wind, Sand and Stars (1939)
|
meillo@161
|
14 .]
|
meillo@132
|
15 .QS
|
meillo@132
|
16 It seems that perfection is attained not when there is nothing
|
meillo@132
|
17 more to add, but when there is nothing more to remove.
|
meillo@132
|
18 .QE
|
meillo@161
|
19 .P
|
meillo@161
|
20 In contrast to the common expectations, I have hardly added new features.
|
meillo@161
|
21 I regard my improvements in selecting the relevant set of existing
|
meillo@161
|
22 features and exploiting the concepts more thoroughly.
|
meillo@161
|
23 I believe, the result is a system simpler and clearer for both
|
meillo@161
|
24 developing and using, without lacking important functionality.
|
meillo@132
|
25
|
meillo@161
|
26
|
meillo@164
|
27 .U2 "Outlook
|
meillo@148
|
28 .P
|
meillo@161
|
29 The work done during the project is not finished.
|
meillo@164
|
30 Several tasks are left to do.
|
meillo@132
|
31 .P
|
meillo@161
|
32 MIME handling is the most complex part of mmh and it requires
|
meillo@161
|
33 general rework.
|
meillo@161
|
34 The changes already done to it build upon the existing structure.
|
meillo@161
|
35 Yet, MIME support is not truly integrated.
|
meillo@161
|
36 For instance, accessing messages and accessing MIME parts of messages
|
meillo@161
|
37 have inherently different concepts, although a single concept should
|
meillo@161
|
38 cover both.
|
meillo@161
|
39 The sequence notation should provide a way to address MIME parts directly.
|
meillo@161
|
40 Furthermore, the sequence notation should be made more powerful in general.
|
meillo@161
|
41 For instance, it is currently not possible to access the second last
|
meillo@161
|
42 message in a given sequence.
|
meillo@161
|
43 Displaying messages with
|
meillo@161
|
44 .Pn show
|
meillo@161
|
45 requires further rework.
|
meillo@179
|
46 Encrypted messages should, for example, be decoded automatically
|
meillo@161
|
47 and digital signatures should be verified on-the-fly.
|
meillo@161
|
48 The whole task should be aligned with the common behavior of other
|
meillo@161
|
49 mail clients.
|
meillo@161
|
50 MH's unique features should not be lost, but the default should become
|
meillo@161
|
51 less surprising.
|
meillo@161
|
52 Transfer-decoding of the quoted text in replys and encoding of non-ASCII
|
meillo@161
|
53 characters in message header fields like
|
meillo@161
|
54 .Hd Subject
|
meillo@161
|
55 remain unsolved.
|
meillo@132
|
56 .P
|
meillo@164
|
57 Some of mmh's tools were hardly touched during my work.
|
meillo@161
|
58 Among them are
|
meillo@161
|
59 .Pn dist ,
|
meillo@161
|
60 .Pn rcvdist ,
|
meillo@161
|
61 .Pn mark ,
|
meillo@161
|
62 .Pn pick ,
|
meillo@161
|
63 and
|
meillo@161
|
64 .Pn sortm .
|
meillo@164
|
65 Related to
|
meillo@161
|
66 .Pn sortm ,
|
meillo@179
|
67 a threaded message view is completely missing in mmh, yet.
|
meillo@161
|
68 .Pn pick
|
meillo@164
|
69 could be enhanced by message indexing.
|
meillo@164
|
70 These fields are worthwhile for research.
|
meillo@161
|
71 .P
|
meillo@161
|
72 The features most often asked for are Maildir and IMAP support.
|
meillo@161
|
73 Yet, both of them collide with MH in the same fundamental way as
|
meillo@161
|
74 different filesystem approaches would collide with Unix.
|
meillo@164
|
75 Nevertheless, an abstraction layer could provide a mapping from such
|
meillo@164
|
76 storage back-ends to the MH storage format.
|
meillo@173
|
77 Or the mmh tool chest could be reworked to operate on a generic back-end,
|
meillo@164
|
78 making the MH storage format only one of many possible back-ends.
|
meillo@161
|
79 Research in this area is highly appreciated.
|
meillo@164
|
80 .\" XXX targeting the right problems?!
|
meillo@164
|
81 .P
|
meillo@164
|
82 Nmh has a testing framework that supported the developers by detecting
|
meillo@164
|
83 several subtle bugs.
|
meillo@164
|
84 All refactoring in mmh had been done without the safety net of a test
|
meillo@164
|
85 framework.
|
meillo@164
|
86 Hence, experience warns that the probability for subtle bugs lurking
|
meillo@164
|
87 in the code base is high.
|
meillo@164
|
88 Nmh's test framework should be adjusted to mmh and extended.
|
meillo@166
|
89 .\" XXX path notation; signing and encrypting
|
meillo@132
|
90
|
meillo@132
|
91
|
meillo@132
|
92 .U2 "Relationship to nmh
|
meillo@132
|
93 .P
|
meillo@161
|
94 The mmh project started as an experimental version of nmh because the
|
meillo@161
|
95 nmh community did not welcome my changes in the mainline version.
|
meillo@179
|
96 To not slow down my work by the need to convince the community in
|
meillo@161
|
97 discussions for each step I liked to take,
|
meillo@161
|
98 I started to create an experimental version to convicce by demonstration
|
meillo@161
|
99 of the result.
|
meillo@164
|
100 .\" behind closed doors; talks I've given
|
meillo@179
|
101 My work on mmh was independent of the nmh community.
|
meillo@181
|
102 .\" XXX straight?
|
meillo@181
|
103 This enabled me to follow my vision straightforwardly and thus produce
|
meillo@161
|
104 a result of greater pureness.
|
meillo@0
|
105 .P
|
meillo@179
|
106 Mmh shall be considered as an inspiration for the future development of nmh.
|
meillo@179
|
107 It shall identify weak parts of nmh and suggest possible
|
meillo@161
|
108 improvements by change.
|
meillo@161
|
109 It shall present a lean appearance that is simpler to understand
|
meillo@161
|
110 and work with for developers and users.
|
meillo@179
|
111 By all means, my work on mmh shall improve nmh in some way.
|
meillo@161
|
112 Improving nmh directly in the way I wanted was impossible for me
|
meillo@161
|
113 due to personal and community-related circumstances.
|
meillo@161
|
114 The mmh project is my way to offer my gifts though.
|
meillo@161
|
115 .P
|
meillo@161
|
116 During my work on mmh, the community of nmh suddenly became very active.
|
meillo@161
|
117 They have worked on nmh in parallel to my work on mmh.
|
meillo@161
|
118 There was no collaberation in our work, except that I have pulled some
|
meillo@161
|
119 changes from nmh to mmh.
|
meillo@161
|
120 Our work was motivated partly by similar and partly by different aims.
|
meillo@161
|
121 Although some changes are common among both projects,
|
meillo@161
|
122 fundamental differences exist.
|
meillo@161
|
123 My experimental version thus more and more felt like being a fork.
|
meillo@179
|
124 I am undecided how I like to treat it.
|
meillo@179
|
125 .P
|
meillo@179
|
126 Yet, I am strongly convinced that the decisions taken for the
|
meillo@179
|
127 development of mmh were good ones with regard of my goals,
|
meillo@179
|
128 and I like to push the project farther in this direction.
|
meillo@161
|
129
|
meillo@161
|
130
|
meillo@179
|
131 .ig
|
meillo@161
|
132 .U2 "Weaknesses of My Work
|
meillo@161
|
133 .P
|
meillo@161
|
134 not targeting on the right problems (maildir, imap)
|
meillo@0
|
135
|
meillo@0
|
136 .P
|
meillo@161
|
137 refactoring requires testing, automated testing
|
meillo@132
|
138
|
meillo@53
|
139 .P
|
meillo@161
|
140 communication with nmh.
|
meillo@161
|
141 worked behind closed doors, but no:
|
meillo@161
|
142 talks I've given
|
meillo@148
|
143
|
meillo@148
|
144 .P
|
meillo@158
|
145 focus on myself.
|
meillo@158
|
146 But: If good for me then also good for others.
|
meillo@179
|
147 ..
|