Mercurial > docs > master
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 |