Mercurial > docs > master
comparison intro.roff @ 212:9317d789cef9
Various improvements and rework.
author | markus schnalke <meillo@marmaro.de> |
---|---|
date | Thu, 12 Jul 2012 22:04:51 +0200 |
parents | 1b38b1c3c01d |
children | 1fa5a74bf138 |
comparison
equal
deleted
inserted
replaced
211:ff303d854771 | 212:9317d789cef9 |
---|---|
18 | 18 |
19 .H1 "MH \(en the Mail Handler | 19 .H1 "MH \(en the Mail Handler |
20 .Id mh | 20 .Id mh |
21 .P | 21 .P |
22 MH is a conceptual email system design and its concrete implementation. | 22 MH is a conceptual email system design and its concrete implementation. |
23 Notably, MH had started as a design proposal at RAND Corporation, | 23 MH had started as a design proposal at RAND Corporation, |
24 where the first implementation followed later. | 24 where the first implementation followed later. |
25 In spirit, MH is similar to Unix, which | 25 In spirit, MH is similar to Unix, which |
26 influenced the world more in being a set of system design concepts | 26 influenced the world more in being a set of system design concepts |
27 than in being a specific software product. | 27 than in being a specific software product. |
28 The ideas behind Unix are summarized in the \fIUnix philosophy\fP. | 28 The ideas behind Unix are summarized in the \fIUnix philosophy\fP. |
37 proposed the design of a new mail handling system, | 37 proposed the design of a new mail handling system, |
38 .[ | 38 .[ |
39 shapiro gaines mh proposal | 39 shapiro gaines mh proposal |
40 .] | 40 .] |
41 to superseed RAND's old monolithic \fIMail System\fP (MS). | 41 to superseed RAND's old monolithic \fIMail System\fP (MS). |
42 More than one year later, in late 1978, Bruce Borden returned to the | 42 One year later, in 1978, Bruce Borden picked up on the |
43 proposal and implemented a prototype, which he called | 43 proposal and implemented a prototype, which he called |
44 \fIMail Handler\fP (MH). | 44 \fIMail Handler\fP (MH). |
45 Before the prototype's existence, the concept was | 45 Before the prototype's existence, the concept was |
46 believed to be practically unusable. | 46 believed to be practically unusable. |
47 But the prototype \(en written in only three weeks \(en | 47 But the prototype \(en written in only three weeks \(en |
48 proved successful and replaced MS within six months.\& | 48 proved successful and replaced MS thereafter.\& |
49 .[ [ | 49 .[ [ |
50 rand note design of mh | 50 rand note design of mh |
51 .], p. 4] | 51 .], p. 4] |
52 .P | 52 .P |
53 In the early eighties, | 53 In the early eighties, |
56 They took over the development and pushed MH forward. | 56 They took over the development and pushed MH forward. |
57 .[ [ | 57 .[ [ |
58 rand note design of mh | 58 rand note design of mh |
59 .], p. 4] | 59 .], p. 4] |
60 RAND had put the code into the public domain by then. | 60 RAND had put the code into the public domain by then. |
61 MH was developed at UCI at the time when the Internet appeared, | 61 MH was developed at UCI at the same time when the Internet appeared, |
62 the BSD started to include TCP/IP networking, | 62 BSD started to support TCP/IP networking, |
63 and Eric Allman wrote Sendmail. | 63 and Eric Allman wrote Sendmail. |
64 MH was extended as emailing became more featured. | 64 MH was extended as emailing became more featured. |
65 The development of MH was closely related to the development of email RFCs. | 65 The development of MH was closely related to the development of email RFCs. |
66 In the advent of the \fIMultipurpose Internet Mail Extensions\fP (MIME), | 66 In the advent of the \fIMultipurpose Internet Mail Extensions\fP (MIME), |
67 MH was one of the first implementations of the new email standard. | 67 MH was one of the first implementations of the new email standard. |
68 MH grew to provide anything necessary for emailing. | |
69 .P | 68 .P |
70 In the nineties, the Internet became popular and in December 1996, | 69 In the nineties, the Internet became popular and in December 1996, |
71 Richard Coleman initiated the \fINew Mail Handler\fP (nmh) project. | 70 Richard Coleman initiated the \fINew Mail Handler\fP (nmh) project. |
72 Nmh is a fork of MH 6.8.3 and bases strongly on the | 71 Nmh is a fork of MH 6.8.3 and bases heavily on the |
73 \fILBL changes\fP by Van Jacobson, Mike Karels and Craig Leres. | 72 \fILBL changes\fP by Van Jacobson, Mike Karels and Craig Leres. |
74 .[ | 73 .[ |
75 lbl changes | 74 lbl changes |
76 .] | 75 .] |
77 Colman intended to modernize MH and improve its portability and | 76 Colman intended to modernize MH and improve its portability and |
78 MIME handling capabilities. | 77 MIME handling capabilities. |
79 This should be done openly within the Internet community. | |
80 The development of MH at UCI stopped after the 6.8.4 release in | 78 The development of MH at UCI stopped after the 6.8.4 release in |
81 February 1996, soon after the development of nmh had started. | 79 February 1996, soon after the development of nmh had started. |
82 Today, nmh has almost completely replaced the original MH. | 80 Today, nmh is developed openly in the Internet community. |
83 Some systems might still provide old MH, but mainly for historical reasons. | 81 It has almost completely replaced the original MH. |
84 .P | 82 Some systems might still provide the old MH, but hardly for good reasons. |
85 In the last years, the changes in nmh were mostly maintenance work. | 83 .P |
86 However, the development was revived in December 2011 | 84 In the last years, the majority of changes in nmh was maintenance work. |
85 Nevertheless, the development was revived in December 2011 | |
87 and stayed busy since then. | 86 and stayed busy since then. |
88 | 87 |
89 | 88 |
90 .U2 "Concepts | 89 .U2 "Concepts |
91 .P | 90 .P |
138 tool is invoked. | 137 tool is invoked. |
139 Additionally, a single command can be linked under different names | 138 Additionally, a single command can be linked under different names |
140 with different default values. | 139 with different default values. |
141 Form templates for new messages and replies, as well as format files | 140 Form templates for new messages and replies, as well as format files |
142 to adjust the output of tools are easily exchanged in the profile. | 141 to adjust the output of tools are easily exchanged in the profile. |
143 .P | |
144 Switches consist of a single dash (`\fL-\fP') followed by a word. | |
145 To ease typing, the word can be abbreviated, given the remaining | |
146 prefix remains unambiguous. | |
147 If no other switch starts with the letter `t', then any of | |
148 .Cl "-truncate" , | |
149 .Cl "-trunc" , | |
150 .Cl "-tr" , | |
151 and | |
152 .Cl "-t | |
153 is equal. | |
154 As a result, switches can neither be grouped (as in | |
155 .Cl "ls -ltr" ) | |
156 nor can switch arguments be appended directly to the switch (as in | |
157 .Cl "sendmail -q30m" ). | |
158 Many switches have negating counter-parts, which start with `no'. | |
159 For example | |
160 .Cl "-notruncate | |
161 inverts the | |
162 .Cl "-truncate | |
163 switch. | |
164 They exist to override the effect of default switches in the profile. | |
165 .P | |
166 The system is well scriptable and extensible. | |
167 Almost every part of the system can be adjusted to personal preference. | 142 Almost every part of the system can be adjusted to personal preference. |
143 .P | |
144 The whole system is well scriptable and extensible. | |
168 New MH tools are built out of or on top of existing ones quickly. | 145 New MH tools are built out of or on top of existing ones quickly. |
169 Furthermore, MH encourages the user to tailor, extend, and automate | 146 MH encourages the user to tailor, extend, and automate the system. |
170 the system. | |
171 As the MH tool chest was modeled after the Unix tool chest, the | 147 As the MH tool chest was modeled after the Unix tool chest, the |
172 properties of the latter apply to the former as well. | 148 properties of the latter apply to the former as well. |
173 | 149 |
174 | 150 |
175 | 151 |
183 moss jackson user's guide for mh | 159 moss jackson user's guide for mh |
184 .] | 160 .] |
185 .[ | 161 .[ |
186 hegardt mh for beginners | 162 hegardt mh for beginners |
187 .] | 163 .] |
188 are old, but they still teach the basics. | 164 are old, but still they teach the concepts and basics, |
189 Rose and Romine introduce MH deeper and more technical in two dozen pages. | 165 which remained unchanged. |
166 Rose and Romine have written an excellent introduction on a more | |
167 technical level, with pointers to advanced usage. | |
190 .[ | 168 .[ |
191 rose romine real work | 169 rose romine real work |
192 .] | 170 .] |
193 For a more recent introduction, it is strongly recommended to have | 171 For a more recent document, it is strongly recommended to have |
194 a look at the \fIMH Book\fP. | 172 a look at the \fIMH Book\fP, |
195 .[ [ | 173 .[ [ |
196 peek mh book | 174 peek mh book |
197 .], Part II] | 175 .], Part II] |
198 The online version of the book was updated on in May 2006. | 176 especially at its online version. |
199 .P | 177 .P |
200 Following here is an example mail handling session. | 178 Following here is a sample mail handling session with mmh. |
201 Although it uses mmh, it is mostly compatible with nmh and the | 179 Details might vary to MH and nmh but the look and feel is the same. |
202 original MH. | |
203 Details might vary but the look and feel is the same. | |
204 | 180 |
205 .so input/mh-session | 181 .so input/mh-session |
206 | 182 |
207 | 183 |
208 .H1 "nmh | 184 .H1 "nmh |
209 .P | 185 .P |
210 In order to understand the condition, goals and dynamics of a project, | 186 In order to understand the condition, goals and dynamics of a project, |
211 one needs to know the reasons behind them. | 187 one needs to know the reasons behind them. |
212 This section explains the background. | 188 This section gives background information. |
213 .P | 189 .P |
214 MH predates the Internet; | 190 MH predates the Internet; |
215 it comes from times before networking was universal, | 191 it comes from times before networking was universal; |
216 it comes from times when emailing was small, short and simple. | 192 it comes from times when emailing was small, short and simple. |
217 Then it grew, spread and adapted to the changes email went through. | 193 Then, MH grew, spread and adapted to the changes email went through. |
218 Its core-concepts, however, remained the same. | 194 Its core concepts, however, remained the same. |
219 During the eighties, students at UCI actively worked on MH. | 195 During the eighties, students at UCI actively worked on MH. |
220 They added new features and optimized the code for the systems | 196 They added new features and optimized the code for the systems |
221 popular at that time. | 197 popular at that time. |
222 All this still was in times before POSIX and ANSI C. | 198 This was in times before POSIX and ANSI C. |
223 As large parts of the code stem from this time, today's nmh source code | 199 As large parts of the code stem from this time, today's nmh source code |
224 still contains many ancient parts. | 200 still contains many ancient parts. |
225 BSD-specific code and constructs tailored for hardware of that time | 201 BSD-specific code and constructs tailored for hardware of that time |
226 are frequent. | 202 are frequent. |
227 .P | 203 .P |
228 Nmh started about a decade after the POSIX and ANSI C standards were | 204 Nmh started about one decade after the POSIX and ANSI C standards were |
229 established. A more modern coding style entered the code base, but still | 205 released. |
230 a part of the developers came from ``the old days''. The developer | 206 A more modern coding style entered the code base but still |
231 base became more diverse, thus broadening the range of different | 207 a part of the developers were ``of the old type''. |
232 coding styles. | 208 The developer base became more diverse, |
209 thus broadening the range of different coding styles. | |
233 Programming practices from different decades merged in the project. | 210 Programming practices from different decades merged in the project. |
234 As several peers added code, the system became more a conglomeration | 211 As several peers added code, the system became more a conglomeration |
235 of single tools rather than a homogeneous of-one-cast mail system. | 212 of single tools rather than a homogeneous of-one-cast mail system. |
236 Still, the existing basic concepts held it together. | 213 For that, leadership would have been necessary. |
214 Nevertheless, MH's basic concepts held the project together. | |
237 They were mostly untouched throughout the years. | 215 They were mostly untouched throughout the years. |
238 .P | 216 .P |
239 Despite the separation of the tool chest approach at the surface | 217 Though clearly separated on the surface |
240 \(en a collection of small, separate programs \(en | 218 \(en as a collection of small, separate programs \(en |
241 on the source code level, it is much more interwoven. | 219 the source code turns out to be fairly interwoven. |
242 Several separate components were compiled into one program | 220 Multiple separate components are compiled into a program |
243 for efficiency reasons. | 221 for efficiency reasons. |
244 This led to intricate innards. | 222 This leads to intricate innards. |
245 While clearly separated on the outside, | 223 .P |
246 the programs turned out to be fairly interwoven inside. | 224 It is visible in nmh that |
247 .\" XXX FIXME rewrite... | 225 the advent of MIME raised the complexity of email by a magnitude. |
248 .\" nicht zweimal ``interwoven'' | 226 The MIME-related parts are the most complex ones. |
249 .\" Unfortunately, the clear separation on the outside turned out to be | |
250 .\" fairly interwoven inside. | |
251 .P | |
252 The advent of MIME raised the complexity of email by a magnitude. | |
253 This is visible in nmh. The MIME-related parts are the most complex ones. | |
254 It is also visible that MIME support was added on top of the old MH core. | 227 It is also visible that MIME support was added on top of the old MH core. |
255 MH's tool chest style made this easily possible and encourages | 228 MH's tool chest style made this easily possible and encourages |
256 such approaches, but unfortunately, it led to duplicated functions | 229 such approaches, but unfortunately, it led to duplicated functions |
257 and half-hearted implementation of the concepts. | 230 and half-hearted implementation of concepts. |
258 .P | 231 .P |
259 To provide backward-compatibility, it is a common understanding not to | 232 To provide backward-compatibility, it is a common understanding |
260 change the default settings. | 233 in the nmh community to not change the default settings. |
261 In consequence, the user needs to activate modern features explicitly | 234 In consequence, users need to activate modern features explicitly |
262 to be able to use them. | 235 to be able to use them. |
263 This puts a burden on new users, because out-of-the-box nmh remains | 236 The ancient style in which fresh nmh setups remain to appear |
264 in the same ancient style. | 237 causes difficulties for new users, as modern email features require |
265 If nmh is seen to be a back-end, | 238 additional configuration. |
266 then this compatibility surely is important. | 239 The small but mature community around nmh, however, needs little change |
267 However, at the same time, new users have difficulties using nmh for | |
268 modern emailing. | |
269 The small but mature community around nmh needs little change | |
270 as they have had their convenient setups for decades. | 240 as they have had their convenient setups for decades. |
271 .\" XXX Explain more | |
272 | 241 |
273 | 242 |
274 .H1 "mmh | 243 .H1 "mmh |
275 .P | 244 .P |
276 I started to work on my experimental version in October 2011, | 245 I started to work on my experimental version in October 2011, |
277 basing my work on nmh version \fInmh-1.3-dev\fP. | 246 basing my work on nmh version \fInmh-1.3-dev\fP. |
278 At that time no more than three commits were made to nmh | 247 At that time no more than three commits were made to nmh |
279 since the beginning of the year, the latest one being | 248 since the beginning of 2011, the latest one being |
280 .Ci a01a41d031c796b526329a4170eb23f0ac93b949 | 249 .Ci a01a41d031c796b526329a4170eb23f0ac93b949 , |
281 on 2011-04-13. | 250 commited on 2011-04-13. |
282 In December, when I announced my work in progress on the | 251 In December, when I announced my work in progress on the |
283 nmh-workers mailing list, | 252 nmh-workers mailing list, |
284 .[ | 253 .[ |
285 nmh-workers mmh announce December | 254 nmh-workers mmh announce December |
286 .] | 255 .] |
289 .[ | 258 .[ |
290 nmh-workers vixie edginess | 259 nmh-workers vixie edginess |
291 .] | 260 .] |
292 After long years of stagnation, nmh became actively developed again. | 261 After long years of stagnation, nmh became actively developed again. |
293 Hence, while I was working on mmh, the community was working on nmh, | 262 Hence, while I was working on mmh, the community was working on nmh, |
294 in parallel. | 263 in parallel but unrelated. |
295 .P | 264 .P |
296 The name \fImmh\fP may stand for \fImodern mail handler\fP, | 265 The name \fImmh\fP may stand for \fImodern mail handler\fP, |
297 because the project tries to modernize nmh. | 266 because the project tries to modernize nmh. |
298 Personally however, I prefer to call mmh \fImeillo's mail handler\fP, | 267 Personally however, I prefer to call mmh \fImeillo's mail handler\fP, |
299 emphasizing that the project is my version of nmh, | 268 emphasizing that the project is my version of nmh, |
303 .[ | 272 .[ |
304 dwm website | 273 dwm website |
305 .] | 274 .] |
306 which is Anselm Garbe's personal window manager \(en | 275 which is Anselm Garbe's personal window manager \(en |
307 targeted to satisfy Garbe's personal needs whenever conflicts appear. | 276 targeted to satisfy Garbe's personal needs whenever conflicts appear. |
308 Dwm had retained its lean elegance and its focused character, whereas | 277 Dwm has retained its lean elegance and its focused character, whereas |
309 its community-driven predecessor \fIwmii\fP | 278 its community-driven predecessor \fIwmii\fP |
310 .[ | 279 .[ |
311 wmii website | 280 wmii website |
312 .] | 281 .] |
313 had grown fat over time. | 282 had grown fat over time. |
316 | 285 |
317 .U2 "Motivation | 286 .U2 "Motivation |
318 .P | 287 .P |
319 MH is the most important of very few email systems in a tool chest style. | 288 MH is the most important of very few email systems in a tool chest style. |
320 Tool chests are powerful because they can be perfectly automated and | 289 Tool chests are powerful because they can be perfectly automated and |
321 extended. They allow arbitrary kinds of front-ends to be | 290 extended. |
322 implemented on top of them quickly and without internal knowledge. | 291 They allow the implementation of arbitrary kinds of front-ends |
292 on top of the tool chest quickly and without internal knowledge. | |
323 Additionally, tool chests are easier to maintain than monolithic | 293 Additionally, tool chests are easier to maintain than monolithic |
324 programs. | 294 programs. |
325 As there are few tool chests for emailing and as MH-like ones are the most | 295 MH-like email tool chests should be kept alive as they fill a market |
326 popular among them, they should be developed further. | 296 niche by providing conceptional elegance and unique scripting qualities. |
327 This keeps their | 297 Mmh tries to create a modern and convenient entry point to MH-like |
328 conceptional elegance and unique scripting qualities available to users. | 298 systems for new and interested users. |
329 Mmh creates a modern and convenient entry point to MH-like systems | |
330 for new and interested users. | |
331 .P | 299 .P |
332 The mmh project is motivated by deficits of nmh and | 300 The mmh project is motivated by deficits of nmh and |
333 my wish for general changes, combined | 301 by my wish for general changes. |
334 with the nmh community's reluctancy to change. | 302 At the time the mmh project started, nmh had not yet adjusted to |
335 .P | 303 modern emailing needs well enough. |
336 At that time, nmh had not adjusted to modern emailing needs well enough. | |
337 The default setup was completely unusable for modern emailing. | 304 The default setup was completely unusable for modern emailing. |
338 Too much setup work was required. | 305 Too much setup work was required. |
339 Several modern features were already available but the community | 306 Several modern features were already available, |
340 did not want to have them as default. | 307 but the community did not want to have them active by default. |
341 Mmh is a way to change this. | 308 Mmh is my way to change this. |
342 .P | 309 .P |
343 In my eyes, MH's concepts could be exploited even better and | 310 In my eyes, MH's concepts could be exploited better and |
344 the style of the tools could be improved. Both would simplify | 311 the style of the tools could be improved. |
345 and generalize the system, providing cleaner interfaces and more | 312 Both would simplify and generalize the system, providing cleaner |
346 software leverage at the same time. | 313 interfaces and greater software leverage at the same time. |
347 Mmh is a way to demonstrate this. | 314 Mmh is my way to demonstrate this. |
348 .P | 315 .P |
349 In providing several parts of an email system, nmh can hardly | 316 In providing multiple parts of the email system, nmh can hardly |
350 compete with the large specialized projects that focus | 317 compete with the large specialized projects that focus |
351 on only one of the components. | 318 on one of the components only. |
352 The situation can be improved by concentrating the development power | 319 The situation could be improved by concentrating the development power |
353 on the most unique part of MH and letting the user pick his preferred | 320 on the most unique part of MH and letting the user pick his preferred |
354 set of other mail components. | 321 set of other mail components. |
355 Today's pre-packaged software components encourage this model. | 322 Today's pre-packaged software components encourage this model. |
356 Mmh is a way to go for this approach. | 323 Mmh is my way to provide this. |
357 .P | 324 .P |
358 It is worthwhile to fork nmh for the development of mmh, | 325 It is worthwhile to fork nmh for the development of mmh, |
359 because the two projects focus on different goals and differ in | 326 because the two projects focus on different goals and differ in |
360 fundamental questions. | 327 fundamental questions. |
361 The nmh community's reluctance regarding change conflicts | 328 The nmh community's reluctance regarding change conflicts |
362 with my strong desire for it. | 329 with my strong desire for it. |
363 .[ | 330 .[ |
364 nmh-workers schnalke understanding nmh | 331 nmh-workers schnalke understanding nmh |
365 .] | 332 .] |
366 In developing a separate experimental version new approaches can | 333 In developing a separate experimental version, new approaches can |
367 easily be tried out without the need to discuss changes beforehand. | 334 easily be tried out without the need to discuss changes beforehand. |
368 In fact, revolutionary changes are hardly possible otherwise. | 335 In fact, revolutionary changes are hardly possible otherwise. |
369 .P | 336 .P |
370 The mmh project provides the basis on which the aforementioned | 337 The mmh project provides the basis on which the aforementioned |
371 ideas can be implemented and demonstrated, | 338 ideas can be implemented and demonstrated, |
377 .U2 "Target Field | 344 .U2 "Target Field |
378 .P | 345 .P |
379 Any effort needs to be targeted towards a specific goal | 346 Any effort needs to be targeted towards a specific goal |
380 in order to be successful. | 347 in order to be successful. |
381 Therefore, a description of an imagined typical mmh user follows. | 348 Therefore, a description of an imagined typical mmh user follows. |
382 Mmh should satisfy his needs. | 349 Actually, as mmh is my personal version of MH, |
383 Actually, as mmh is my personal version of MH, this is a description | 350 this is sort of a description of myself. |
384 of myself. | 351 Developing software for one's own is a reliable way to produce software |
385 Writing software for oneself is a reliable way to produce software | |
386 that matches the user's desires. | 352 that matches the user's desires. |
387 .P | 353 .P |
388 The target user of mmh likes Unix and its philosophy. | 354 The target user of mmh likes Unix and its philosophy. |
389 He appreciates to use programs that are conceptionally appealing. | 355 He appreciates to use programs that are conceptionally appealing. |
390 He is familiar with the command line and enjoys its power. | 356 He is familiar with the command line and enjoys its power. |
391 He is capable of shell scripting and wants to improve his | 357 He is capable of shell scripting and wants to improve his |
392 productivity by scripting the mail system. | 358 productivity by scripting the mail system. |
393 He uses modern email features, such as attachments, | 359 He uses modern email features, such as attachments, |
394 non-ASCII text, digital signatures and message encryption in a natural way. | 360 non-ASCII text, digital signatures and message encryption in a natural way. |
395 He is able to set up mail system components, | 361 He is able to set up mail system components |
396 and like to have the choice to pick the ones he prefers. | 362 and likes to pick the ones he prefers. |
397 He has a reasonably modern operating system that complies to the | 363 He has a reasonably modern operating system that complies to the |
398 POSIX and ANSI C standards. | 364 POSIX and ANSI C standards. |
399 .P | 365 .P |
400 The typical user invokes mmh commands directly in an interactive | 366 The typical user invokes mmh commands directly in an interactive |
401 shell session, but he uses them to automate mail handling tasks as well. | 367 shell session, even on workstations where graphical front-ends could |
368 be added. | |
402 Likely, he runs his mail setup on a server machine, | 369 Likely, he runs his mail setup on a server machine, |
403 to which he connects via ssh. | 370 to which he connects via ssh. |
404 He might also have a local mmh installation on his workstation. | 371 He might automate mail processing with mmh tools |
405 Still, he tend to use mmh directly in the shell instead | 372 but definitely he uses the tools to build better tools. |
406 of using graphical front-ends. | 373 In any case, he wants to have the flexibility to change |
407 He definitely wants to be flexible and thus be able to change | |
408 his setup to suit his needs. | 374 his setup to suit his needs. |
409 .P | 375 .P |
410 The typical mmh user is a programmer. | 376 The typical mmh user is a programmer. |
411 He likes to, occasionally, take the opportunity of free software to put | 377 He likes to, occasionally, make use of the opportunity of free software |
412 hands on and get involved in the software he uses. | 378 by putting hands on and getting involved in software he uses. |
413 In consequence, he likes small and clean code bases and cares for | 379 In consequence, he likes small and clean code bases and cares for |
414 code quality. | 380 code quality. |
415 In general, he believes that: | 381 In general, he believes that: |
416 .BU | 382 .BU |
417 The elegance of source code is most important. | 383 The elegance of source code is most important. |
418 .BU | 384 .BU |
419 Concepts are more important than concrete implementations. | 385 Concepts are more important than concrete implementations. |
420 .BU | 386 .BU |
421 Code optimizations for anything but readability should be avoided. | 387 Code optimizations for anything but readability should be avoided. |
422 .BU | 388 .BU |
389 Removed code is debugged code. | |
390 .BU | |
423 Having a lot of choice is bad. | 391 Having a lot of choice is bad. |
424 .BU | 392 |
425 Removed code is debugged code. | 393 |
426 | 394 .U2 "Goals of the mmh Project |
427 | |
428 .U2 "Goals | |
429 .P | |
430 The general goals for the mmh project are the following: | |
431 .IP "Streamlining | 395 .IP "Streamlining |
432 Mmh should be stripped down to its core, which is the user agent (MUA). | 396 Mmh should be stripped down to its core, which is the user agent (MUA). |
433 The feature set should be distilled to the indispensable ones, | 397 The feature set should be distilled to the indispensable ones, |
434 effectively removing corner cases. | 398 effectively removing corner cases. |
435 Parts that do not add to the main task of being a conceptionally | 399 Parts that do not add to the main task of being a conceptionally |
436 appealing user agent should be removed. | 400 appealing user agent should be removed. |
437 This includes the mail submission and mail retrieval facilities. | 401 This includes the mail transfer and mail retrieval facilities. |
438 Choice should be reduced to the main options. | 402 Choice should be reduced to the main options. |
439 All tools should be tightly shaped. | 403 All tools should be tightly shaped. |
440 .IP "Modernizing | 404 .IP "Modernizing |
441 Mmh's feature set needs to become more modern. | 405 Mmh's feature set needs to become more modern. |
442 Better support for attachments, digital signatures and message encryption | 406 Better support for attachments, digital signatures, and message |
443 should be added. | 407 encryption should be added. |
444 MIME support should be integrated deeper and more naturally. | 408 MIME support should be integrated deeper and more naturally. |
445 The modern email features need to be readily available, out-of-the-box. | 409 The modern email features need to be readily available, out-of-the-box. |
446 On the other hand, | 410 On the other hand, obsolete facilities can be dropped out and |
447 bulletin board support and similar obsolete facilities can be dropped out. | 411 ancient technologies need not be further supported. |
448 Likewise, ancient technologies should not be supported any further. | 412 The available concepts should be expanded as far as possible. |
449 The available concepts need to be expanded as far as possible. | |
450 A small set of concepts should recur consistently. | 413 A small set of concepts should recur consistently. |
451 .IP "Styling | 414 .IP "Styling |
452 Mmh's source code needs to be updated to modern standards. | 415 Mmh's source code should be updated to modern standards. |
453 Standardized library functions should replace non-standard versions | 416 Standardized library functions should replace non-standard versions |
454 whenever possible. | 417 whenever possible. |
455 Code should be separated into distinct modules when feasible. | 418 Code should be separated into distinct modules when feasible. |
456 Time and space optimizations should to be replaced by | 419 Time and space optimizations should to be replaced by |
457 clear and readable code. | 420 clear and readable code. |