docs/unix-phil

diff unix-phil.ms @ 54:0a435d76b868

applied corrections by Dieter@be; and did spell checking
author meillo@marmaro.de
date Thu, 15 Apr 2010 13:53:12 +0200
parents 14f5ff66ad8a
children acd63ecc3606
line diff
     1.1 --- a/unix-phil.ms	Thu Apr 15 12:30:25 2010 +0200
     1.2 +++ b/unix-phil.ms	Thu Apr 15 13:53:12 2010 +0200
     1.3 @@ -97,7 +97,7 @@
     1.4  .H 1 "Importance of software design in general
     1.5  .LP
     1.6  Software design is the planning of how the internal structure
     1.7 -and external interfaces of a software should look like.
     1.8 +and external interfaces of software should look like.
     1.9  It has nothing to do with visual appearance.
    1.10  If we take a program as a car, then its color is of no matter.
    1.11  Its design would be the car's size, its shape, the locations of doors,
    1.12 @@ -113,7 +113,7 @@
    1.13  Often invisible though, are the wasted possible gains.
    1.14  Good software design can make these gains available.
    1.15  .PP
    1.16 -A software's design deals with quality properties.
    1.17 +Software design deals with quality properties.
    1.18  Good design leads to good quality, and quality is important.
    1.19  Any car may be able to drive from A to B,
    1.20  but it depends on the car's properties whether it is a good choice
    1.21 @@ -123,7 +123,7 @@
    1.22  And it depends on its properties if the ride will be fun.
    1.23  
    1.24  .PP
    1.25 -Requirements for a software are twofold:
    1.26 +Requirements for software are twofold:
    1.27  functional and non-functional.
    1.28  .IP \(bu
    1.29  Functional requirements define directly the software's functions.
    1.30 @@ -134,20 +134,20 @@
    1.31  Functional requirements are easier to define and to verify.
    1.32  .IP \(bu
    1.33  Non-functional requirements are called \fIquality\fP requirements, too.
    1.34 -The quality of a software are the properties that are not directly related to
    1.35 +The quality of software are the properties that are not directly related to
    1.36  the software's basic functions.
    1.37  Tools of bad quality often do solve the problems they were written for,
    1.38  but introduce problems and difficulties for usage and development, later on.
    1.39  Quality aspects are often overlooked at first sight,
    1.40  and are often difficult to define clearly and to verify.
    1.41  .PP
    1.42 -Quality is hardly interesting when the software gets built initially,
    1.43 -but it has a high impact on usability and maintenance of the software, later.
    1.44 -A short-sighted might see in developing a software, mainly building something up.
    1.45 -But experience shows, that building the software the first time is
    1.46 +Quality is hardly interesting when software gets built initially,
    1.47 +but it has a high impact on usability and maintenance, later.
    1.48 +A short-sighted might see in developing software, mainly building something up.
    1.49 +But experience shows, that building software the first time is
    1.50  only a small amount of the overall work.
    1.51  Bug fixing, extending, rebuilding of parts \(en maintenance work \(en
    1.52 -does soon take over the major part of the time spent on a software.
    1.53 +does soon take over the major part of the time spent on a software project.
    1.54  And of course, the time spent actually using the software.
    1.55  These processes are highly influenced by the software's quality.
    1.56  Thus, quality must not be neglected.
    1.57 @@ -155,11 +155,11 @@
    1.58  bad quality during the first build,
    1.59  although this is the time when you should care about good quality most.
    1.60  .PP
    1.61 -Software design has little to do with the basic function of a software \(en
    1.62 +Software design has little to do with the basic function of software \(en
    1.63  this requirement will get satisfied anyway.
    1.64 -Software design is more about quality aspects of the software.
    1.65 +Software design is more about quality aspects of software.
    1.66  Good design leads to good quality, bad design to bad quality.
    1.67 -The primary functions of the software will be affected modestly by bad quality,
    1.68 +The primary functions of software will be affected modestly by bad quality,
    1.69  but good quality can provide a lot of additional gain,
    1.70  even at places where one never expected it.
    1.71  .PP
    1.72 @@ -187,7 +187,7 @@
    1.73  .I Portability
    1.74  (adaptability, installability, co-existence, replaceability)
    1.75  .LP
    1.76 -Good design can improve these properties of a software,
    1.77 +Good design can improve these properties of software,
    1.78  bad designed software likely suffers in these points.
    1.79  .PP
    1.80  One further goal of software design is consistency.
    1.81 @@ -196,7 +196,7 @@
    1.82  can be provided by good design.
    1.83  .PP
    1.84  Software should be well designed because good design avoids many
    1.85 -problems during a software's lifetime.
    1.86 +problems during a software project's lifetime.
    1.87  And software should be well designed because good design can offer
    1.88  much additional gain.
    1.89  Indeed, much effort should be spent into good design to make software more valuable.
    1.90 @@ -333,7 +333,7 @@
    1.91  .PP
    1.92  The Unix toolchest \fIis\fP a set of small, (mostly) non-interactive programs
    1.93  that are filters on byte streams.
    1.94 -They are, to a large extend, unrelated in their function.
    1.95 +They are, to a large extent, unrelated in their function.
    1.96  Hence, the Unix toolchest provides a large set of functions
    1.97  that can be accessed by combining the programs in the desired way.
    1.98  .PP
    1.99 @@ -361,7 +361,7 @@
   1.100  A toolchest is often more difficult to use.
   1.101  It is necessary to become familiar with each of the tools,
   1.102  to be able to use the right one in a given situation.
   1.103 -Additionally, one needs to combine the tools in a senseful way himself.
   1.104 +Additionally, one needs to combine the tools in a sensible way himself.
   1.105  This is like a sharp knife \(en it is a powerful tool in the hand of a
   1.106  master, but of no good value in the hand of an unskilled.
   1.107  However, learning single, small tools of a toolchest is easier than
   1.108 @@ -370,7 +370,7 @@
   1.109  if the tools of a toolchest have a common, consistent style.
   1.110  He will be able to transfer knowledge over from one tool to another.
   1.111  .PP
   1.112 -Moreover, the second drawback can be removed to a large extend
   1.113 +Moreover, the second drawback can be removed to a large extent
   1.114  by adding wrappers around the basic tools.
   1.115  Novice users do not need to learn several tools, if a professional wraps
   1.116  complete command lines into a higher-level script.
   1.117 @@ -406,7 +406,7 @@
   1.118  The Unix shell provides the possibility to combine small programs into large ones.
   1.119  But a powerful shell is a great feature in other ways, too.
   1.120  For instance by being scriptable.
   1.121 -Control statements are build into the shell.
   1.122 +Control statements are built into the shell.
   1.123  The functions, however, are the normal programs of the system.
   1.124  Thus, as the programs are already known,
   1.125  learning to program in the shell becomes easy.
   1.126 @@ -450,7 +450,7 @@
   1.127  unix philosophy
   1.128  .], page 28 f.]
   1.129  .PP
   1.130 -Prototyping is often seen as a first step in building a software.
   1.131 +Prototyping is often seen as a first step in building software.
   1.132  This is, of course, good.
   1.133  However, the Unix Philosophy has an \fIadditional\fP perspective on prototyping:
   1.134  After having built the prototype, one might notice, that the prototype is already
   1.135 @@ -474,7 +474,7 @@
   1.136  .PP
   1.137  (2) Requirements change during time.
   1.138  Hence it is best to delay requirement-based design decisions as long as possible.
   1.139 -The software should be small and flexible as long as possible
   1.140 +Software should be small and flexible as long as possible
   1.141  to react on changing requirements.
   1.142  Shell scripts, for example, are more easily adjusted as C programs.
   1.143  .PP
   1.144 @@ -496,7 +496,7 @@
   1.145  .IP \(bu
   1.146  As working parts are available soon, the real requirements can get identified soon.
   1.147  .IP \(bu
   1.148 -When a software is usable and valuable, it gets used, and thus tested.
   1.149 +When software is usable and valuable, it gets used, and thus tested.
   1.150  Hence problems will be found at early stages of the development.
   1.151  .IP \(bu
   1.152  The prototype might be enough for the moment,
   1.153 @@ -554,7 +554,7 @@
   1.154  and avoiding optimizations that introduce dependencies on specific hardware.
   1.155  Hardware has a much lower lifetime than software.
   1.156  By chaining software to a specific hardware,
   1.157 -the software's lifetime gets shortened to that of this hardware.
   1.158 +its lifetime gets shortened to that of this hardware.
   1.159  In contrast, software should be easy to port \(en
   1.160  adaptation is the key to success.
   1.161  .PP
   1.162 @@ -579,7 +579,7 @@
   1.163  A large
   1.164  .I "range of usability
   1.165  ensures good adaptation, and thus good survival.
   1.166 -It is a special distinction if a software becomes used in fields of action,
   1.167 +It is a special distinction if software becomes used in fields of action,
   1.168  the original authors did never imagine.
   1.169  Software that solves problems in a general way will likely be used
   1.170  for many kinds of similar problems.
   1.171 @@ -603,10 +603,10 @@
   1.172  (4)
   1.173  .I "Reuse of parts
   1.174  is even one step further.
   1.175 -A software may completely lose its field of action,
   1.176 -but parts of which the software is build may be general and independent enough
   1.177 +Software may completely lose its field of action,
   1.178 +but parts of which the software is built may be general and independent enough
   1.179  to survive this death.
   1.180 -If software is build by combining small independent programs,
   1.181 +If software is built by combining small independent programs,
   1.182  then these parts are readily available for reuse.
   1.183  Who cares if the large program is a failure,
   1.184  but parts of it become successful instead?
   1.185 @@ -639,7 +639,7 @@
   1.186  the driving force in the discussion.
   1.187  .PP
   1.188  This first case study is about the mail user agents (\s-1MUA\s0)
   1.189 -\s-1MH\s0 (``mail handler'') and its descendent \fInmh\fP
   1.190 +\s-1MH\s0 (``mail handler'') and its descendant \fInmh\fP
   1.191  (``new mail handler'').
   1.192  .[
   1.193  nmh website
   1.194 @@ -661,7 +661,7 @@
   1.195  quarter century of unix
   1.196  .], page 41 f.]
   1.197  It was a small program that either printed the user's mailbox file
   1.198 -or appended text to someone elses mailbox file,
   1.199 +or appended text to someone else's mailbox file,
   1.200  depending on the command line arguments.
   1.201  .[
   1.202  manual mail(1)
   1.203 @@ -1026,7 +1026,7 @@
   1.204  This comes from limited development resources.
   1.205  More active developers could quickly change this.
   1.206  But \s-1MH\s0 is also limited by design, which is the larger problem.
   1.207 -\s-1IMAP\s0, for example, conflicts with \s-1MH\s0's design to a large extend.
   1.208 +\s-1IMAP\s0, for example, conflicts with \s-1MH\s0's design to a large extent.
   1.209  These design conflicts are not easily solvable.
   1.210  Possibly, they require a redesign.
   1.211  \s-1IMAP\s0 may be too different to the classic mail model,
   1.212 @@ -1192,10 +1192,10 @@
   1.213  This means, navigating through websites by following links.
   1.214  Rendering the \s-1HTML\s0 sources is a different job, too.
   1.215  It is covered by the webkit render engine, in uzbl's case.
   1.216 -Audio and video content and files like PostScript, \s-1PDF\s0, and the like,
   1.217 -are also not the job of a web browser.
   1.218 -They should be handled by external applications \(en
   1.219 -ones which's job is to handle such data.
   1.220 +Audio and video content and files like PostScript, \s-1PDF\s0,
   1.221 +and the like, are also not the job of a web browser.
   1.222 +Such content should be handled by external programs \(en
   1.223 +programs that were written to handle such data.
   1.224  Uzbl strives to do it this way.
   1.225  .PP
   1.226  Remember Doug McIlroy:
   1.227 @@ -1223,6 +1223,8 @@
   1.228  needs to be changed.
   1.229  Alternatively it would be possible to query the program to use by
   1.230  reading a global file or an environment variable, in the handler script.
   1.231 +Of course, one can tell uzbl to use a different handler script, too.
   1.232 +This requires a one line change in uzbl's config file.
   1.233  .PP
   1.234  Uzbl does neither have its own download manager nor depends on a
   1.235  specific one, hence uzbl's browsing abilities will not be lowered by having
   1.236 @@ -1266,7 +1268,7 @@
   1.237  
   1.238  .PP
   1.239  .B "Avoid captive user interfaces" .
   1.240 -One could say, that uzbl, to a large extend, actually \fIis\fP
   1.241 +One could say, that uzbl, to a large extent, actually \fIis\fP
   1.242  a captive user interface.
   1.243  But the difference to most other web browsers is, that uzbl is only
   1.244  the captive user interface frontend (and the core of the backend).
   1.245 @@ -1305,9 +1307,9 @@
   1.246  The distribution includes another 3\,500 lines of Shell and Python code,
   1.247  which are the handler scripts and plugins like a modal interface.
   1.248  Further more, uzbl uses functionality of external tools like
   1.249 -\fIwget\fP and \fInetcat\fP.
   1.250 +\fIwget\fP and \fIsocat\fP.
   1.251  Up to this point, uzbl looks pretty neat and small.
   1.252 -The ugly part of uzbl is the web content renderer, webkit.
   1.253 +The ugly part of uzbl is the web content render engine, webkit.
   1.254  Webkit consists of roughly 400\,000 (!) lines of code.
   1.255  Unfortunately, small web render engines are not possible anymore
   1.256  because of the modern web.
   1.257 @@ -1397,7 +1399,7 @@
   1.258  Throughout the paper, the aim was do explain \fIwhy\fP something
   1.259  should be done the Unix way.
   1.260  It was tried to give reasons that expose that the Unix Philosophy
   1.261 -is a preferrable way for designing software.
   1.262 +is a preferable way for designing software.
   1.263  .PP
   1.264  The Unix Philosophy is close to the software developer's point of view.
   1.265  Its main goal is taming the beast ``software complexity''.