Mercurial > docs > master
comparison ch03.roff @ 88:30830e3b9e98
Further rework.
author | markus schnalke <meillo@marmaro.de> |
---|---|
date | Tue, 12 Jun 2012 20:44:52 +0200 |
parents | 7d5b180de542 |
children | 83bfb4dbf59f |
comparison
equal
deleted
inserted
replaced
87:7d5b180de542 | 88:30830e3b9e98 |
---|---|
417 had been MH's message display program. | 417 had been MH's message display program. |
418 .Pn show | 418 .Pn show |
419 mapped message numbers and sequences to files and invoked | 419 mapped message numbers and sequences to files and invoked |
420 .Pn mhl | 420 .Pn mhl |
421 to have the files formated. | 421 to have the files formated. |
422 For MIME, this approach wasn't sufficient anymore. | 422 With MIME, this approach wasn't sufficient anymore. |
423 MIME messages can consist of multiple parts, some of which aren't | 423 MIME messages can consist of multiple parts, some of which aren't |
424 directly displayable, and text content might be encoded in | 424 directly displayable, further more text content might be encoded in |
425 foreign charsets. | 425 foreign charsets. |
426 .Pn show 's | 426 .Pn show 's |
427 understanding of messages and | 427 understanding of messages and |
428 .Pn mhl 's | 428 .Pn mhl 's |
429 limited display facilities couldn't cope with the task any longer. | 429 display capabilities couldn't cope with the task any longer. |
430 .P | 430 .P |
431 Instead of extending these tools, additional tools were written from scratch | 431 Instead of extending these tools, additional tools were written from |
432 and then added to the MH tool chest. Doing so is encouraged by the | 432 scratch and added to the MH tool chest. |
433 tool chest approach. The new tools could be added without interfering | 433 Doing so is encouraged by the tool chest approach. |
434 with the existing ones. | 434 Modular design is a great advantage for extending a system, |
435 Modular design is a great advantage for extending a system. | 435 as new tools can be added without interfering with existing ones. |
436 First, the new MIME features were added in form of the single program | 436 First, the new MIME features were added in form of the single program |
437 .Pn mhn . | 437 .Pn mhn . |
438 The command | 438 The command |
439 .Cl "mhn -show 42 | 439 .Cl "mhn -show 42 |
440 would show the MIME message numbered 42. | 440 would show the MIME message numbered 42. |
441 With the 1.0 release of nmh in February 1999, Richard Coleman finished | 441 With the 1.0 release of nmh in February 1999, Richard Coleman finished |
442 the split of | 442 the split of |
443 .Pn mhn | 443 .Pn mhn |
444 into a set of specialized programs, which together covered the | 444 into a set of specialized tools, which together covered the |
445 multiple aspects of MIME. One of these resulting tools was | 445 multiple aspects of MIME. |
446 One of them was | |
446 .Pn mhshow , | 447 .Pn mhshow , |
447 which replaced the | 448 which replaced |
448 .Cl "mhn -show | 449 .Cl "mhn -show" . |
449 call. | 450 It was capable of displaying MIME messages appropriately. |
450 It was capable to display a MIME message appropriately. | 451 .P |
451 .P | 452 From then on, two message display tools were part of nmh, |
452 From then on, two message display tools were part of nmh: | |
453 .Pn show | 453 .Pn show |
454 and | 454 and |
455 .Pn mhshow . | 455 .Pn mhshow . |
456 Because the user should not need to invoke the right tool | 456 To ease the life of users, |
457 whether the message uses MIME or not, | |
458 .Pn show | 457 .Pn show |
459 was extended to automatically hand the job over to | 458 was extended to automatically hand the job over to |
460 .Pn mhshow | 459 .Pn mhshow |
461 if displaying the message would be beyond | 460 if displaying the message would be beyond |
462 .Pn show 's | 461 .Pn show 's |
463 abilities. | 462 abilities. |
464 In consequence, the user would invoke | 463 In consequence, the user would simply invoke |
465 .Pn show | 464 .Pn show |
466 (possibly through | 465 (possibly through |
467 .Pn next | 466 .Pn next |
468 or | 467 or |
469 .Pn prev ) | 468 .Pn prev ) |
470 and get the message printed with either | 469 and get the message printed with either |
471 .Pn show | 470 .Pn show |
472 or | 471 or |
473 .Pn mhshow , | 472 .Pn mhshow , |
474 whatever was more appropriate. | 473 whatever was more appropriate. |
475 (There was also a switch for | |
476 .Pn show | |
477 to never invoke | |
478 .Pn mhshow . | |
479 .Pn show | |
480 was able to display MIME messages if they contained only a single text | |
481 part.) | |
482 .P | 474 .P |
483 Having two similar tools for essentially the same task is redundant. | 475 Having two similar tools for essentially the same task is redundant. |
484 The development of both programs needed to be in sync, | 476 Usually, |
477 users wouldn't distinguish between | |
478 .Pn show | |
479 and | |
480 .Pn mhshow | |
481 in their daily mail reading. | |
482 Having two separate display programs was therefore mainly unnecessary | |
483 from a user's point of view. | |
484 Besides, the development of both programs needed to be in sync, | |
485 to ensure that the programs behaved in a similar way, | 485 to ensure that the programs behaved in a similar way, |
486 because they were used like a single tool. | 486 because they were used like a single tool. |
487 Different behavior would have surprised the user. | 487 Different behavior would have surprised the user. |
488 .P | 488 .P |
489 Today, non-MIME messages are rather seen to be a special case of | 489 Today, non-MIME messages are rather seen to be a special case of |
490 MIME messages, than MIME messages are seen to be an extension to | 490 MIME messages, although it's the other way round. |
491 original email. | |
492 As | 491 As |
493 .Pn mhshow | 492 .Pn mhshow |
494 had already be able to display non-MIME messages, it was natural | 493 had already be able to display non-MIME messages, it appeared natural |
495 to drop | 494 to drop |
496 .Pn show | 495 .Pn show |
497 in favor of using | 496 in favor of using |
498 .Pn mhshow | 497 .Pn mhshow |
499 exclusively. | 498 exclusively. |
500 This decision followed the idea of orthogonal design. | 499 .Ci 4c1efddfd499300c7e74263e57d8aa137e84c853 |
500 Removing | |
501 .Pn show | |
502 is no loss in function, because functionally | |
503 .Pn mhshow | |
504 covers it completely. | |
505 The old behavior of | |
506 .Pn show | |
507 can still be emulated with the simple command line: | |
508 .VS | |
509 mhl `mhpath c` | |
510 VE | |
511 .P | |
501 For convenience, | 512 For convenience, |
502 .Pn mhshow | 513 .Pn mhshow |
503 was then renamed to | 514 was renamed to |
504 .Pn show . | 515 .Pn show |
505 .Ci 4c1efddfd499300c7e74263e57d8aa137e84c853 | 516 after |
506 .P | 517 .Pn show |
507 To prepare for this transition, | 518 was gone. |
519 It is clear that such a rename may confuse future developers when | |
520 trying to understand the history. | |
521 Nevertheless, I consider the convenience on the user's side, | |
522 to call | |
523 .Pn show | |
524 when they want a message to be displayed, to outweigh the inconvenience | |
525 on the developer's side when understanding the project history. | |
526 .P | |
527 To prepare for the transition, | |
508 .Pn mhshow | 528 .Pn mhshow |
509 was reworked to behave more like | 529 was reworked to behave more like |
510 .Pn show | 530 .Pn show |
511 first. | 531 first. |
512 (Section XXX describes this rework from a different perspective.) | 532 (cf. Sec. XXX) |
513 Once the tools behaved similar, the replacing became a natural decision. | 533 Once the tools behaved more alike, the replacing appeared to be |
514 In mmh, | 534 even more natural. |
515 .Pn show | 535 Today, mmh's new |
516 is the one single message display program again, but it handles | 536 .Pn show |
517 MIME messages as well as non-MIME messages. | 537 became the one single message display program again, with the difference |
518 Now, there's only one program to maintain, and users don't need to deal | 538 that today it handles MIME messages as well as non-MIME messages. |
519 with the existance of two display programs. | 539 The outcome of the transition is one program less to maintain, |
520 .P | 540 no second display program for users to deal with, |
521 There's one reason why removing the old | 541 and less system complexity. |
522 .Pn show | 542 .P |
523 hurts: It had been such a simple program. | 543 Still, removing the old |
524 Its lean elegance is missing to | 544 .Pn show |
525 .Pn mhshow , | 545 hurts in one regard: It had been such a simple program. |
526 i.e. the new | 546 Its lean elegance is missing to the new |
527 .Pn show . | 547 .Pn show . |
528 But there is no chance, because supporting MIME causes essentially | 548 But there is no chance; |
529 higher complexity. | 549 supporting MIME demands for higher essential complexity. |
530 | 550 |
531 | 551 |
532 .H2 "Removal of Configure Options | 552 .H2 "Removal of Configure Options |
533 .P | 553 .P |
534 Customization is a double-edged sword. | 554 Customization is a double-edged sword. |