Patterns in static

Why is the software market different from all others?

navigational aids:

News ticker:

topics covered:

the feedback logo. It rotates.

28 May 04.

The software market is the only industry I can think of which is evenly split into two types of producers. One produces software for the sake of producing software, and the other produces software for the sake of doing something else. A good example of the first is Microsoft: software is their end product, and their entire business can be described as `selling shrinkwrapped boxes of software'. An example of the second would be, um, me. I am under contract with (name of international development organization) to produce interesting information about immigration, and it so happens that my means to that end involves programming a simulation. My bosses don't know C and will never run my program; they just want to see some nice output graphs that they can have some confidence in.

The shrinkwrap method involves charging the same price for every unit: it cost fifty million dollars to produce the first unit of MSFT Word, and it costs a nickel to print the millionth CD, but you charge the average ($50) for all of them and hope the bills get paid. The second method involves charging not for the good, but for labor. The effort that went into the first unit is paid for via an hourly wage or salary, and the second might as well cost the marginal cost of a second unit (a nickel) since the bills have already been paid.

There's little reason to believe that one method or the other would be the One True Method. Even though MSFT makes a whole lot of money from shrinkwrapped software, we shouldn't forget that huge part of the market that is on an hourly-wage system, or blow that segment off as not really working. But this is what many an author and lobbyist does regarding free/open source software (FOSS). Oh, those Linux people are just hobbyists, we read, who do all this in their spare time. Maybe this sort of thing was true a decade ago (I doubt it), but here in the modern day, an awful lot of work is done by people with jobs that pay them to do it. There are a few things that help this along.

Anybody can write software, and does. Software is one of the few industries where we have both of the above types of business, with MSFT on the one hand and every IT department in every company in the world on the other. Compare with the pharmaceutical industry: there's no do-it-yourself alternative to buying blister packs from drug companies, and companies that work in other fields typically don't have a drug-production department in the basement that supports the main business.

Companies try to stay focused. Most companies are reluctant to go into new fields that they have no comparative advantage in. Amazon sells physical, mail-order stuff, and in so doing, they have an innovative database system that does really nifty things. And yet, there is no ` IT consulting' that will set up your database, and no `Amazon DB Now!' software that you can buy in a shrinkwrapped package to set up at home. It's just not worth Amazon's limited resources to branch out from what they do best: move merchandise.

The same is true of most every other IT department in the world: they're not a profit center, and making them one is not worth the effort. This gives the IT departments of the world leeway to produce whatever they want, however they want, as long as the `add to cart' button does what it should. Their software is never going to be sold to others, and yet they still add value and earn a good living.

The internet isn't just for porn. Software collaboration is not new---in fact, you could argue that shrinkwrapped software is the newer method, since a few decades ago there were so few mainframes that there was no market to be had and every computer programmer knew all the others.

What is new is that there is an infrastructure in place so that projects of the scale of Linux can get contributions from all over the planet and be readily assimilated into working code. The credits for Linux include an awful lot of universities, an amazing array of countries, and many an email address ending in things like and What is also new, and potentially more important, is that people have read articles about this and realize that developing software this way can work.

All of this adds up to collaborative software being sensible business. Our poor hourly-wage IT department slaves are not making a product, and would never profit from the product if they were. They just have a dull task at hand that needs to be done, preferably with a minimum of effort, and now they've read a hundred articles about how they can put their code under a free/open source software license and get random strangers to contribute. No money is made, but the software supporting the widget sales get done cheaply and efficiently, and the IT guys get their salary.

An anecdotal example Hans Reiser is the author of the best Linux file system, the reiserfs. [The ext3 fs has hurt me many times.] The president of called Hans up and told him what he needed in a file system, and offered Hans $n0,000 to implement the system (where I don't remember n; this anecdote is from a talk Hans gave at (name of Institute)). Hans, who is working on resiserfs anyway, takes the money, improves the file system accordingly, and puts it in the public domain. downloads the file system from the public domain, and saves themselves millions of dollars now that they can use cheaper machines that still meet their specs. Hans the contractor got paid, and got what they needed for their own work, and so could care less what other people are doing with Hans's code. Good business all around.

The main moral is that the characterization of FOSS authors as hacks and underground fringe is outdated, if it was ever true. There are a lot of pure hobbyists out there, and everybody who contributes to FOSS no doubt gets some personal, non-paid enjoyment out of it, but to say that the hourly-wage model of doing business is communist and frivolous compared to the shrinkwrapped method is condescending.

Quick economics interlude By `marginal cost', I mean that you charge the cost of producing each unit. The cost of producing the first unit of software is huge, as somebody has to put many hours of work into the thing, so by marginal-cost pricing, the first unit would be very expensive. But the cost of production rapidly becomes nil, as the effort required falls to zero and it just becomes a question of putting the software somewhere to be downloaded.

This is exactly the path that the price of FOSS takes. Somebody, somewhere makes that first unit, and more often than not that person gets something for his/her time. After everything is set up, the marginal cost of another unit is zero, which is exactly what the FOSS people charge.

We learn in Econ 101 that marginal cost pricing is a standard feature of an open, efficient market---by giving stuff away, our FOSS authors are exactly conforming to the predictions of the classic economic models of the open market.

Implications for intellectual property (IP) The problem is that the shrinkwrap people are trying to sell their goods at average cost, but an open market favors marginal-cost pricing. More results from undergrad econ: if there is a monopolist, then it will sell goods at average costs and make a profit, but the overall society is less efficient. Thus, the shrinkwrappers have been pushing for patents---a monopoly on an idea.

Patents can make sense in industries where there are only shrinkwrapped goods. Drug companies are the standard example, which I won't rehash here. But the problem is that there are two methods of software provision, and one of them already works efficiently at marginal cost, with no legal protection. In fact, IP protection is a nuisance: how do you know that the code you just thought up wasn't patented by somebody? What will the lawyers cost when you get sued because you wrote some code yourself instead of buying the same code in a shrinkwrapped box? Meanwhile, the average-cost method is better off when IP protection is at its strongest.

In other words, the two methods are in direct competition. Legislation that helps average-cost software directly hurts marginal-cost software.

This is where the characterization of the FOSS people as hippies and hobbyists comes in. If the people who write code but don't shrinkwrap and sell it are just doing it for fun, then there's only one way to set up a market for good software---the monopolist, average cost method, and if we want a market for good software we'd better bite the inefficient bullet and facilitate those monopolies.

But this is clearly not the case. First, the FOSS people are doing exactly what the standard economic model says they would be doing. Second, the incentive to innovate clearly exists in the price-by-labor market. There are tens of thousands, maybe millions, of programmers who write good code that never gets shrinkwrapped and sold, who know it's good because they test it and use it themselves. [Compare with Joel, my paragon of the shrinkwrap author, who is constantly reminding himself to eat his own dog food.] The Internet Boom happened before the State Street Bank & Trust v Signature Financial Group ruling that created software patents out of thin legal air.

We know from Econ 101 that it is the marginal-cost method which produces the most efficient outcome. Monopolies are sometimes a necessary inefficiency, like the case of expensive-to-develop drugs or a city's power grid, but creating a monopoly is a last resort, to be used only when there is a good reason why the economically efficient marginal-cost pricing method won't work. But there is a healthy market for software which is based on charging the marginal cost of labor, meaning that invoking the last resort---allowing software patents---is at best useless and at worst destructive.

[link] [No comments]
[Previous entry: "My proposed solution to the conflicts surrounding Israel."]
[Next entry: "Yet another entry about drug access restrictions."]

Yes, the comment box is tiny; write in a real text editor then just cut and paste here.
If you are a human, type the letter h in the first box.
h for human: