Mercurial > docs > unix-phil
comparison unix-phil.ms @ 30:ec17b3a969c7
various minor rework in ch04
author | meillo@marmaro.de |
---|---|
date | Wed, 24 Mar 2010 22:07:02 +0100 |
parents | f0511a56416e |
children | 0caa9760fca8 |
comparison
equal
deleted
inserted
replaced
29:302daab2e8ee | 30:ec17b3a969c7 |
---|---|
654 | 654 |
655 | 655 |
656 .NH 1 | 656 .NH 1 |
657 Case study: \s-1MH\s0 | 657 Case study: \s-1MH\s0 |
658 .LP | 658 .LP |
659 The last chapter introduced and explained the Unix Philosophy | 659 The previous chapter introduced and explained the Unix Philosophy |
660 from a general point of view. | 660 from a general point of view. |
661 The driving force were the guidelines, references to | 661 The driving force were the guidelines; references to |
662 existing software were given only sparsely. | 662 existing software were given only sparsely. |
663 In this and the next chapter, concrete software will be | 663 In this and the next chapter, concrete software will be |
664 the driving force in the discussion. | 664 the driving force in the discussion. |
665 .PP | 665 .PP |
666 This first case study is about the mail user agents (\s-1MUA\s0) | 666 This first case study is about the mail user agents (\s-1MUA\s0) |
675 | 675 |
676 .NH 2 | 676 .NH 2 |
677 Historical background | 677 Historical background |
678 .LP | 678 .LP |
679 Electronic mail was available in Unix very early. | 679 Electronic mail was available in Unix very early. |
680 The first \s-1MUA\s0 on Unix was \f(CWmail\fP. | 680 The first \s-1MUA\s0 on Unix was \f(CWmail\fP, |
681 It was a small program that either prints the own mailbox file | 681 which was already present in the First Edition. |
682 .[ | |
683 %A Peter H. Salus | |
684 %T A Quarter Century of UNIX | |
685 %D 1994 | |
686 %I Addison-Wesley | |
687 %P 41 f. | |
688 .] | |
689 It was a small program that either prints the user's mailbox file | |
682 or appends text to someone elses mailbox file, | 690 or appends text to someone elses mailbox file, |
683 depending on the command line arguments. | 691 depending on the command line arguments. |
684 .[ | 692 .[ |
685 %O http://cm.bell-labs.com/cm/cs/who/dmr/pdfs/man12.pdf | 693 %O http://cm.bell-labs.com/cm/cs/who/dmr/pdfs/man12.pdf |
686 .] | 694 .] |
700 \fImailx\fP is the adaptation of Berkeley Mail into System V. | 708 \fImailx\fP is the adaptation of Berkeley Mail into System V. |
701 .[ | 709 .[ |
702 %A Gunnar Ritter | 710 %A Gunnar Ritter |
703 %O http://heirloom.sourceforge.net/mailx_history.html | 711 %O http://heirloom.sourceforge.net/mailx_history.html |
704 .] | 712 .] |
705 Elm, pine, mutt, and today a whole bunch of graphical \s-1MUA\s0s | 713 Elm, pine, mutt, and a whole bunch of graphical \s-1MUA\s0s |
706 followed Mail's direction. | 714 followed Mail's direction. |
707 They are large, monolithic programs which include all emailing functions. | 715 They are large, monolithic programs which include all emailing functions. |
708 .PP | 716 .PP |
709 A different way was taken by the people of \s-1RAND\s0 Corporation. | 717 A different way was taken by the people of \s-1RAND\s0 Corporation. |
710 In the beginning, they also had used a monolitic mail system, | 718 In the beginning, they also had used a monolitic mail system, |
711 called \s-1MS\s0 simply for ``mail system''. | 719 called \s-1MS\s0 (for ``mail system''). |
712 But in 1977, Stockton Gaines and Norman Shapiro | 720 But in 1977, Stockton Gaines and Norman Shapiro |
713 came up with a proposal of a new email system concept \(en | 721 came up with a proposal of a new email system concept \(en |
714 one that honors the Unix Philosophy. | 722 one that honors the Unix Philosophy. |
715 The concept was implemented by Bruce Borden in 1978 and 1979. | 723 The concept was implemented by Bruce Borden in 1978 and 1979. |
716 This was the birth of \s-1MH\s0 \(en the ``mail handler''. | 724 This was the birth of \s-1MH\s0 \(en the ``mail handler''. |
742 | 750 |
743 .NH 2 | 751 .NH 2 |
744 Contrasts to monolithic mail systems | 752 Contrasts to monolithic mail systems |
745 .LP | 753 .LP |
746 All \s-1MUA\s0s are monolithic, except \s-1MH\s0. | 754 All \s-1MUA\s0s are monolithic, except \s-1MH\s0. |
747 This might not be true, | 755 Although there might acutally exist further, very little known, |
748 but it reflects the situation pretty well. | 756 toolchest \s-1MUA\s0s, this statement reflects the situation pretty well. |
749 .PP | 757 .PP |
750 While monolithic \s-1MUA\s0s gather all function in one program, | 758 Monolithic \s-1MUA\s0s gather all their functions in one program. |
751 \s-1MH\s0 is a toolchest of many small tools \(en one for each job. | 759 In contrast, \s-1MH\s0 is a toolchest of many small tools \(en one for each job. |
752 Following is a list of important programs of \s-1MH\s0's toolchest | 760 Following is a list of important programs of \s-1MH\s0's toolchest |
753 and their function: | 761 and their function. |
762 It gives a feeling of how the toolchest looks like. | |
754 .IP \(bu | 763 .IP \(bu |
755 .CW inc : | 764 .CW inc : |
756 incorporate new mail | 765 incorporate new mail (this is how mail enters the system) |
757 .IP \(bu | 766 .IP \(bu |
758 .CW scan : | 767 .CW scan : |
759 list messages in folder | 768 list messages in folder |
760 .IP \(bu | 769 .IP \(bu |
761 .CW show : | 770 .CW show : |
781 .IP \(bu | 790 .IP \(bu |
782 .CW forw : | 791 .CW forw : |
783 forward a message | 792 forward a message |
784 .IP \(bu | 793 .IP \(bu |
785 .CW send : | 794 .CW send : |
786 send a prepared message | 795 send a prepared message (this is how mail leaves the system) |
787 .LP | 796 .LP |
788 \s-1MH\s0 has no special user interface like monolithic \s-1MUA\s0s have. | 797 \s-1MH\s0 has no special user interface like monolithic \s-1MUA\s0s have. |
789 The user does not leave the shell to run \s-1MH\s0, | 798 The user does not leave the shell to run \s-1MH\s0, |
790 but he uses \s-1MH\s0 within the shell. | 799 but he uses the various \s-1MH\s0 programs within the shell. |
791 Using a monolithic program with a captive user interface | 800 Using a monolithic program with a captive user interface |
792 means ``entering'' the program, using it, and ``exiting'' the program. | 801 means ``entering'' the program, using it, and ``exiting'' the program. |
793 Using toolchests like \s-1MH\s0 means running programs, | 802 Using toolchests like \s-1MH\s0 means running programs, |
794 alone or in combinition with others, even from other toolchests, | 803 alone or in combinition with others, even from other toolchests, |
795 without leaving the shell. | 804 without leaving the shell. |
796 .PP | 805 |
806 .NH 2 | |
807 Data storage | |
808 .LP | |
797 \s-1MH\s0's mail storage is (only little more than) a directory tree | 809 \s-1MH\s0's mail storage is (only little more than) a directory tree |
798 where mail folders are directories and mail messages are text files. | 810 where mail folders are directories and mail messages are text files. |
799 Working with \s-1MH\s0's toolchest is much like working | 811 Working with \s-1MH\s0's toolchest is much like working |
800 with Unix' toolchest: | 812 with Unix' toolchest: |
801 \f(CWscan\fP is like \f(CWls\fP, | 813 \f(CWscan\fP is like \f(CWls\fP, |
802 \f(CWshow\fP is like \f(CWcat\fP, | 814 \f(CWshow\fP is like \f(CWcat\fP, |
803 \f(CWfolder\fP is like \f(CWcd\fP, | 815 \f(CWfolder\fP is like \f(CWcd\fP/\f(CWpwd\fP, |
804 \f(CWrefile\fP is like \f(CWmv\fP, | 816 \f(CWrefile\fP is like \f(CWmv\fP, |
805 and \f(CWrmm\fP is like \f(CWrm\fP. | 817 and \f(CWrmm\fP is like \f(CWrm\fP. |
806 .PP | 818 .PP |
807 The context of tools in Unix is mainly the current working directory, | 819 The context of tools in Unix is mainly the current working directory, |
808 the user identification, and the environment variables. | 820 the user identification, and the environment variables. |
819 \s-1MH\s0's context is meant to be chained to a mail account. | 831 \s-1MH\s0's context is meant to be chained to a mail account. |
820 But actually, the current message is a property of the mail folder, | 832 But actually, the current message is a property of the mail folder, |
821 which appears to be a legacy. | 833 which appears to be a legacy. |
822 This will cause problems when multiple users work | 834 This will cause problems when multiple users work |
823 in one mail folder simultaneously. | 835 in one mail folder simultaneously. |
824 | |
825 | |
826 .NH 2 | |
827 Discussion of the design | |
828 .LP | |
829 The following paragraphs discuss \s-1MH\s0 in regard to the tenets | |
830 of the Unix Philosophy which Gancarz identified. | |
831 | |
832 .PP | |
833 .I "``Small is beautiful'' | |
834 and | |
835 .I "``do one thing well'' | |
836 are two design goals that are directly visible in \s-1MH\s0. | |
837 Gancarz actually presents \s-1MH\s0 as example under the headline | |
838 ``Making UNIX Do One Thing Well'': | |
839 .QP | |
840 [\s-1MH\s0] consists of a series of programs which | |
841 when combined give the user an enormous ability | |
842 to manipulate electronic mail messages. | |
843 A complex application, it shows that not only is it | |
844 possible to build large applications from smaller | |
845 components, but also that such designs are actually preferable. | |
846 .[ | |
847 %A Mike Gancarz | |
848 %T unix-phil | |
849 %P 125 | |
850 .] | |
851 .LP | |
852 The various small programs of \s-1MH\s0 were relatively easy | |
853 to write, because each of them is small, limited to one function, | |
854 and has clear boundaries. | |
855 For the same reasons, they are also good to maintain. | |
856 Further more, the system can easily get extended. | |
857 One only needs to put a new program into the toolchest. | |
858 This was done, for instance, when \s-1MIME\s0 support was added | |
859 (e.g. \f(CWmhbuild\fP). | |
860 Also, different programs can exist to do the basically same job | |
861 in different ways (e.g. in nmh: \f(CWshow\fP and \f(CWmhshow\fP). | |
862 If someone needs a mail system with some additionally | |
863 functions that are available nowhere yet, he best takes a | |
864 toolchest system like \s-1MH\s0 where he can add the | |
865 functionality with little work. | |
866 | |
867 .PP | 836 .PP |
868 .I "Data storage. | 837 .I "Data storage. |
869 How \s-1MH\s0 stores data was already mentioned. | 838 How \s-1MH\s0 stores data was already mentioned. |
870 Mail folders are directories (which contain a file | 839 Mail folders are directories (which contain a file |
871 \&\f(CW.mh_sequences\fP) under the user's \s-1MH\s0 directory | 840 \&\f(CW.mh_sequences\fP) under the user's \s-1MH\s0 directory |
892 as mentioned above, remains. | 861 as mentioned above, remains. |
893 Maildir is generally similar to \s-1MH\s0's format, | 862 Maildir is generally similar to \s-1MH\s0's format, |
894 but modified towards guaranteed reliability. | 863 but modified towards guaranteed reliability. |
895 This involves some complexity, unfortunately. | 864 This involves some complexity, unfortunately. |
896 | 865 |
866 | |
867 .NH 2 | |
868 Discussion of the design | |
869 .LP | |
870 The following paragraphs discuss \s-1MH\s0 in regard to the tenets | |
871 of the Unix Philosophy which Gancarz identified. | |
872 | |
873 .PP | |
874 .I "``Small is beautiful'' | |
875 and | |
876 .I "``do one thing well'' | |
877 are two design goals that are directly visible in \s-1MH\s0. | |
878 Gancarz actually presents \s-1MH\s0 as example under the headline | |
879 ``Making UNIX Do One Thing Well'': | |
880 .QP | |
881 [\s-1MH\s0] consists of a series of programs which | |
882 when combined give the user an enormous ability | |
883 to manipulate electronic mail messages. | |
884 A complex application, it shows that not only is it | |
885 possible to build large applications from smaller | |
886 components, but also that such designs are actually preferable. | |
887 .[ | |
888 %A Mike Gancarz | |
889 %T unix-phil | |
890 %P 125 | |
891 .] | |
892 .LP | |
893 The various small programs of \s-1MH\s0 were relatively easy | |
894 to write, because each of them is small, limited to one function, | |
895 and has clear boundaries. | |
896 For the same reasons, they are also good to maintain. | |
897 Further more, the system can easily get extended. | |
898 One only needs to put a new program into the toolchest. | |
899 This was done, for instance, when \s-1MIME\s0 support was added | |
900 (e.g. \f(CWmhbuild\fP). | |
901 Also, different programs can exist to do the basically same job | |
902 in different ways (e.g. in nmh: \f(CWshow\fP and \f(CWmhshow\fP). | |
903 If someone needs a mail system with some additionally | |
904 functions that are available nowhere yet, he best takes a | |
905 toolchest system like \s-1MH\s0 where he can add the | |
906 functionality with little work. | |
907 | |
908 .PP | |
909 .I "Store data in flat text files. | |
910 FIXME | |
911 | |
897 .PP | 912 .PP |
898 .I "``Avoid captive user interfaces.'' | 913 .I "``Avoid captive user interfaces.'' |
899 \s-1MH\s0 is perfectly suited for non-interactive use. | 914 \s-1MH\s0 is perfectly suited for non-interactive use. |
900 It offers all functions directly and without captive user interfaces. | 915 It offers all functions directly and without captive user interfaces. |
901 If users want a graphical user interface, anyhow, | 916 If, nonetheless, users want a graphical user interface, |
902 they can have it with \fIxmh\fP or \fIexmh\fP, too. | 917 they can have it with \fIxmh\fP or \fIexmh\fP, too. |
903 These are graphical frontends for the \s-1MH\s0 toolchest. | 918 These are graphical frontends for the \s-1MH\s0 toolchest. |
904 This means, all email-related work is still done by \s-1MH\s0 tools, | 919 This means, all email-related work is still done by \s-1MH\s0 tools, |
905 but the frontend issues the appropriate calls when the user | 920 but the frontend issues the appropriate calls when the user |
906 clicks on a button. | 921 clicks on buttons. |
907 Providing easy-to-use user interfaces in form of frontends is a good | 922 Providing easy-to-use user interfaces in form of frontends is a good |
908 approach, because it does not limit the power of the backend itself. | 923 approach, because it does not limit the power of the backend itself. |
909 The frontend will anyway only be able to make a subset of the | 924 The frontend will anyway only be able to make a subset of the |
910 backend's power and flexibility available to the user. | 925 backend's power and flexibility available to the user. |
911 But if it is a separate program, | 926 But if it is a separate program, |
912 then the missing parts can still be accessed at the backend directly. | 927 then the missing parts can still be accessed at the backend directly. |
913 If it is integrated, then this will hardly be possible. | 928 If it is integrated, then this will hardly be possible. |
929 Further more, it is possible to have different frontends to the same | |
930 backend. | |
914 | 931 |
915 .PP | 932 .PP |
916 .I "``Choose portability over efficiency'' | 933 .I "``Choose portability over efficiency'' |
917 and | 934 and |
918 .I "``use shell scripts to increase leverage and portability'' . | 935 .I "``use shell scripts to increase leverage and portability'' . |
919 These two tenets are indirectly, but nicely, demonstrated by | 936 These two tenets are indirectly, but nicely, demonstrated by |
920 Bolsky and Korn in their book about the korn shell. | 937 Bolsky and Korn in their book about the Korn Shell. |
921 .[ | 938 .[ |
922 %T The KornShell: command and programming language | 939 %T The KornShell: command and programming language |
923 %A Morris I. Bolsky | 940 %A Morris I. Bolsky |
924 %A David G. Korn | 941 %A David G. Korn |
925 %I Prentice Hall | 942 %I Prentice Hall |
926 %D 1989 | 943 %D 1989 |
944 %P 254\(en290 | |
927 %O \s-1ISBN\s0: 0-13-516972-0 | 945 %O \s-1ISBN\s0: 0-13-516972-0 |
928 .] | 946 .] |
929 They demonstrated, in one chapter of the book, a basic implementation | 947 They demonstrated, in chapter 18 of the book, a basic implementation |
930 of a subset of \s-1MH\s0 in ksh scripts. | 948 of a subset of \s-1MH\s0 in ksh scripts. |
931 Of course, this was just a demonstration, but a brilliant one. | 949 Of course, this was just a demonstration, but a brilliant one. |
932 It shows how quickly one can implement such a prototype with shell scripts, | 950 It shows how quickly one can implement such a prototype with shell scripts, |
933 and how readable they are. | 951 and how readable they are. |
934 The implementation in the scripting language may not be very fast, | 952 The implementation in the scripting language may not be very fast, |
936 By having the code in an interpreted language, like the shell, | 954 By having the code in an interpreted language, like the shell, |
937 portability becomes a minor issue, if we assume the interpreter | 955 portability becomes a minor issue, if we assume the interpreter |
938 to be widespread. | 956 to be widespread. |
939 This demonstration also shows how easy it is to create single programs | 957 This demonstration also shows how easy it is to create single programs |
940 of a toolchest software. | 958 of a toolchest software. |
941 Most of them comprise less than a hundred lines of shell code. | 959 There are eight tools (two of them have multiple names) and 16 functions |
960 with supporting code. | |
961 Each tool comprises between 12 and 38 lines of ksh, | |
962 in total about 200 lines. | |
963 The functions comprise between 3 and 78 lines of ksh, | |
964 in total about 450 lines. | |
942 Such small software is easy to write, easy to understand, | 965 Such small software is easy to write, easy to understand, |
943 and thus easy to maintain. | 966 and thus easy to maintain. |
944 A toolchest improves the possibility to only write some parts | 967 A toolchest improves the possibility to only write some parts |
945 and though create a working result. | 968 and though create a working result. |
946 Expanding the toolchest without global changes will likely be | 969 Expanding the toolchest without global changes will likely be |
950 .I "``Use software leverage to your advantage'' | 973 .I "``Use software leverage to your advantage'' |
951 and the lesser tenet | 974 and the lesser tenet |
952 .I "``allow the user to tailor the environment'' | 975 .I "``allow the user to tailor the environment'' |
953 are ideally followed in the design of \s-1MH\s0. | 976 are ideally followed in the design of \s-1MH\s0. |
954 Tailoring the environment is heavily encouraged by the ability to | 977 Tailoring the environment is heavily encouraged by the ability to |
955 directly define default options to programs, even different ones | 978 directly define default options to programs. |
979 It is even possible to define different default options | |
956 depending on the name under which the program was called. | 980 depending on the name under which the program was called. |
957 Software leverage is heavily encouraged by the ease it is to | 981 Software leverage is heavily encouraged by the ease it is to |
958 create shell scripts that run a specific command line, | 982 create shell scripts that run a specific command line, |
959 build of several \s-1MH\s0 programs. | 983 built of several \s-1MH\s0 programs. |
960 There is few software that so much wants users to tailor their | 984 There is few software that so much wants users to tailor their |
961 environment and to leverage the use of the software, like \s-1MH\s0. | 985 environment and to leverage the use of the software, like \s-1MH\s0. |
962 Just to make one example: | 986 Just to make one example: |
963 One might prefer a different listing format for the \f(CWscan\fP | 987 One might prefer a different listing format for the \f(CWscan\fP |
964 program. | 988 program. |
965 It is possible to take one of the other distributed format files | 989 It is possible to take one of the distributed format files |
966 or to write one yourself. | 990 or to write one yourself. |
967 To use the format as default for \f(CWscan\fP, a single line, | 991 To use the format as default for \f(CWscan\fP, a single line, |
968 reading | 992 reading |
969 .DS | 993 .DS |
970 .CW | 994 .CW |
973 must be added to \f(CW.mh_profile\fP. | 997 must be added to \f(CW.mh_profile\fP. |
974 If one wants this different format as an additional command, | 998 If one wants this different format as an additional command, |
975 instead of changing the default, he needs to create a link to | 999 instead of changing the default, he needs to create a link to |
976 \f(CWscan\fP, for instance titled \f(CWscan2\fP. | 1000 \f(CWscan\fP, for instance titled \f(CWscan2\fP. |
977 The line in \f(CW.mh_profile\fP would then start with \f(CWscan2\fP, | 1001 The line in \f(CW.mh_profile\fP would then start with \f(CWscan2\fP, |
978 as the option should only be in effect when scan was called as | 1002 as the option should only be in effect when scan is called as |
979 \f(CWscan2\fP. | 1003 \f(CWscan2\fP. |
980 | 1004 |
981 .PP | 1005 .PP |
982 .I "``Make every program a filter'' | 1006 .I "``Make every program a filter'' |
983 is hard to find in \s-1MH\s0. | 1007 is hard to find in \s-1MH\s0. |
984 The reason therefore is that most of \s-1MH\s0's tools provide | 1008 The reason therefore is that most of \s-1MH\s0's tools provide |
985 basic file system operations for the mailboxes. | 1009 basic file system operations for the mailboxes. |
1010 The reason is the same because of which | |
986 \f(CWls\fP, \f(CWcp\fP, \f(CWmv\fP, and \f(CWrm\fP | 1011 \f(CWls\fP, \f(CWcp\fP, \f(CWmv\fP, and \f(CWrm\fP |
987 aren't filters neither. | 1012 aren't filters neither. |
988 However, they build a basis on which filters can operate. | 1013 However, they build a basis on which filters can operate. |
989 \s-1MH\s0 does not provide many filters itself, but it is a basis | 1014 \s-1MH\s0 does not provide many filters itself, but it is a basis |
990 to write filters for. | 1015 to write filters for. |
1016 An example would be a mail message text highlighter, | |
1017 that means a program that makes use of a color terminal to display | |
1018 header lines, quotations, and signatures in distinct colors. | |
1019 The author's version of this program, for instance, | |
1020 is a 25 line awk script. | |
991 | 1021 |
992 .PP | 1022 .PP |
993 .I "``Build a prototype as soon as possible'' | 1023 .I "``Build a prototype as soon as possible'' |
994 was again well followed by \s-1MH\s0. | 1024 was again well followed by \s-1MH\s0. |
995 This tenet, of course, focuses on early development, which is | 1025 This tenet, of course, focuses on early development, which is |
997 But without following this guideline at the very beginning, | 1027 But without following this guideline at the very beginning, |
998 Bruce Borden may have not convinced the management of \s-1RAND\s0 | 1028 Bruce Borden may have not convinced the management of \s-1RAND\s0 |
999 to ever create \s-1MH\s0. | 1029 to ever create \s-1MH\s0. |
1000 In Bruce' own words: | 1030 In Bruce' own words: |
1001 .QP | 1031 .QP |
1002 [...] but [Stockton Gaines and Norm Shapiro] were not able | 1032 [...] but they [Stockton Gaines and Norm Shapiro] were not able |
1003 to convince anyone that such a system would be fast enough to be usable. | 1033 to convince anyone that such a system would be fast enough to be usable. |
1004 I proposed a very short project to prove the basic concepts, | 1034 I proposed a very short project to prove the basic concepts, |
1005 and my management agreed. | 1035 and my management agreed. |
1006 Looking back, I realize that I had been very lucky with my first design. | 1036 Looking back, I realize that I had been very lucky with my first design. |
1007 Without nearly enough design work, | 1037 Without nearly enough design work, |
1017 | 1047 |
1018 .NH 2 | 1048 .NH 2 |
1019 Problems | 1049 Problems |
1020 .LP | 1050 .LP |
1021 \s-1MH\s0, for sure is not without problems. | 1051 \s-1MH\s0, for sure is not without problems. |
1022 There are two main problems: one technical, the other about human behavior. | 1052 There are two main problems: one is technical, the other is about human behavior. |
1023 .PP | 1053 .PP |
1024 \s-1MH\s0 is old and email today is very different to email in the time | 1054 \s-1MH\s0 is old and email today is very different to email in the time |
1025 when \s-1MH\s0 was designed. | 1055 when \s-1MH\s0 was designed. |
1026 \s-1MH\s0 adopted to the changes pretty well, but it is limited. | 1056 \s-1MH\s0 adopted to the changes pretty well, but it is limited. |
1027 For example in development resources. | 1057 For example in development resources. |
1030 More active developers could quickly improve there. | 1060 More active developers could quickly improve there. |
1031 It is also limited by design, which is the larger problem. | 1061 It is also limited by design, which is the larger problem. |
1032 \s-1IMAP\s0, for example, conflicts with \s-1MH\s0's design to a large extend. | 1062 \s-1IMAP\s0, for example, conflicts with \s-1MH\s0's design to a large extend. |
1033 These design conflicts are not easily solvable. | 1063 These design conflicts are not easily solvable. |
1034 Possibly, they require a redesign. | 1064 Possibly, they require a redesign. |
1065 Maybe \s-1IMAP\s0 is too different to the classic mail model which \s-1MH\s0 covers, | |
1066 hence \s-1MH\s0 may never work well with \s-1IMAP\s0. | |
1035 .PP | 1067 .PP |
1036 The other kind of problem is human habits. | 1068 The other kind of problem is human habits. |
1037 When in this world almost all \s-1MUA\s0s are monolithic, | 1069 When in this world almost all \s-1MUA\s0s are monolithic, |
1038 it is very difficult to convince people to use a toolbox style \s-1MUA\s0 | 1070 it is very difficult to convince people to use a toolbox style \s-1MUA\s0 |
1039 like \s-1MH\s0. | 1071 like \s-1MH\s0. |
1040 The habits are so strong, that even people who understood the concept | 1072 The habits are so strong, that even people who understood the concept |
1041 and advantages of \s-1MH\s0 do not like to switch. | 1073 and advantages of \s-1MH\s0 do not like to switch, |
1042 Unfortunately, the frontends to \s-1MH\s0, which can provide familiar look'n'feel, | 1074 simply because \s-1MH\s0 is different. |
1043 are not very appealing in contrast to what monolithic \s-1MUA\s0s offer. | 1075 Unfortunately, the frontends to \s-1MH\s0, which could provide familiar look'n'feel, |
1076 are quite outdated and thus not very appealing compared to the modern interfaces | |
1077 which monolithic \s-1MUA\s0s offer. | |
1044 | 1078 |
1045 .NH 2 | 1079 .NH 2 |
1046 Summary \s-1MH\s0 | 1080 Summary \s-1MH\s0 |
1047 .LP | 1081 .LP |
1048 flexibility, no redundancy, use the shell | 1082 flexibility, no redundancy, use the shell |