docs/master

annotate summary.roff @ 172:6800d594b2b7

hgignore: This change is not related to the document itself.
author markus schnalke <meillo@marmaro.de>
date Tue, 10 Jul 2012 17:20:21 +0200
parents 5c01017be420
children 4c7db172fb59
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@161 5 and options that diverted from the main task of mmh, being a MUA.
meillo@161 6 I have modernized the code base removing obsolete functions and
meillo@161 7 activating modern features per default.
meillo@161 8 Further more, I improved the style by refactoring clumpsy code
meillo@161 9 and by defining or exploiting 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@161 46 Encrypted messages, for example, should 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@161 67 a threaded message view is completely missing to 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@164 77 Or the mmh toolchest 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@161 96 To not slow my work down 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@161 101 My worked on mmh was independent of the nmh community.
meillo@161 102 This enabled me to follow my vision straightly and thus produce
meillo@161 103 a result of greater pureness.
meillo@0 104 .P
meillo@161 105 Mmh shall be considered an inspiration for the future development of nmh.
meillo@161 106 It shall show identify weak part of nmh and suggest possible
meillo@161 107 improvements by change.
meillo@161 108 It shall present a lean appearance that is simpler to understand
meillo@161 109 and work with for developers and users.
meillo@161 110 By all means shall my work on mmh improve nmh in some way.
meillo@161 111 Improving nmh directly in the way I wanted was impossible for me
meillo@161 112 due to personal and community-related circumstances.
meillo@161 113 The mmh project is my way to offer my gifts though.
meillo@161 114 .P
meillo@161 115 During my work on mmh, the community of nmh suddenly became very active.
meillo@161 116 They have worked on nmh in parallel to my work on mmh.
meillo@161 117 There was no collaberation in our work, except that I have pulled some
meillo@161 118 changes from nmh to mmh.
meillo@161 119 Our work was motivated partly by similar and partly by different aims.
meillo@161 120 Although some changes are common among both projects,
meillo@161 121 fundamental differences exist.
meillo@161 122 My experimental version thus more and more felt like being a fork.
meillo@161 123 I am undecided how I like to have it.
meillo@161 124 Yet, I am strongly convinced that most of the decisions taken in mmh
meillo@161 125 were good to achieve my goals and I like to push the project even
meillo@161 126 farther in this direction.
meillo@161 127
meillo@161 128
meillo@161 129 .U2 "Weaknesses of My Work
meillo@161 130 .P
meillo@161 131 not targeting on the right problems (maildir, imap)
meillo@0 132
meillo@0 133 .P
meillo@161 134 refactoring requires testing, automated testing
meillo@132 135
meillo@53 136 .P
meillo@161 137 communication with nmh.
meillo@161 138 worked behind closed doors, but no:
meillo@161 139 talks I've given
meillo@148 140
meillo@148 141 .P
meillo@158 142 focus on myself.
meillo@158 143 But: If good for me then also good for others.