Software is ideas. Information. It's different from people, places,
and things; it's infinitely reduplicable like fire, at almost no cost.
This is a truism, even a cliche. But it seems that there are
particular consequences that aren't well-explored.
One is that it doesn't work well to sell it the way you sell slaves,
places, and things; any of your customers can make an unbounded number
of copies at cost, or less. Market friction currently makes selling
software a viable business model. Perhaps branding does, too; there's
a question as to whether Red Hat sells CDs for $50 because people like
Red Hat's brand, or just because they don't know they can buy
essentially the same CD from CheapBytes for $2.
The past and the present
------------------------
The traditional way to deal with this is to lock ideas up inside
people, places, and things. A lawyer can get quite a bit of money simply
for spitting out the appropriate ideas, not doing any actual creative
work, or simply for applying rote procedures -- most wills reportedly
fall in this category. I have to go to the Georgia O'Keeffe Museum to
see old Georgia's paintings, because they don't allow photography.
Then they can charge me admission. (Great museum, by the way. If you
go there, don't get the four-day pass; their collection is rather
small.) A book can be sold for more than the cost of printing it
because the ideas are difficult to separate from their physical
manifestation.
Software makes it much easier to separate ideas from people, places,
and things. If I buy my computer to send email with, and I want to
make fractals, I don't have to buy a new fractal machine. I just have
to download some fractal software. If I want to calculate the yield
force of a strut, I don't have to hire a structural engineer; I can
download some FEA software and simulate stressing it until it yields.
I don't have to go to a museum to look at my neighbor's fractals; I can
just pull them up on my screen. (Once I download them, of course.)
This is a spectacular change.
Software locked up: the future?
-------------------------------
And it was the nature of computer applications, in general, until
recently. But now we have the Web, and people are talking a lot about
application-specific embedded computers. Suddenly people can deliver
applications like the ones they used to deliver as computer software,
but they can lock up the software -- the ideas -- inside places and
things.
As an example, I have a CD-ROM containing aggregated US phone
listings. Given sufficient time and expertise, I can extract these
phone listings and put them up on a web site. (I need to
reverse-engineer the database structure they're stored in first.) I
can run correlation tests to see if people with certain last names tend
to have more biased exchange distributions within a city. (Which would
indicate that they lived close to their families, perhaps, or that the
city was ethnically segregated.) I can find out which spelling of
Cathy is most popular (Kathy? Cathi?), and I can see if people's
choices of spellings of Cathy are correlated with their last names.
There are also several web sites containing the same set of phone
listings, or newer versions. I can't do any of these things with these
web sites, because the phone listings -- an idea -- are locked up in
the web site -- a place or a thing, depending on how you look at it.
Another tack is to lock information up in things. The NSA's Skipjack
algorithm was classified for several years; implementations were widely
available, but only in special hardened devices. This allowed them to
deploy it widely behind the iron curtain that surrounds classified
research, and they intended to deploy it widely in the outside world,
too. (So far, I'm outside that curtain.) Recently, circumstances
forced them to distribute software implementations of Skipjack, and so
they declassified it. (See
<URL:http://www.counterpane.com/crypto-gram-9807.html#skip> for more.)
Why I don't like this
---------------------
Having the phone book myself gives me more freedom. On the other hand,
it also requires me to install software on my machine, giving that
software some degree of control over my machine. In this particular
case, the software runs under Win95, so it demands complete control
over my machine. So it's actually considerably more convenient for me
to just visit the web page and fill out a form to look up someone's
phone number.
Information in things is also considerably more convenient than
information in software; a special-purpose thing is often considerably
easier to use for that purpose than a general-purpose computer is.
Because of this, many industry pundits have been forecasting that
general-purpose computers will fall out of use in favor of
special-purpose devices.
I'm somewhat worried about this trend. I like using general-purpose
computers -- though admittedly they are often difficult to use. I like
the freedom it gives me. The computer is just an extension of my
mind.
Web sites and special-purpose hardware are not like this. They do not
give me the same freedoms general-purpose computers do. If the trend
were to continue to the extent the pundits project, more and more of
what I do today with my computer will be done by special-purpose things
and remote servers.
What does freedom of software mean in such an environment? Surely it's
not wrong to run a Web site without offering my software and databases
for download. (Even if it were, it might not be feasible for most
people to download them. IBM's patent server has a many-terabyte
database behind it.)
I believe that software -- open-source software, in particular -- has
the potential to give individuals significantly more control over their
own lives, because it consists of ideas, not people, places, or
things. The trend toward special-purpose devices and remote servers
could reverse that.
What does it mean to have free software burned into a ROM? Is the
software still free if I have to desolder the ROM to read the source
code and burn a new ROM to run a modified version? What does it mean
to have free software running a remotely-accessible application on a
Web server? Even with the best of intentions, these technologies seem
make it difficult to give people the same kind of freedom they enjoy
with PCs.
How to fight it
---------------
It's more expensive to buy a new device than it is to download software
and install it on my machine. So people won't use special-purpose devices
if they provide no advantages.
But they do provide advantages. They're *much* easier to use than
current general-purpose computers. A button for every function; no
funny modes in which the buttons do something else, or nothing. A
display for every state variable; you don't have to click on things to
make them visible. I suspect that this is not an inherent limitation
of general-purpose computers, but a limitation of their current state.
Another big issue is that they just work. General-purpose computers
often don't, particularly when running Microsoft OSes. Even in the
best case, you still have to do a couple of seconds of irrelevant stuff
before getting to work on what you want to work on -- typing a letter
or whatever. More typically, you have to click around for ten seconds
or so. At worst, you have to reinstall Windows and the application,
reconfigure some peripherals, and reinstall their drivers before you
can get anything done.
A third big issue is that they require software installation. If I
want to start using my machine for writing email different, I have to
install email software on it. While this is considerably less
expensive than buying a special-purpose email machine, it's
considerably less uncomfortable, intimidating, and confusing. (Or so
I'm told.) It also takes longer.
If general-purpose computers are to survive the onslaught of tiny,
cheap special-purpose boxes, they must become as easy to use, reliable,
and easy to install software on as those special-purpose boxes. This
requires a totally different operating environment than anything we're
using on the desktop today; not surprisingly, Linux is closer than
anything else I've used. (Squeak might be even better, but I haven't
tried it yet.) But Linux is an incredibly long way away. This will
require different hardware as well as different software.
The forces behind remote servers are similar -- ease of use because of
uniform interfaces through a web browser, "just working", and no
installation -- just using. But they have a couple of other advantages
as well: they can provide services that require massive storage or
computational resources that can't reasonably be provided on your own
machine, unless you want to spend wads of cash. (Downloading
AltaVista's database every day would be a very inefficient way to
search the Web.)
I think these extra advantages are probably impossible to overcome at
the moment -- although I'm interested in research on distributing big
computational jobs over many machines.
-- <kragen@pobox.com> Kragen Sitaker <http://www.pobox.com/~kragen/> [around 1998-12-23], it is amazing to watch fear and loathing and greed at play with the more speculative Internet stocks. To call this a tulip craze would be a vast understatement. -- Adam Rifkin, <adam@cs.caltech.edu>