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@190
|
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@190
|
8 Furthermore, I have improved the style by refactoring clumpsy code
|
meillo@190
|
9 and by identifying and 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@213
|
13 antoine de saint exupery wind sand and stars
|
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@190
|
19 .LP
|
meillo@190
|
20 Against the common expectations, I hardly added new features.
|
meillo@190
|
21 I regard my achievement in the selection of the relevant set of existing
|
meillo@190
|
22 features, the choice of sensible defaults, and the extensive
|
meillo@190
|
23 focus on structure and concepts.
|
meillo@161
|
24 I believe, the result is a system simpler and clearer for both
|
meillo@161
|
25 developing and using, without lacking important functionality.
|
meillo@132
|
26
|
meillo@190
|
27 .KS
|
meillo@190
|
28 .in 1c
|
meillo@190
|
29 .so input/sloc.grap
|
meillo@190
|
30 .KE
|
meillo@190
|
31
|
meillo@161
|
32
|
meillo@164
|
33 .U2 "Outlook
|
meillo@148
|
34 .P
|
meillo@190
|
35 MIME handling is the most complex part of mmh and the one with the
|
meillo@190
|
36 highest potential for improvements.
|
meillo@190
|
37 The changes already accomplished so far build upon the existing structure,
|
meillo@190
|
38 but deeper rework is necessary to integrate MIME handling consistently.
|
meillo@190
|
39 For instance, accessing messages and accessing their MIME parts
|
meillo@190
|
40 should both covered by a single approach.
|
meillo@190
|
41 This requires the sequence notation to provide a way to address
|
meillo@190
|
42 MIME parts directly.
|
meillo@190
|
43 In general, the sequence notation should become more powerful.
|
meillo@161
|
44 For instance, it is currently not possible to access the second last
|
meillo@161
|
45 message in a given sequence.
|
meillo@190
|
46 Furthermore, displaying messages can be improved.
|
meillo@189
|
47 Encrypted messages should be decoded automatically
|
meillo@190
|
48 and digital signatures verified on-the-fly.
|
meillo@190
|
49 In this rework, MH's unique features need to be preserved,
|
meillo@190
|
50 but as well the default behavior should become less surprising.
|
meillo@190
|
51 Still, encoding and decoding is not done everywhere it is necessary.
|
meillo@190
|
52 The problems of not decoded quotations of the original message in replies
|
meillo@190
|
53 and not encoded non-ASCII characters in the message header remain.
|
meillo@132
|
54 .P
|
meillo@190
|
55 Some of mmh's tools were hardly touched, yet.
|
meillo@161
|
56 Among them are
|
meillo@161
|
57 .Pn dist ,
|
meillo@161
|
58 .Pn rcvdist ,
|
meillo@161
|
59 .Pn mark ,
|
meillo@161
|
60 .Pn pick ,
|
meillo@161
|
61 and
|
meillo@161
|
62 .Pn sortm .
|
meillo@190
|
63 They should be refactored as well.
|
meillo@164
|
64 Related to
|
meillo@190
|
65 .Pn sortm
|
meillo@190
|
66 is the threaded message view, which is completely missing, so far.
|
meillo@161
|
67 .Pn pick
|
meillo@190
|
68 could profit from message indexing.
|
meillo@189
|
69 These fields deserve further research.
|
meillo@161
|
70 .P
|
meillo@190
|
71 Nmh's testing framework has not been updated for mmh, yet.
|
meillo@190
|
72 All refactoring had been done without the safety net of a test framework.
|
meillo@190
|
73 Hence, experience warns that there may be subtle bugs in the code base.
|
meillo@222
|
74 As a consequence of the modularization rework (cf. Sec.
|
meillo@222
|
75 .Cf modularization ),
|
meillo@222
|
76 the compiler can no longer check the integrity of the interfaces
|
meillo@222
|
77 when tools invoke each other.
|
meillo@222
|
78 Automated testing should detect errors there.
|
meillo@190
|
79 .P
|
meillo@190
|
80 The features most often asked for are IMAP and Maildir support.
|
meillo@189
|
81 But, both of them collide with MH in the same fundamental way as
|
meillo@190
|
82 different filesystem approaches collide with Unix.
|
meillo@190
|
83 Nevertheless, an abstraction layer could provide a mapping between such
|
meillo@190
|
84 storage back-ends and the MH storage format.
|
meillo@190
|
85 Or, the mmh tool chest could be reworked to operate on a generic back-end,
|
meillo@164
|
86 making the MH storage format only one of many possible back-ends.
|
meillo@161
|
87 Research in this area is highly appreciated.
|
meillo@132
|
88
|
meillo@132
|
89
|
meillo@132
|
90 .U2 "Relationship to nmh
|
meillo@132
|
91 .P
|
meillo@161
|
92 The mmh project started as an experimental version of nmh because the
|
meillo@192
|
93 nmh community did not welcome my plans and visions.
|
meillo@192
|
94 The need to convincing the community of every change I liked to
|
meillo@192
|
95 undertake would have slowed down my work too much.
|
meillo@192
|
96 Hence, I created this experimental version to convince by demonstration.
|
meillo@0
|
97 .P
|
meillo@192
|
98 While I worked on mmh, nmh's community became very active as well.
|
meillo@200
|
99 Although we both worked on the same code base, there was no collaboration.
|
meillo@192
|
100 This, I must admit, was my failure because I kept my work hidden
|
meillo@192
|
101 from the nmh community.
|
meillo@192
|
102 The reasons are personal and community-related.
|
meillo@192
|
103 I am sorry for that and I like to improve in the future.
|
meillo@196
|
104 Nonetheless, I did not work behind completely closed doors.
|
meillo@196
|
105 I discussed within the regional computer community and
|
meillo@196
|
106 presented the project in two video-recorded lectures.
|
meillo@192
|
107 .[
|
meillo@192
|
108 chaosseminar ccc ulm mmh
|
meillo@192
|
109 .]
|
meillo@192
|
110 .[
|
meillo@192
|
111 gpn entropia mmh
|
meillo@192
|
112 .]
|
meillo@192
|
113 First users appeared and provided feedback.
|
meillo@161
|
114 .P
|
meillo@192
|
115 Over time, I had to realize that, although nmh and mmh have much
|
meillo@192
|
116 in common, the projects target different goals.
|
meillo@192
|
117 I am still undecided how to handle it, but my experimental version
|
meillo@192
|
118 more and more feels like being a fork.
|
meillo@196
|
119 As I am strongly convinced that the path taken for the
|
meillo@196
|
120 development of mmh is a good one,
|
meillo@192
|
121 I like to push the project farther in this direction.
|