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.