Mercurial > docs > unix-phil
comparison unix-phil.ms @ 44:46e34e433231
moved bibliography to external file
author | meillo@marmaro.de |
---|---|
date | Sat, 10 Apr 2010 15:00:38 +0200 |
parents | 303e8f449e77 |
children | ade392f024aa |
comparison
equal
deleted
inserted
replaced
43:f5e7c4efbc01 | 44:46e34e433231 |
---|---|
59 but a loose set of guidelines which tell how to write software that | 59 but a loose set of guidelines which tell how to write software that |
60 suites well into Unix. | 60 suites well into Unix. |
61 Actually, the Unix Philosophy describes what is common to typical Unix software. | 61 Actually, the Unix Philosophy describes what is common to typical Unix software. |
62 The Wikipedia has an accurate definition: | 62 The Wikipedia has an accurate definition: |
63 .[ | 63 .[ |
64 %A Wikipedia | 64 wikipedia |
65 %T Unix philosophy | 65 unix philosophy |
66 %P Wikipedia, The Free Encyclopedia | |
67 %D 2010-03-21 17:20 UTC | |
68 %O .CW \s-1http://en.wikipedia.org/w/index.php?title=Unix_philosophy&oldid=351189719 | |
69 .] | 66 .] |
70 .QP | 67 .QP |
71 .ps -1 | 68 .ps -1 |
72 The \fIUnix philosophy\fP is a set of cultural norms and philosophical | 69 The \fIUnix philosophy\fP is a set of cultural norms and philosophical |
73 approaches to developing software based on the experience of leading | 70 approaches to developing software based on the experience of leading |
77 several people have stated their view on what it comprises. | 74 several people have stated their view on what it comprises. |
78 Best known are: | 75 Best known are: |
79 .IP \(bu | 76 .IP \(bu |
80 Doug McIlroy's summary: ``Write programs that do one thing and do it well.'' | 77 Doug McIlroy's summary: ``Write programs that do one thing and do it well.'' |
81 .[ | 78 .[ |
82 %A M. D. McIlroy | 79 mahoney |
83 %A E. N. Pinson | 80 oral history |
84 %A B. A. Taque | |
85 %T UNIX Time-Sharing System Forward | |
86 %J The Bell System Technical Journal | |
87 %D 1978 | |
88 %V 57 | |
89 %N 6 | |
90 %P 1902 | |
91 .] | 81 .] |
92 .IP \(bu | 82 .IP \(bu |
93 Mike Gancarz' book ``The UNIX Philosophy''. | 83 Mike Gancarz' book ``The UNIX Philosophy''. |
94 .[ | 84 .[ |
95 %A Mike Gancarz | 85 gancarz |
96 %T The UNIX Philosophy | 86 unix philosophy |
97 %D 1995 | |
98 %I Digital Press | |
99 .] | 87 .] |
100 .IP \(bu | 88 .IP \(bu |
101 Eric S. Raymond's book ``The Art of UNIX Programming''. | 89 Eric S. Raymond's book ``The Art of UNIX Programming''. |
102 .[ | 90 .[ |
103 %A Eric S. Raymond | 91 raymond |
104 %T The Art of UNIX Programming | 92 art of unix programming |
105 %D 2003 | |
106 %I Addison-Wesley | |
107 %O .CW \s-1http://www.faqs.org/docs/artu/ | |
108 .] | 93 .] |
109 .LP | 94 .LP |
110 These different views on the Unix Philosophy have much in common. | 95 These different views on the Unix Philosophy have much in common. |
111 Especially, the main concepts are similar in all of them. | 96 Especially, the main concepts are similar in all of them. |
112 McIlroy's definition can surely be called the core of the Unix Philosophy, | 97 McIlroy's definition can surely be called the core of the Unix Philosophy, |
130 .PP | 115 .PP |
131 The question of how to actually write code and how the code should looks | 116 The question of how to actually write code and how the code should looks |
132 like internally, are out of focus here. | 117 like internally, are out of focus here. |
133 ``The Practice of Programming'' by Kernighan and Pike, | 118 ``The Practice of Programming'' by Kernighan and Pike, |
134 .[ | 119 .[ |
135 %A Brian W. Kernighan | 120 kernighan pike |
136 %A Rob Pike | 121 practice of programming |
137 %T The Practice of Programming | |
138 %I Addison-Wesley | |
139 %D 1999 | |
140 .] | 122 .] |
141 is a good book that covers this topic. | 123 is a good book that covers this topic. |
142 Its point of view matches to the one of this paper. | 124 Its point of view matches to the one of this paper. |
143 | 125 |
144 .NH 1 | 126 .NH 1 |
215 but good quality can provide a lot of additional gain, | 197 but good quality can provide a lot of additional gain, |
216 even at places where one never expected it. | 198 even at places where one never expected it. |
217 .PP | 199 .PP |
218 The ISO/IEC 9126-1 standard, part 1, | 200 The ISO/IEC 9126-1 standard, part 1, |
219 .[ | 201 .[ |
220 %I International Organization for Standardization | 202 iso product quality |
221 %T ISO Standard 9126: Software Engineering \(en Product Quality, part 1 | |
222 %C Geneve | |
223 %D 2001 | |
224 .] | 203 .] |
225 defines the quality model as consisting out of: | 204 defines the quality model as consisting out of: |
226 .IP \(bu | 205 .IP \(bu |
227 .I Functionality | 206 .I Functionality |
228 (suitability, accuracy, inter\%operability, security) | 207 (suitability, accuracy, inter\%operability, security) |
334 When, in the early seventies, Doug McIlroy introduced pipes for the | 313 When, in the early seventies, Doug McIlroy introduced pipes for the |
335 Unix system, | 314 Unix system, |
336 ``it was this concept and notation for linking several programs together | 315 ``it was this concept and notation for linking several programs together |
337 that transformed Unix from a basic file-sharing system to an entirely new way of computing.'' | 316 that transformed Unix from a basic file-sharing system to an entirely new way of computing.'' |
338 .[ | 317 .[ |
339 %T Unix: An Oral History | 318 aughenbaugh |
340 %O .CW \s-1http://www.princeton.edu/~hos/frs122/unixhist/finalhis.htm | 319 unix oral history |
341 .] | 320 .] |
342 .PP | 321 .PP |
343 Being able to specify pipelines in an easy way is, | 322 Being able to specify pipelines in an easy way is, |
344 however, not enough by itself. | 323 however, not enough by itself. |
345 It is only one half. | 324 It is only one half. |
389 Hence, the Unix Philosophy discourages programs to demand interactive use. | 368 Hence, the Unix Philosophy discourages programs to demand interactive use. |
390 The behavior of programs should be defined at invocation. | 369 The behavior of programs should be defined at invocation. |
391 This is done by specifying arguments (``command line switches'') to the program call. | 370 This is done by specifying arguments (``command line switches'') to the program call. |
392 Gancarz discusses this topic as ``avoid captive user interfaces''. | 371 Gancarz discusses this topic as ``avoid captive user interfaces''. |
393 .[ | 372 .[ |
394 %A Mike Gancarz | 373 gancarz unix philosophy |
395 %T The UNIX Philosophy | |
396 %I Digital Press | |
397 %D 1995 | |
398 %P 88 ff. | 374 %P 88 ff. |
399 .] | 375 .] |
376 .ds _p ", p. 88 ff. | |
400 .PP | 377 .PP |
401 Non-interactive use is, during development, also an advantage for testing. | 378 Non-interactive use is, during development, also an advantage for testing. |
402 Testing of interactive programs is much more complicated, | 379 Testing of interactive programs is much more complicated, |
403 than testing of non-interactive programs. | 380 than testing of non-interactive programs. |
404 | 381 |
517 and turned into ``real'' programs, written in C, later. | 494 and turned into ``real'' programs, written in C, later. |
518 Building a prototype first is a way to avoid the biggest problems | 495 Building a prototype first is a way to avoid the biggest problems |
519 in application development. | 496 in application development. |
520 Fred Brooks writes in ``No Silver Bullet'': | 497 Fred Brooks writes in ``No Silver Bullet'': |
521 .[ | 498 .[ |
522 %A Frederick P. Brooks, Jr. | 499 brooks |
523 %T No Silver Bullet: Essence and Accidents of Software Engineering | 500 no silver bullet |
524 %B Information Processing 1986, the Proceedings of the IFIP Tenth World Computing Conference | |
525 %E H.-J. Kugler | |
526 %D 1986 | |
527 %P 1069\(en1076 | |
528 %I Elsevier Science B.V. | |
529 %C Amsterdam, The Netherlands | |
530 .] | 501 .] |
531 .QP | 502 .QP |
532 .ps -1 | 503 .ps -1 |
533 The hardest single part of building a software system is deciding precisely what to build. | 504 The hardest single part of building a software system is deciding precisely what to build. |
534 No other part of the conceptual work is so difficult as establishing the detailed | 505 No other part of the conceptual work is so difficult as establishing the detailed |
611 compiled program this way. | 582 compiled program this way. |
612 Its lifetime begins with the initial prototype and ends when the software is not used anymore. | 583 Its lifetime begins with the initial prototype and ends when the software is not used anymore. |
613 While being alive it will get extended, rearranged, rebuilt (from scratch). | 584 While being alive it will get extended, rearranged, rebuilt (from scratch). |
614 Growing software matches the view that ``software is never finished. It is only released.'' | 585 Growing software matches the view that ``software is never finished. It is only released.'' |
615 .[ | 586 .[ |
616 %O FIXME | 587 gancarz |
617 %A Mike Gancarz | 588 unix philosophy |
618 %T The UNIX Philosophy | |
619 %P 26 | 589 %P 26 |
620 .] | 590 .] |
621 .PP | 591 .PP |
622 Software can be seen as being controlled by evolutionary processes. | 592 Software can be seen as being controlled by evolutionary processes. |
623 Successful software is software that is used by many for a long time. | 593 Successful software is software that is used by many for a long time. |
624 This implies that the software is needed, useful, and better than alternatives. | 594 This implies that the software is needed, useful, and better than alternatives. |
625 Darwin talks about: ``The survival of the fittest.'' | 595 Darwin talks about: ``The survival of the fittest.'' |
626 .[ | 596 .[ |
627 %O FIXME | 597 darwin |
628 %A Charles Darwin | 598 origin of species |
629 .] | 599 .] |
630 Transferred to software: The most successful software, is the fittest, | 600 Transferred to software: The most successful software, is the fittest, |
631 is the one that survives. | 601 is the one that survives. |
632 (This may be at the level of one creature, or at the level of one species.) | 602 (This may be at the level of one creature, or at the level of one species.) |
633 The fitness of software is affected mainly by four properties: | 603 The fitness of software is affected mainly by four properties: |
678 Being too specific limits the range of uses. | 648 Being too specific limits the range of uses. |
679 Requirements change through time, thus use cases change or even vanish. | 649 Requirements change through time, thus use cases change or even vanish. |
680 A good example in this point is Allman's sendmail. | 650 A good example in this point is Allman's sendmail. |
681 Allman identifies flexibility to be one major reason for sendmail's success: | 651 Allman identifies flexibility to be one major reason for sendmail's success: |
682 .[ | 652 .[ |
683 %O FIXME | 653 allman |
684 %A Allman | 654 sendmail |
685 %T sendmail | |
686 .] | 655 .] |
687 .QP | 656 .QP |
688 .ps -1 | 657 .ps -1 |
689 Second, I limited myself to the routing function [...]. | 658 Second, I limited myself to the routing function [...]. |
690 This was a departure from the dominant thought of the time, [...]. | 659 This was a departure from the dominant thought of the time, [...]. |
760 .LP | 729 .LP |
761 Electronic mail was available in Unix very early. | 730 Electronic mail was available in Unix very early. |
762 The first \s-1MUA\s0 on Unix was \f(CWmail\fP, | 731 The first \s-1MUA\s0 on Unix was \f(CWmail\fP, |
763 which was already present in the First Edition. | 732 which was already present in the First Edition. |
764 .[ | 733 .[ |
765 %A Peter H. Salus | 734 salus |
766 %T A Quarter Century of UNIX | 735 quarter century of unix |
767 %D 1994 | |
768 %I Addison-Wesley | |
769 %P 41 f. | 736 %P 41 f. |
770 .] | 737 .] |
771 It was a small program that either prints the user's mailbox file | 738 It was a small program that either prints the user's mailbox file |
772 or appends text to someone elses mailbox file, | 739 or appends text to someone elses mailbox file, |
773 depending on the command line arguments. | 740 depending on the command line arguments. |
774 .[ | 741 .[ |
775 %O http://cm.bell-labs.com/cm/cs/who/dmr/pdfs/man12.pdf | 742 manual mail(1) |
776 .] | 743 .] |
777 It was a program that did one job well. | 744 It was a program that did one job well. |
778 This job was emailing, which was very simple then. | 745 This job was emailing, which was very simple then. |
779 .PP | 746 .PP |
780 Later, emailing became more powerful, and thus more complex. | 747 Later, emailing became more powerful, and thus more complex. |
787 several jobs. | 754 several jobs. |
788 Its user interface is modeled after the one of \fIed\fP. | 755 Its user interface is modeled after the one of \fIed\fP. |
789 It is designed for humans, but is still scriptable. | 756 It is designed for humans, but is still scriptable. |
790 \fImailx\fP is the adaptation of Berkeley Mail into System V. | 757 \fImailx\fP is the adaptation of Berkeley Mail into System V. |
791 .[ | 758 .[ |
792 %A Gunnar Ritter | 759 ritter |
793 %O http://heirloom.sourceforge.net/mailx_history.html | 760 mailx history |
794 .] | 761 .] |
795 Elm, pine, mutt, and a whole bunch of graphical \s-1MUA\s0s | 762 Elm, pine, mutt, and a whole bunch of graphical \s-1MUA\s0s |
796 followed Mail's direction. | 763 followed Mail's direction. |
797 They are large, monolithic programs which include all emailing functions. | 764 They are large, monolithic programs which include all emailing functions. |
798 .PP | 765 .PP |
812 Richard Coleman started with \fInmh\fP, the new mail handler. | 779 Richard Coleman started with \fInmh\fP, the new mail handler. |
813 His goal was to improve \s-1MH\s0, especially in regard of | 780 His goal was to improve \s-1MH\s0, especially in regard of |
814 the requirements of modern emailing. | 781 the requirements of modern emailing. |
815 Today, nmh is developed by various people on the Internet. | 782 Today, nmh is developed by various people on the Internet. |
816 .[ | 783 .[ |
817 %T RAND and the Information Evolution: A History in Essays and Vignettes | 784 ware |
818 %A Willis H. Ware | 785 rand history |
819 %D 2008 | 786 %P 128-137 |
820 %I The RAND Corporation | 787 .] |
821 %P 128\(en137 | 788 .[ |
822 %O .CW \s-1http://www.rand.org/pubs/corporate_pubs/CP537/ | 789 peek |
823 .] | 790 mh |
824 .[ | |
825 %T MH & xmh: Email for Users & Programmers | |
826 %A Jerry Peek | |
827 %D 1991, 1992, 1995 | |
828 %I O'Reilly & Associates, Inc. | |
829 %P Appendix B | |
830 %O Also available online: \f(CW\s-2http://rand-mh.sourceforge.net/book/\fP | |
831 .] | 791 .] |
832 | 792 |
833 .NH 2 | 793 .NH 2 |
834 Contrasts to monolithic mail systems | 794 Contrasts to monolithic mail systems |
835 .XS | 795 .XS |
947 \s-1MH\s0's context is independent. | 907 \s-1MH\s0's context is independent. |
948 Usually there is one context for each user, but a user can have many | 908 Usually there is one context for each user, but a user can have many |
949 contexts. | 909 contexts. |
950 Public sequences are an exception, as they belong to the mail folder. | 910 Public sequences are an exception, as they belong to the mail folder. |
951 .[ | 911 .[ |
952 %O mh-profile(5) and mh-sequence(5) | 912 man page mh-profile mh-sequence |
953 .] | 913 .] |
954 | 914 |
955 .NH 2 | 915 .NH 2 |
956 Discussion of the design | 916 Discussion of the design |
957 .XS | 917 .XS |
967 .B "do one thing well | 927 .B "do one thing well |
968 are two design goals that are directly visible in \s-1MH\s0. | 928 are two design goals that are directly visible in \s-1MH\s0. |
969 Gancarz actually presents \s-1MH\s0 as example under the headline | 929 Gancarz actually presents \s-1MH\s0 as example under the headline |
970 ``Making UNIX Do One Thing Well'': | 930 ``Making UNIX Do One Thing Well'': |
971 .[ | 931 .[ |
972 %A Mike Gancarz | 932 gancarz |
973 %T unix-phil | 933 unix philosophy |
974 %P 125 | 934 %P 125 |
975 .] | 935 .] |
976 .QP | 936 .QP |
977 .ps -1 | 937 .ps -1 |
978 [\s-1MH\s0] consists of a series of programs which | 938 [\s-1MH\s0] consists of a series of programs which |
1033 and | 993 and |
1034 .B "use shell scripts to increase leverage and portability" . | 994 .B "use shell scripts to increase leverage and portability" . |
1035 These two tenets are indirectly, but nicely, demonstrated by | 995 These two tenets are indirectly, but nicely, demonstrated by |
1036 Bolsky and Korn in their book about the Korn Shell. | 996 Bolsky and Korn in their book about the Korn Shell. |
1037 .[ | 997 .[ |
1038 %T The KornShell: command and programming language | 998 bolsky korn |
1039 %A Morris I. Bolsky | 999 korn shell |
1040 %A David G. Korn | |
1041 %I Prentice Hall | |
1042 %D 1989 | |
1043 %P 254\(en290 | |
1044 %O \s-1ISBN\s0: 0-13-516972-0 | |
1045 .] | 1000 .] |
1046 They demonstrated, in chapter 18 of the book, a basic implementation | 1001 They demonstrated, in chapter 18 of the book, a basic implementation |
1047 of a subset of \s-1MH\s0 in ksh scripts. | 1002 of a subset of \s-1MH\s0 in ksh scripts. |
1048 Of course, this was just a demonstration, but a brilliant one. | 1003 Of course, this was just a demonstration, but a brilliant one. |
1049 It shows how quickly one can implement such a prototype with shell scripts, | 1004 It shows how quickly one can implement such a prototype with shell scripts, |
1126 But without following this guideline at the very beginning, | 1081 But without following this guideline at the very beginning, |
1127 Bruce Borden may have not convinced the management of \s-1RAND\s0 | 1082 Bruce Borden may have not convinced the management of \s-1RAND\s0 |
1128 to ever create \s-1MH\s0. | 1083 to ever create \s-1MH\s0. |
1129 In Bruce' own words: | 1084 In Bruce' own words: |
1130 .[ | 1085 .[ |
1131 %O FIXME | 1086 ware rand history |
1087 %P 132 | |
1132 .] | 1088 .] |
1133 .QP | 1089 .QP |
1134 .ps -1 | 1090 .ps -1 |
1135 [...] but they [Stockton Gaines and Norm Shapiro] were not able | 1091 [...] but they [Stockton Gaines and Norm Shapiro] were not able |
1136 to convince anyone that such a system would be fast enough to be usable. | 1092 to convince anyone that such a system would be fast enough to be usable. |
1228 .XS | 1184 .XS |
1229 \*(SN Historical background | 1185 \*(SN Historical background |
1230 .XE | 1186 .XE |
1231 .LP | 1187 .LP |
1232 Uzbl was started by Dieter Plaetinck in April 2009. | 1188 Uzbl was started by Dieter Plaetinck in April 2009. |
1233 The idea was born in a thread in the Arch Linux forum. | 1189 The idea was born in a thread in the Arch Linux Forums. |
1234 .[ | 1190 .[ |
1235 %O http://bbs.archlinux.org/viewtopic.php?id=67463 | 1191 arch linux forums |
1192 browser | |
1236 .] | 1193 .] |
1237 After some discussion about failures of well known web browsers, | 1194 After some discussion about failures of well known web browsers, |
1238 Plaetinck (alias Dieter@be) came up with a very sketchy proposal | 1195 Plaetinck (alias Dieter@be) came up with a very sketchy proposal |
1239 of how a better web browser could look like. | 1196 of how a better web browser could look like. |
1240 To the question of another member, if Plaetinck would write that program, | 1197 To the question of another member, if Plaetinck would write that program, |
1469 Actually, all development was community driven. | 1426 Actually, all development was community driven. |
1470 Plaetinck says, three months after uzbl's birth: | 1427 Plaetinck says, three months after uzbl's birth: |
1471 ``Right now I hardly code anything myself for Uzbl. | 1428 ``Right now I hardly code anything myself for Uzbl. |
1472 I just merge in other people's code, ponder a lot, and lead the discussions.'' | 1429 I just merge in other people's code, ponder a lot, and lead the discussions.'' |
1473 .[ | 1430 .[ |
1474 %A FIXME | 1431 lwn |
1475 %O http://lwn.net/Articles/341245/ | 1432 uzbl |
1476 .] | 1433 .] |
1477 | 1434 |
1478 | 1435 |
1479 .NH 2 | 1436 .NH 2 |
1480 Problems | 1437 Problems |