Things That Matter
10th November 1998
This page is dedicated to various technical issues that I care about.
1. Open Source
This just means programs whose source code is freely available for
further hacking. It's also been known in the past by the monicker
``free software'', but that's a horribly ambiguous term, in that it
can be read as referring to zero price rather than freedom.
When programmers on the Internet can read, redistribute, and modify
the source for a piece of software, it evolves. People improve it
adapt it, extend it and fix bugs. It turns out that this rapid
evolutionary process is not only faster than the traditional closed
model, but actually produces better software. The evidence is there
for all to see: Linux, Xfree86, emacs and gcc are among the highest
profile examples.
See
http://www.opensource.org/
for some very readable commentaries on the open source movement,
pointers to some related organisations, and some discussion about the
enemies of open source software. (Yes, it turns out that this
primarily means Microsoft, but they are by no means the only villains
in this story.)
Open source software is the world's best chance of avoiding tie-in to
corporations motivated only by profit and not by the desire to produce
the best possible product. It deserves your support.
2. Web Interoperability
None of my pages use any Netscape- or Internet Exploiter-specific
tags. Help stamp out stupid Web design -- make your pages
interoperable and take the pledge today. You can find more details
about the web interoperability pledge on
http://www.zdnet.com/anchordesk/wip/index.html
but reduced to bare bones, it says:
I pledge to use only recommended HTML tags as defined by W3C.
Another initiative with very similar aims is the ``Best Viewed With
Any Browser'' campaign at
http://www.anybrowser.org/campaign/
3. Quiet Software
Software that has nothing to say should say nothing.
For example, if I download a tar archive from the web and
need to unpack it on my Unix box, I type tar xf
filename, and it does its job without generating any output.
Quite right. It doesn't need to generate any output. It
doesn't need to tell me anything, unless something goes wrong.
As a counter-example, if I download a zip archive and need to
unpack it on my DOS box, I type pkunzip filename, and
it says the following:
PKUNZIP (R) FAST! Extract Utility Version 2.04g 02-01-93
Copr. 1989-1993 PKWARE Inc. All Rights Reserved. Registered Version
PKUNZIP Reg. U.S. Pat. and Tm. Off.
o 80486 CPU detected.
o EMS version 4.00 detected.
o XMS version 3.00 detected.
o DPMI version 0.90 detected.
Searching ZIP: filename
And that's all before it's actually started to do anything.
Including the initial blank line, that's eleven valuable lines of my
precious screen real-estate -- nearly half of the entire depth of my
screen -- just thrown away on trivia which is at best irrelevant (who
cares what version of XMS it detected?) and at worst also wrong (I
have a Pentium, not a 486.)
Another counter-example, from people who should know better, is the
GNU implementation of date, which is fine until you want a
Usage message -- for example, because you've forgotten the format for
setting a new date. On my system (RedHat Linux 4.1), the output of
date --help is a preposterous 51 lines long -- yes, more than
two whole pages of good old-fashioned 80x24 text -- so I have the
ludicrous situation that when I need to remind myself of the
date-setting format, I end up typing:
date --help 2>&1 | sed 10q
It doesn't have to be this way.
4. Why Can't Someone Make a Half-Decent Web Browser?
I just can't understand this. I can't see how writing a web browser
can be difficult, and I can't see how all the existing ones can be so
bad. (Please let me know if you're aware of an exception.) I'm not
talking here about exotic peripheral areas like plug-ins, style-sheets
and so on, just the ability to do straightforward web-browsing,
formatting HTML and displaying images. As my favourite
pre-programming incantation has it, ``How hard can it be?''
You don't know the kind of thing I'm talking about? Well, the best of
a bad bunch that I've seen is Netscape, so that's what I use on my
Linux box. (Disclaimer: I'm not necessarily saying it's better than
Micro$oft's Internet Exploiter -- I've never used that because I don't
have it for Unix.) Here are just some of the stupidities in Netscape:
-
Appalling performance in areas where there is no excuse.
Specifically, going back to the previous page should be an
instantaneous operations, and indeed it was in older Netscapes. In
my current one (4.05), it can take an age (why?) and can even result
in a new phone connection being forged (again, why?) There's no
excuse for that, is there?
-
Netscape can run multiple browser windows simultaneously, but because
it doesn't do the multi-threading properly, if one windows hangs, they
all hang. Worse, it seems to do synchronous connect()s,
read()s, etc., so that when any window is downloading
anything, it does so with a sequence of short sleeps, so that
scrolling in any other window is slow, jerky and unpredictable. The
result is that the time-saving benefits of parallel browsing are
enormously reduced.
-
Worse still, because all Netscape windows are maintained by a single
process, if one dies, they all die. This happens with distressing
frequency -- I seem to average one Netscape bus error about every
other day. Which is really painful if I have eight or ten windows
open on pages that it's taken some time to find.
-
The pallette management stinks. On my 256-colour X server, once
Netscape has grabbed all the colours (for example, to render a complex
image), it never releases them even when the images have been disposed
of -- so none of my other programs can get the colours they need.
-
There's also its appalling insistence in filling my home directory
with any amount of old nonsense at the drop of a hat. For example,
merely starting Netscape creates a (thankfully empty) nsmail
directory.
-
Because we connect to the net via a caching proxy, I run Netscape with
a zero-size disk cache. I never send or read email via Netscape, and
I never read news. Yet my .netscape directory weighs in
at a preposterous 3475 Kb. Yes folks, that's three and a half
million bytes. To store a bit of configuration information.
That can't be right, can it?
-
And of course, it doesn't bother checking whether write()
succeeds, so that if for example you try to download something onto a
full filesystem, it will happily sit there for half an hour
downloading the bytes and pouring them away, finally finishing and
continuing as though nothing had gone wrong, leaving you to find a
zero-byte file when you later go to look at it.
-
And the horrifying corollary to this: it blithely writes back
preferences to a full $HOME filesystem, thereby zero-lengthing the
files and throwing away vital configuration information about proxies,
cache-sizes, font defaults and more.
-
Oh, and did I mention that it takes an age to fix this because the
preferences dialogues are extraordinarily, horribly, preposterously,
inexplicably slow to come up or change?
To be fair to Netscape, I should re-iterate that I use it because it's
the best browser I've found. I've tried Mosaic, Arena, Amaya, Grail,
HotJava and others, but all of them have some or all of these faults,
and others.
How hard can it be?
We can only hope that with the release of the source code to Netscape,
some of these bugs will get fixed by beneficient hackers. (See the
section on Open Source above). In fact, if Netscape does get
fixed now that it's gone open, that will be a great advert for the
open source concept.