comparison ch01.roff @ 49:d3a02f5e63b3

Various rework.
author markus schnalke <meillo@marmaro.de>
date Sat, 19 May 2012 17:56:15 +0200
parents eae5e50381ce
children a446f89cc5d9
comparison
equal deleted inserted replaced
47:eae5e50381ce 49:d3a02f5e63b3
151 .DE 151 .DE
152 152
153 153
154 .H1 "nmh: Code and Community 154 .H1 "nmh: Code and Community
155 .P 155 .P
156 In order to understand the state, goals and dynamics of a project, 156 In order to understand the condition, goals and dynamics of a project,
157 one needs to know its history. MH predates the Internet, 157 one needs to know the reasons.
158 it comes from times before networking was universal, 158 MH predates the Internet, it comes from times before networking was universal,
159 times when emailing was small, short and simple. 159 it comes from times when emailing was small, short and simple.
160 Then it grew, spread and adopted to the changes email went through. 160 Then it grew, spread and adopted to the changes email went through.
161 The core-concepts, however, remained the same. 161 Its core-concepts, however, remained the same.
162 During the 80s a small group of students at the University of 162 During the Eighties students at UCI actively worked on MH.
163 California, actively worked on MH. They added features and optimized, 163 They added new features and optimized the code for the then popular systems.
164 like it is common for scientific work. This is still in pre-ANSI C 164 All this still was in times before POSIX and ANSI C.
165 times. The source code contains many ancient parts. Code constructs 165 As large parts of the code stem from this time, today's nmh source code
166 specific to BSD or hardware of that time are usual. 166 still contains many ancient parts.
167 .P 167 BSD-specific code and constructs taylored for hardware of that time
168 Nmh started eight years after the ANSI C standard had been 168 are frequent.
169 established. A more modern coding style entered the code base. Still 169 .P
170 a part of the developers come from ``the old days''. The developer 170 Nmh started about a decade after the POSIX and ANSI C standards had been
171 base became more diverse and thus the code had different style. 171 established. A more modern coding style entered the code base, but still
172 Programming practices 172 a part of the developers came from ``the old days''. The developer
173 from different decades merged into the project. Different coding 173 base became more diverse and thus resulted in code of different style.
174 styles came together. It appears as if multiple peers added code 174 Programming practices from different decades merged in the project.
175 parts, resulting in a conclomeration rather than a homogenic 175 As several peers added code, the system became more a conclomeration
176 of-one-cast mail system. Still, the basic concepts hold it together. 176 of single tools rather than a homogenic of-one-cast mail system.
177 Still, the existing basic concepts held it together.
177 They were mostly untouched throughout the years. 178 They were mostly untouched throughout the years.
178 .P 179 .P
179 Although, at the surface, nmh is a toolchest, meaning a collection 180 Despite the toolchest approach at the surface \(en a collection
180 of completely modularized small programs, on the source code level, 181 of separate small programs \(en on the source code level
181 it is much more interweaved. Parts of the basic functions are 182 it is much more interweaved.
182 collected in a MH standard library, which is good, but often 183 Several separate components were compiled into one program
183 separate functions are compiled into programs, for effiency reasons. 184 for effiency reasons.
184 This lead to intricate innards. 185 This lead to intricate innards.
185 The advent of MIME rose the complexity of email by a magnitude. This 186 Unfortunately, the clear separation on the outside appeared as being
186 is visible in nmh. The MIME-related parts are the most complex ones. 187 pretty interweaved inside.
187 It's also visible that MIME support had been added on top of the 188 .P
188 old MH later. The MH style made this easily possible, but it 189 The advent of MIME rose the complexity of email by a magnitude.
189 also lead to duplicated functions (e.g. \fLshow\fP, \fLmhshow\fP) 190 This is visible in nmh. The MIME-related parts are the most complex ones.
190 and had not been thoroughly included into the concepts (e.g. the 191 It's also visible that MIME support had been added on top of the old MH core.
191 user-visible access to whole messages and MIME parts are inherently 192 MH's toolchest style made this easily possible and encourages
192 different). 193 such approaches, but unfortunately, it lead to duplicated functions
193 .P 194 and half-hearted implementation of the concepts.
194 For backward-compatibility's sake, it is a common understanding to have the 195 .P
195 default settings to be compatible, requiring any new feature to be 196 To provide backward-compatibility, it is a common understanding to not
196 explicitely enabled. 197 change the default settings.
197 In consequence, the user needs to activate modern features explicitely 198 In consequence, the user needs to activate modern features explicitely
198 to be able to use them. 199 to be able to use them.
199 This puts a burden on new users, because nmh 200 This puts a burden on new users, because out-of-the-box nmh remains
200 out-of-the-box keeps staying in the same ancient style, where users 201 in the same ancient style.
201 usually want to have it practical for modern emailing. 202 If nmh is seen to be a back-end, then this compatibility surely is important.
202 But of course, this depends if nmh is seen to be a front-end or a 203 However, in the same go, new users have difficulties to use nmh for modern
203 back-end. 204 emailing.
205 The small but matured community around nmh hardly needs much change
206 as they have their convenient setups since decades.
204 207
205 208
206 .H1 "mmh 209 .H1 "mmh
207 .P 210 .P
208 I started to work on my experimental version in Fall 2011. 211 I started to work on my experimental version in October 2011,
212 when there were no more than three commits to nmh in the previous nine months..
209 In December, when I announced my work on the nmh-workers mailing list, 213 In December, when I announced my work on the nmh-workers mailing list,
210 .[ 214 .[
211 nmh-workers mmh announce december 215 nmh-workers mmh announce december
212 .] 216 .]
213 the activity in nmh rose heavily. 217 the activity in nmh rose much.
214 Suddently the community started to move. 218 Suddently the community started to move.
215 This movement was pushed much by Paul Vixie's ``edginess'' message. 219 This movement was heavily pushed by Paul Vixie's ``edginess'' comment.
216 .[ 220 .[
217 nmh-workers vixie edginess 221 nmh-workers vixie edginess
218 .] 222 .]
219 After long years of much stagnation, nmh became actively developed again. 223 After long years of much stagnation, nmh became actively developed again.
220 Hence, while I was working on mmh, the community was working on nmh, 224 Hence, while I was working on mmh, the community was working on nmh,
223 The name \fImmh\fP stands for \fImeillo's mail handler\fP, 227 The name \fImmh\fP stands for \fImeillo's mail handler\fP,
224 because mmh is my own version of MH. 228 because mmh is my own version of MH.
225 (My login name is \fImeillo\fP.) 229 (My login name is \fImeillo\fP.)
226 The project follows my personal considerations and preferences. 230 The project follows my personal considerations and preferences.
227 By calling it a personal project, I don't need to justify my decisions, 231 By calling it a personal project, I don't need to justify my decisions,
228 though, still I do. 232 though, still I like to do.
229 This enabled me to follow my vision staightly and thus produce 233 This enabled me to follow my vision staightly and thus produce
230 a result of greater pureness. 234 a result of greater pureness.
231 This project model was inspired by the window manager \fIdwm\fP, 235 This project model was inspired by the window manager \fIdwm\fP,
232 which is Anselm Garbe's personal window manager \(en 236 which is Anselm Garbe's personal window manager \(en
233 targeted to satisfy Garbe's personal needs whenever conflicts appear. 237 targeted to satisfy Garbe's personal needs whenever conflicts appear.
234 dwm had remained much more focused on its original goals, 238 dwm had remained much more focused on its original goals,
235 whereas its community-driven predecessor \fIwmii\fP had 239 whereas its community-driven predecessor \fIwmii\fP had
236 grown large and lost it's leanness. 240 grown big and lost it's lean elegance.
237 This should not happen to mmh. 241 This should not happen to mmh.
238 .P 242 .P
239 Mmh can also stand for \fImodern mail handler\fP, and this is 243 Mmh also stands for \fImodern mail handler\fP, and this is
240 the variant chosen as titel for this document. One main focus of the 244 the variant chosen to entitel this document. One main focus of the
241 project was to modernize nmh. Another main goal is resembled in the 245 project was to modernize nmh. Another main goal is resembled in the
242 name \fIminimized mail handler\fP: Drop any parts that don't add 246 name \fIminimized mail handler\fP: Drop any parts that don't add
243 to the main task of mmh, being a MUA. 247 to the main task of mmh, being a conceptionally appealing MUA.
244 .P 248 .P
245 It should also be noted that \fLstrcmp("mmh","nmh")<0\fP is true. 249 It should also be noted that \fLstrcmp("mmh","nmh")<0\fP is true.
246 Although mmh bases on nmh, it is likely seen as a step backward. 250 Although mmh bases on nmh, it is likely seen as a step backward.
247 I agree. 251 I agree.
248 However, this step backward actually is a step forward, 252 However, this step backward actually is a step forward,
249 although in another direction. 253 although in a different direction.
250 254
251 255
252 .H1 "This Thesis 256 .H1 "This Thesis
253 257
254 .U2 "Motivation 258 .U2 "Motivation