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