People, places, things and ideas
by Kragen Sitaker
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
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
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
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
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
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, GNU/Linux is closer
than anything else I've used. (Squeak might be even better, but I
haven't tried it yet.) But GNU/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.