People, places, things and ideas
by Kragen Sitaker <email@example.com>
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 http://www.schneier.com/crypto-gram-9807.html#skip [archived] 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, 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.