# HG changeset patch # User meillo@marmaro.de # Date 1271074299 -7200 # Node ID b6ae4a8ab1d3faa85935bbe3cfe70bb3bb946ab6 # Parent 98a1446744c741fb791c63237ec38a20d4392aaa improved references and some minor design issues diff -r 98a1446744c7 -r b6ae4a8ab1d3 bib --- a/bib Mon Apr 12 10:52:59 2010 +0200 +++ b/bib Mon Apr 12 14:11:39 2010 +0200 @@ -43,6 +43,14 @@ %L Brooks %A Frederick P. Brooks, Jr. +%T The Mythical Man-Month: Essays on Software Engineering +%D 1995 +%V Anniversary Edition +%I Addison Wesley Longman, Inc. +%O \s-1ISBN\s0: 0-201-83595-9 + +%L Brooks +%A Frederick P. Brooks, Jr. %T No Silver Bullet: Essence and Accidents of Software Engineering %B Information Processing 1986, the Proceedings of the IFIP Tenth World Computing Conference %D 1986 @@ -73,7 +81,8 @@ %A Ken Thompson %A Dennis M. Ritchie -%T Unix Programmer's Manual, First Edition +%T Unix Programmer's Manual +%V First Edition %D 1971-11-03 %P mail(1) %O Online: \f(CW\s-1 http://cm.bell-labs.com/cm/cs/who/dmr/pdfs/man12.pdf @@ -124,3 +133,17 @@ %D 2009-07-15 %I LWN.net %O Online: \f(CW\s-1 http://lwn.net/Articles/341245/ + +%L nmh +%T Website of nmh +%O Online: \f(CW\s-1 http://nmh.nongnu.org + +%L uzbl +%T Website of uzbl +%O Online: \f(CW\s-1 http://uzbl.org + +%A DigDuality (posted by timothy) +%T Meet Uzbl \(en a Web Browser With the Unix Philosophy +%I Slashdot +%D 2009-09-05 +%O Online: \f(CW\s-1 http://linux.slashdot.org/story/09/09/05/2142235 diff -r 98a1446744c7 -r b6ae4a8ab1d3 unix-phil.ms --- a/unix-phil.ms Mon Apr 12 10:52:59 2010 +0200 +++ b/unix-phil.ms Mon Apr 12 14:11:39 2010 +0200 @@ -1,6 +1,7 @@ .nr PS 11 .nr VS 13 .nr lu 0 + .de CW .nr PQ \\n(.f .if t .ft CW @@ -11,6 +12,7 @@ .if n .if \\n(.$>1 \&\\$1\c .if n .if \\n(.$>1 \&\\$2 .. + .ds [. \ [ .ds .] ] @@ -26,6 +28,11 @@ .ps -1 .. +.am DS +.CW +.ps -1 +.. + .\"---------------------------------------- .TL @@ -45,8 +52,8 @@ .FS .ps -1 This paper was prepared for the ``Software Analysis'' seminar at University Ulm. -Mentor was professor Schweiggert. 2010-04-05 -.br +Mentor was professor Franz Schweiggert. +Handed in on 2010-04-12. You may retrieve this document from .CW \s-1http://marmaro.de/docs \ . .FE @@ -54,6 +61,8 @@ .NH 1 Introduction .XS +.sp .5v +.B \*(SN Introduction .XE .LP @@ -130,6 +139,7 @@ Importance of software design in general .XS .sp .5v +.B \*(SN Importance of software design in general .XE .LP @@ -245,6 +255,7 @@ The Unix Philosophy .XS .sp .5v +.B \*(SN The Unix Philosophy .XE .LP @@ -263,8 +274,6 @@ .PP Counting the number of files in the current directory: .DS -.CW -.ps -1 ls | wc -l .DE The @@ -276,8 +285,6 @@ .PP Counting the number of files that do not contain ``foo'' in their name: .DS -.CW -.ps -1 ls | grep -v foo | wc -l .DE Here, the list of files is filtered by @@ -287,8 +294,6 @@ .PP Finding the five largest entries in the current directory. .DS -.CW -.ps -1 du -s * | sort -nr | sed 5q .DE .CW "du -s * @@ -442,8 +447,6 @@ A wrapper script for finding the five largest entries in the current directory could look like this: .DS -.CW -.ps -1 #!/bin/sh du -s * | sort -nr | sed 5q .DE @@ -452,8 +455,6 @@ It is probably worth to make the program flexible on the number of entries it prints: .DS -.CW -.ps -1 #!/bin/sh num=5 [ $# -eq 1 ] && num="$1" @@ -513,6 +514,10 @@ .PP Writing a prototype is a great method for becoming familiar with the requirements and to run into real problems early. +.[ [ +gancarz +unix philosophy +.], page 28 f.] .PP Prototyping is often seen as a first step in building a software. This is, of course, good. @@ -534,7 +539,7 @@ .LP The Unix Philosophy aims for the 90% solution; others call it the ``Worse is better'' approach. -Practical experience shows, that: +Experience from real life projects shows: .PP (1) It is almost never possible to define the requirements completely and correctly the first time. @@ -552,6 +557,12 @@ Software parts that will be written in future, do not need maintenance till then. .PP +See Brooks' ``The Mythical Man-Month'' for reference. +.[ [ +brooks +mythical man-month +.], page 115 ff.] +.PP Starting with a prototype in a scripting language has several advantages: .IP \(bu As the initial effort is low, one will likely start right away. @@ -608,26 +619,21 @@ (This may be at the level of one creature, or at the level of one species.) The fitness of software is affected mainly by four properties: portability of code, portability of data, range of usability, and reusability of parts. -.\" .IP \(bu -.\" portability of code -.\" .IP \(bu -.\" portability of data -.\" .IP \(bu -.\" range of usability -.\" .IP \(bu -.\" reuseability of parts .PP (1) .I "Portability of code means, using high-level programming languages, sticking to the standard, +.[ [ +kernighan pike +practice of programming +.], chapter\|8] and avoiding optimizations that introduce dependencies on specific hardware. Hardware has a much lower lifetime than software. By chaining software to a specific hardware, the software's lifetime gets shortened to that of this hardware. In contrast, software should be easy to port \(en adaptation is the key to success. -.\" cf. practice of prog: ch08 .PP (2) .I "Portability of data @@ -641,7 +647,10 @@ Apart from being able to transfer data between machines, readable data has the great advantage, that humans are able to directly read and edit it with text editors and other tools from the Unix toolchest. -.\" gancarz tenet 5 +.[ [ +gancarz +unix philosophy +.], page 56 ff.] .PP (3) A large @@ -705,6 +714,7 @@ Case study: \s-1MH\s0 .XS .sp .5v +.B \*(SN Case study: \s-1MH\s0 .XE .LP @@ -718,6 +728,9 @@ This first case study is about the mail user agents (\s-1MUA\s0) \s-1MH\s0 (``mail handler'') and its descendent \fInmh\fP (``new mail handler''). +.[ +nmh website +.] \s-1MUA\s0s provide functions to read, compose, and organize mail, but (ideally) not to transfer it. In this document, the name \s-1MH\s0 will be used to include nmh. @@ -1052,7 +1065,6 @@ To use the format as default for \f(CWscan\fP, a single line, reading .DS -.CW scan: -form FORMATFILE .DE must be added to \f(CW.mh_profile\fP. @@ -1168,6 +1180,7 @@ Case study: uzbl .XS .sp .5v +.B \*(SN Case study: uzbl .XE .LP @@ -1200,20 +1213,35 @@ Fortunately, he found the time. One day later, the first prototype was out. One week later, uzbl had an own website. +.[ +uzbl website +.] One month after the first code showed up, -a mailing list was installed to coordinate and discuss further development. -Then a wiki followed to store documentation and scripts that showed up on the +a mailing list was installed to coordinate and discuss further development, +and a wiki was added to store documentation and scripts that showed up on the mailing list and elsewhere. .PP In the, now, one year of uzbl's existence, it was heavily developed on various branches. Plaetinck's task became more and more to only merge the best code from the different branches into his main branch, and to apply patches. +.[ +lwn uzbl +.] About once a month, Plaetinck released a new version. In September 2009, he presented several forks of uzbl. +.[ [ +uzbl website +.], news archive] Uzbl, actually, opened the field for a whole family of web browsers with similar shape. .PP In July 2009, \fILinux Weekly News\fP published an interview with Plaetinck about uzbl. +.[ +lwn uzbl +.] In September 2009, the uzbl web browser was on \fISlashdot\fP. +.[ +slashdot uzbl +.] .NH 2 Contrasts to other web browsers @@ -1240,7 +1268,6 @@ and on stdin, and it writes events to a Unix socket and to stdout. Loading a webpage in a running uzbl instance requires only: .DS -.CW echo 'uri http://example.org' >/path/to/uzbl-fifo .DE The graphical rendering of the webpage is done by webkit, @@ -1340,7 +1367,6 @@ whenever the event of a fully loaded page occurs. The script to append the entry to the history is not much more than: .DS -.CW #!/bin/sh file=/path/to/uzbl-history echo `date +'%Y-%m-%d %H:%M:%S'`" $6 $7" >> $file @@ -1354,7 +1380,6 @@ With error checking and corner case handling removed, the script looks like this: .DS -.CW #!/bin/sh file=/path/to/uzbl-history goto=`tac $file | dmenu | cut -d' ' -f 3` @@ -1496,6 +1521,7 @@ Final thoughts .XS .sp .5v +.B \*(SN Final thoughts .XE @@ -1519,7 +1545,17 @@ .LP Make the right choice! -.nr PI .3i + +.bp +.TL +References +.LP +.XS +.sp .5v +.B +References +.XE +.ev r .rm ]< .de ]< .LP @@ -1528,23 +1564,17 @@ \\.. .rm FS FE .. -.ds CH " -.bp -.rs -.sp .3i -.TL -References -.LP -.XS -.sp .5v -References -.XE -.sp 2v .nr PS -1 .nr VS -1 .[ $LIST$ .] -.\".wh -1p +.nr PS +1 +.nr VS +1 +.ev + .bp -.PX +.TL +Table of Contents +.LP +.PX no