docs/master

annotate summary.roff @ 183:4c5055a0e981

Explained `hidden switches'.
author markus schnalke <meillo@marmaro.de>
date Wed, 11 Jul 2012 10:13:54 +0200
parents b59201e345e5
children 22feb390ccc4
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 ..