old-www/LDP/LG/issue22/haters.html

162 lines
7.6 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html><head>
<title>Review: The Unix-Hater's Handbook</title>
</head>
<BODY BGCOLOR="#EEE1CC" TEXT="#000000" LINK="#0000FF" VLINK="#0020F0"
ALINK="#FF0000">
<H4>
&quot;Linux Gazette...<I>making Linux just a little more fun!</I>&quot;
</H4>
<P> <HR> <P>
<!--===================================================================-->
<h2 align="center">Review: The Unix-Hater's Handbook</h2><p>
<h4 align="center">by Andrew Kuchling
<a href="mailto:amk@magnet.com">amk@magnet.com</a></h4>
<P> <HR> <P>
I've written a review of an old (1994-vintage) book that may be of
interest to Linuxers. While even just its title will annoy people,
there actually is material of interest in the book to Linux developers
and proponents.
<p>
Andrew Kuchling<br>
amk@magnet.com<br>
<a href="http://starship.skyport.net/crew/amk/">
http://starship.skyport.net/crew/amk/</a><p>
<hr>
The UNIX-HATERS Handbook (1994)<br>
by Simson Garfinkel, Daniel Weise, and Steven Strassman.<br>
Foreword by Donald Norman<br>
Anti-Forward by Dennis Ritchie.<p>
Summary: A sometimes enraging book for a Linux fan, but there are
valuable insights lurking here.
<p>
In his Anti-Forward to this book, Dennis Ritchie writes "You claim to
seek progress, but you succeed mainly in whining." That's a pretty
accurate assessment of this book; it's one long complaint about work
lost due to crashes, time wasted finding workarounds for bugs, unclear
documentation, and obscure command-line arguments. Similar books
could be written about any operating system. Obviously, I don't
really agree with this book; I wouldn't be using Linux if I did.
However, there is informative material here for people interested in
Linux development, so it's worth some attention.
<p>
The book describes problems and annoyances with Unix; since it
was inspired by a famous mailing list called UNIX-HATERS, there are
lots of real-life horror stores, some hilarious and some wrenching.
The shortcomings described here obviously exist, but in quite a few
cases the problem has been fixed, or rendered irrelevant, by further
development. Two examples:
<p>
* On the Unix file system: "...since most disk drives can
transfer up to 64K bytes in a single burst, advanced file systems
store files in contiguous blocks so they can be read and written in a
single operation ... All of these features have been built and fielded
in commercially offered operating systems. Unix offers none of them."
But the ext2 file system, used on most Linux systems, does do this;
there's nothing preventing the implementation of better filesystems.
<p>
* "Unix offers no built-in system for automatically encrypting
files stored on the hard disk." (Do you know of any operating system
that has such capability out of the box? Can you imagine the
complaints from users who forget their passwords?) Anyway, software
has been written to do this, either as an encrypting NFS server (CFS)
or as a kernel module (the loopback device).
<p>
There are some conclusions that I draw from reading this book:
<p>
First, when the book was written in 1994, the free Unixes
weren't very well known, so the systems described are mostly
commercial ones. Proponents of free software should notice how many
of the problems stem from the proprietary nature of most Unix variants
at the time of writing. The authors point out various bugs and
missing features in shells and utilities, flaws which could be *fixed*
if the source code was available.
<p>
Better solutions sometimes didn't become popular, because they
were owned by companies with no interest in sharing the code. For
example, the book praises journalled file systems such as
the Veritas file system, because they provide faster operation, and are less likely to
lose data when the computer crashes. The authors write, "Will journaling
become prevalent in the Unix world at large? Probably not. After
all, it's nonstandard." More importantly, I think, the file system
was proprietary software, and companies tend to either keep the code
secret (to preserve their competitive advantage), or charge large fees
to license the code (to improve their balance sheets).
<p>
The chapter on the X Window System is devastating and
accurate; X really is an overcomplicated system, and its division
between client and server isn't always optimal. An interesting
solution is suggested; let programs extend the graphics server by
sending it code. This approach was used by Sun's NeWS system, which
used PostScript as the language. Unfortunately NeWS is now quite dead; it was a
proprietary system, after all, and was killed off by X, which was freely available from
MIT. (Trivia: NeWS was designed by James Gosling, who is now
well-known for designing Java. Sun seems determined not to make the
same mistake with Java... we hope.)
<p>
Second, many of the problems can be fixed by integrating
better tools into the system. The Unix 'find' command has various
problems which are described in chapter 8 of the book, and are pretty accurate,
though they seem to have been fixed in GNU find. Someone has also
written GNU locate, an easier way to find files. It runs a script
nightly to build a database of filenames, and the 'locate' command
searches through that database for matching files. You could make
this database more than just a list of filenames; add the file's size
and creation time, and you can do searches on those fields. One could
envision a daemon which kept the database instantly up to date with
kernel assistance. The source is available, so the idea only needs an
author to implement it...
<p>
Chapter 8 also points out that shell programming is complex
and limited; shell scripts depend on subprograms like 'ls' which
differ from system to system, making portability a problem, and the
quoting rules are elaborate and difficult to apply recursively. This
is true, and is probably why few really sizable shell scripts are
written today; instead, people use scripting language like Perl or
Python, which are more powerful and easier to use.
<p>
Most important for Linux partisans, though, it's very
important to note that not all of the flaws described have been fixed
in Linux yet! For example, most Linux distributions don't really
allow you to undelete files, though the Midnight Commander program
apparently supports undeletes. As the authors say, 'sendmail' really
is very buggy, and Unix's security model isn't very powerful. But
people are working on new programs that do sendmail's job, and they're
coding security features like the immutable attributes, and debating
new security schemes.
<p>
For this reason, the book is very valuable as a pointer to
things which still need fixing. I'd encourage Linux developers, or
people looking for a Linux project, to read this book. Your blood
pressure might soar as you read it, but look carefully at each
complaint and ask "Is this complaint really a problem? If yes, how
could it be fixed, and the system improved? Could I implement that
improvement?"
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright &copy; 1997, Andrew Kuchling <BR>
Published in Issue 22 of the Linux Gazette, October 1997</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./conn.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./lg_backpage22.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<!--startcut ==========================================================-->
</BODY>
</HTML>