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.