The Economics of Software

“The time has come,” the Walrus said,
“To talk of many things:
Of shoe–and ships–and sealing wax–
Of cabbages–and kings–
And why the sea is boiling hot–
And whether pigs have wings.”

An item titled the economics of software caught my eye on Rajesh Jain’s blog. Rajesh quotes from an article by Bryan Cantrill which begins with:

Software is like nothing else in the history of human endeavor unlike everything else we have ever built, software costs nothing to manufacture, and it never wears out. Yet these magical properties are arguably overshadowed by the ugly truth that software remains incredibly expensive to build. This gives rise to some strange economic properties: software’s fixed costs are high (very high — too high), but its variable costs are zero…

Clearly, Mr Cantrill is out of his depths when it comes to basic economics, and consequently his analysis of the economics of software is fundamentally flawed. Ignorance of basic economics is bad enough when one takes on the task of explaining the economics of software but what is worse is that he is mistaken about some facts as well. For instance, he asks rhetorically, “… doesn’t it strike you as odd that your operating system is essentially free, but your database is still costing you forty grand per CPU?”

Which planet are you on?

One wonders if he has heard of that obscure little company called Microsoft which makes a decent living out of selling operating systems. As far as I can tell, they don’t give them away for free. And I suppose that he has not heard of MySQL which is database software and for which you have to pay a lot less than forty grand — zero, to be precise.

Sorry, Mr Cantrill, but it will take us too long to fix all the bugs in your analysis. So I will just write the analysis from scratch. Here is a short introduction to the economics of what is called “information goods” to which class computer software belongs.

Of goods and services and information

To start at the top, there are things called goods and there are things called services. Services are things such as haircuts, transportation, heart surgeries, operas, and psychoanalysis. Goods are stuff such as cd players, cars, toasters, shirts, and books. Most goods are ‘hard’ in that they are kickable. Then there are goods that are not kickable. An idea or a thought or a receipe is not kickable because it is not made up of matter. Note however that to convey, store, transmit, and use the idea or receipe, it has to be incorporated into some physical medium which is kickable. But the information good itself is not a material entity unlike a car or a desk.

The distinction between the information good itself and the material object used to store, retrieve, transmit and use it is vitally important. The idea or the receipe is ‘software’ while the stone tablet or book or the cd in which it is found is the ‘hardware’. The cost and economics of hardware follow the usual economics of kickable goods. So it may be good to review those basics quickly before we look at the economics of software.

Costs — fixed, marginal, and average

To produce stuff (hardware), you need labor, capital, and other stuff. Let’s say we need to make a car. We need to buy some humongous machines, make parts, put them together and we get a car after some time and cost. Even before we get one car out of the shop, we have to spend money — put the factory up and pay people to design the car, etc. Those are fixed costs. For every car we produce after we have paid the fixed costs, it costs some money. That is the variable cost. The more the number of cars, the higher the variable costs because you need more parts. The difference in the total cost of producing n+1 cars and n cars is called the marginal cost of producing that n+1th car. Finally, the total cost (sum of the fixed and variable costs) divided by the number of cars gives us the average cost.

Supply and demand

Usually, the marginal cost decreases as the number of units produced increases, and at some point it starts rising for reasons that need not detain us now. The upward sloping supply curve is actually the rising part of the marginal cost curve and it represents the fact that as you produce more and more of some good, it costs more to produce the next unit than to produce the current unit. This is true for most kickable goods but not so in all cases and definitely not so for software as we shall see.

Then there is a demand curve which is usually downward sloping (on a price-quantity graph where the y-axis is used for the price and the x-axis is used for quantity). This is so because of a number of reasons. For a consumer, each additional unit of a good delivers diminishing additional utility. This diminishing marginal utility or benefit implies diminishing willingness to pay. So the demand curve is a marginal utility curve or a marginal benefit curve.

Markets

If you draw the marginal benefit curve (aka demand curve) and the marginal cost curve (aka supply curve) on the same price-quantity space, they may intersect and if they do that point of intersection is called the equilibrium which represents a market-clearing price and quantity. The equilibrium condition is that the marginal cost equals the marginal benefit. Markets determine this equilibrium and under idealized conditions (which do not obtain in the real world but are realized approximately in many instances), this is welfare maximizing.

Which brings us to a very important point that is relevant to our goal of understanding the economics of software. We have to know something about competitive markets and how they maximize welfare and under which conditions. Markets are competitive if a bunch of conditions are met which include, among others, (1) zero fixed costs (implying no scale economies), (2) no externalities, (3) perfect information, (4) no public goods, and so on. In a competitive market, the price determined is welfare maximizing and the price is equal to the marginal cost of production. Whether real world markets achieve efficiency, that is, whether they arrive at this welfare maximizing price or not, depends on whether the conditions for competitive markets are met or not.

Marginal Cost Pricing

One last thing we need to keep in mind before we continue on. For economic efficiency (in other words, for maximizing social welfare), price has to equal marginal cost. That is, the additional cost of producing the marginal unit (that is, the next unit) has to equal the marginal benefit from the consumption of that unit. So if the marginal cost of production is zero, the economically efficient price is zero. But here is the catch. You could have zero marginal cost of production but have a very high fixed cost. In which case, you still have a positive average cost. Granted, this average cost decreases as the total number of units produced grows. But pricing the good at marginal cost will leave you unable to recover the fixed cost. You could of course price the good at that average cost but then it will not be maximally efficient — it will lead to dead weight losses. Alternatively, you could have the government or your rich uncle subsidize the fixed cost component and price your good at the marginal cost of zero.

Economics of Software

Now let us move to software. First order of business, what is software as used in this analysis. I define software as anything that is an organized collection of information. Examples of software: receipes, stories, driving direction, computer programs, population statistics, exam results, poems, instructions on how to achieve enlightenment, a movie script, and such. Let us lump these in the generic group called information goods (IG). Every IG requires some amount of intellectual effort and unlike the production of hard goods (HG), the cost of production is totally front-loaded and the cost of producing additional copies of an IG is zero. In other words, the cost of producing one IG is the same as the cost of producing a billion copies of the IG.

Distribution Costs

Note however that merely producing something is not enough; you have to distribute the stuff before you can use it. The cost of distribution is an important and significant component of the total cost of IG. This is distinct from the case for HGs. To take an example, producing a car costs say $100 million, producing each additional unit costs (marginal cost) say $20,000, and the cost of distribution for each car through a dealer network is $1,000. The distribution cost is therefore only 5% of the marginal cost of production.

Now consider IGs. Take the case of an operating system or a database system. It costs umpteen hundred million dollars to produce the first unit, if you are a Microsoft, but it costs next to nothing if you are an open source collaborative project. So the range of fixed costs of production extends from very high to practically zero. Marginal costs in any case for IGs is always zero. Then comes the distribution costs. If you were to distribute your software on punched paper tape or cards, you have to hire a fleet of 18-wheeler tractor trailers to deliver one copy of Microsoft Windows XP to one customer and it will cost you $19,500. If you were to use a set of floppy discs and mail it to the customer, it will need a shoebox-full of floppies and your distribution costs will be $40 per customer. Not as bad as the fleet of tractor trailers, but still not as good as using a few cds and cutting your distribution costs to $4. And it gets really sweet when you can just have your customer download it from your site for about $0.04 total cost to you. (But the sweetest thing of all is when you can charge your customer $300 for the download.)

Summary

To sum up the discussion so far, depending upon the size and complexity of what a software program does, you have to employ a bunch of programmers and have some computers for them to do their stuff on. That is the fixed cost of producing the software program. That fixed is high in the case of operating systems and huge database programs if you have to pay programmers fat salaries. If you got a whole bunch of people to collaborate and produce software for free, then you have low fixed costs. The latter is what mostly happened in the case of Linux while the former is what happens in a commercial shop like Microsoft.

Once you have produced the software program with whatever fixed costs — high, low, or intermediate — you then make a certain number of copies. Depending on the cost of the medium you use to distribute the software, your variable costs (and therefore the marginal costs of distribution) is determined. If you use punched cards or paper, marginal cost of distribution is high; if you use cds, it is low; it is lowest so far if you send it over electronically by wires or wirelessly. Because electronic distribution of software is so cheap over the internet, you can say that the marginal cost of production as well as distribution comes pretty close to zero.

Is software really different?

Information goods are essentially different from material goods. That is so because of two reasons. First, the nature of information goods itself. And second, the cost of production of IGs. IGs have public goods characteristics, they have externalities, and have high fixed costs. All these are deviations from the conditions required for competitive markets. Thus markets will not deliver the social welfare maximizing outcome. All sorts of distortions will result such as the presense of monopolies. Monopolies, like everyone and his brother, maximize profits and since they have market power, they can charge whatever suits their fancy. So they can price an operating system at $300 a pop which is way above the marginal cost of production (exactly $0) and the marginal cost of distribution (nearly $0).

So is the economics of software essentially different from the economics of other goods? Not really. There are differences in their associated costs (fixed, marginal, average) and the ways in which they deviate from the conditions required for a competitive market. But the fact remains that there is nothing surprising about the way the market for software behaves if one were to understand the nature of software and the nature of markets. Like shoes and ships and sealing wax, they follow predictable pathways in the marketplace. Pigs don’t have wings and the sea is never boiling hot.

In the concluding bit of this piece, I will explore some of the issues that follow from this preliminary analysis. Later, alligator.

It is all Karma, neh?

In response to my recent post on the priorities of the Indian judicial system, Venkat commented in jest:

Hey Atanu!
Seems like you are passing the bucks too much to karma? 🙂 Jus’ joking.

He was obviously refering to my closing line, “It is all Karma, neh?”. Although he did not mean it seriously, I think that there is a pervasive misconception about the concept of karma which we need to remove seriously.

The word “karma” does not mean ‘fate’. It means “work or action, and the consequence that arise thereof.” Karma does not mean predestination or predetermination. In fact, it means precisely the opposite. Karma means that it is our actions that determine the future, that what we do matters and has consequences. The concept is a general formulation of the fundamental law of action and its consequences, a specific instance of which are Newton’s laws of motion. Therefore it is the ultimate statement of “The Buck Stops Here.” And so when one says, “It is all Karma”, one is acknowledging that what we do matters and we are ultimately responsible for what we enjoy or suffer.

India’s Real Criminals

Well, now we can all sleep soundly. Justice and reason have triumphed against the formidable forces of evil that had threatened to undermine the very basic fabric of our millennia old civilization. Our future is assured, our children can now grow up in a land of milk and honey, we can walk the streets without fear and with our heads held high. We can now proclaim with pride Mera Bharat Mahan and truly believe that India is shining.

For those who have not heard the momentous news, let me clue you in. The arch villain I am referring to is none other than Daya Nand of Narnaul (Harayana). Sixteen years ago, this enemy of humanity, committed an atrocity so immense that all the forces of the good and the holy had to be arrayed against him. But truth eventually triumphs. The Supreme Court of India prevailed and sentenced him to a life in prison and imposed a fine on this criminal as well for his unspeakable crime. Continue reading “India’s Real Criminals”

High Population Considered Necessary but not Sufficient for Poverty

A lot of water has passed under the bridge since my last blog entry. “Where in the world,” some asked, “is Atanu and why is he not writing stuff anymore?” For better or for worse, I am back from a brief round-the-world trip. Among the exotic far off places of the world, I was in Helsinki, Paris, London, Boston MA, New York NY, the San Francisco Bay area, Los Angeles, San Diego, and Seoul Korea. I flew Air France (which I call ‘Air Chance’), Delta (don’t ever make the mistake of flying Delta), and Korean Air. Met lots of interesting people and heard lots of great stories. One of these days I will write about them. But for now, it is back to the usual business.
Continue reading “High Population Considered Necessary but not Sufficient for Poverty”

On Localization of Linux

An interesting press release was forwarded to the India-Gii mailing list this morning by Venky. He wrote:

IndLinux.org has launched a Hindi Interface for GNOME, the GUI for the GNU/Linux operating system. We request users to download the software from http://www.indlinux.org and give us their comments and feedback. Those interested in volunteering are requested to go through the web site–we need volunteers with technical skills as well as volunteers with skills in translating from English to Hindi, Gujarati, Telugu, Kannada and other languages.

I responded saying that it was a commendable effort. I had a look at the screen shots. I suppose that it is a work in progress and therefore the screen shots show a hybrid of Roman and Devnagri fonts.

Also, upon reading the press release I thought that the operating system was being localized by changing the language from English to Hindi. Upon viewing the screen shots, I realised that I was mistaken. It appeared to me that Devanagari is being used for transliteration of English words (mainly technical words) and held together in a sentence with Hindi syntax and structure. For instance, one information pop-up says:

“is folder ki sabhi executable files script menu mein dikhai degi. menu say koi file chunnay pur vuh chalnay lageygi…”

It feels as if our dear departed Rajiv Gandhi is speaking directly to us

“is country ki development kay liye, humay bahut effort laganey ki necessity hai”.

Hey, that’s a thought. Since Indians love to name every bloody thing after their idiotic leaders (Rajiv Gandhi this, and Indira Gandhi that, and Jawaharlal Nehru the other), perhaps this IndLinux should be named “RajivLinux.” And if and when a Hindi language OS (as opposed to a Devnagri font OS) comes about, it should be called “DesiLinux” or some such thing.

Seriously though, it is a great beginning and I hope this effort is successful in lowering some of the many barriers to entry to the world of IT for some Indian non-English speakers.


To which Rishab responded with

perhaps you would like to suggest a “truly hindi” alternative to this sentence? i don’t know if there is an extensive usable vocabulary among hindi-speaking computer users that has hindi alternatives for most technical words. after all, there’s no point inventing words of the kanth-langot variety.

I am neither a linguist nor do I play one on the usenet/internet/web. So I cannot suggest a ‘truly Hindi’ alternative to English technical words. But that does not mean that no one has the expertise to do so. Indian languages — Hindi included — have rich vocabularies and I am sure a rich mine of roots from which one can derive all the specific words that one needs to describe concepts that are new. What we have to do is to intelligently use the roots to create appropriate equivalents now.

It is important that we don’t repeat the idiocy of kanth-langotisms. That is a braindead attempt at translation of specific words into descriptive phrases. Such as translating the word steam-engine into the Hindi equivalent of the phrase humongous iron machine that runs on iron roads while puffing clouds of vapor and making loud clanking noise as it pulls wagons behind it.

There are alternatives to wholesale importing of English words on the one hand, and the silly unimaginative direct translations of descriptions into hindi on the other. For instance table tennis in Hindi should not be table kay upar, batti kay neechey, lay thaka thak, dey thaka thak. It could be a word that is constructed from some Sanskrit root (probably) or could be an entirely new word that enriches the language and is invented out of the blue but has some resemblance to the existing set of words in the language. Import the concept but localize it to fit into the existing scene, so to say.

Hebrew is an entirely reconstructed language and it not only serves the Israelis well, it creates a sense of belonging and ownership among them.

The time is now when we can have a discussion about what to do regarding this issue. The vast majority of Indians have little or no access to computers. We don’t have the burden of a legacy of the sort that is represented in the qwerty keyboard. We can, after due deliberation, decide to go one way or the other. It will be too late to change once about 100 million users with Hindi as their mother tongue come on board.

I cannot agree more with Mahesh when he wrote in the ensuing discussion that:

“I think there is a need to comment, to praise and condemn, to discuss and decide, to change opinions if we can. That’s why we’re here. Because we have this medium. And regardless of whether we can actually change things or not, we HAVE to try.”

The question of whether we can burden people with new words or not is not really relevant. If the made up Hindi word for ‘file’ is ‘limi’, then to a person who is learning the concept of a file, it does not matter whether the concept is called file or limi. It is too late to change the qwerty keyboard now. But it is not too late in the life cycle of the Hindi or other Indian language OS to discuss what should be done regarding technical words.


To which Venky wrote back to say

The challenge for us with localization is–How far do we go with keeping the language pure? If we take this to the extreme, we should call the computer “sanghanak” but even Hindi speaking people would wonder what a “sanghanak” is. At the same time, the example that Atanu pulled out from one of the Indlinux Hindi dialog box veers to the other extreme!

Always willing to help, I dug up an old piece that I had first seen in 1997 on the usenet. So here it is — for the record.


Windows Commands in Hindi version shoonya bindu shoonya ek (0.01).

 
Phile = File 
Kholo = Open 
Bandh Karo = Close 
Naya = New 
Khatara = Old 
Bachao = Save 
Aise Bachao = Save as 
Paise Bachao = Save money 
Bhaago = Run 
Chaapo = Print 
Dekh Ke Chaapo = Print Preview 
Paise Deke Chokri Dekho = Pay Per View 
Phirsay = Edit 
Kaapi = Copy 
Kaato = Cut 
Kato = Stupid Houseguest 
Chipkao = Paste 
Payshul Chipkao = Paste Special 
Goli Maaro = Delete 
Nazaara = View 
Bakwaas Nazaara = View From My Apartment 
Hatyaar = Tools 
Hatyaar Khamba = Toolbar 
Uh Buh Kuh Duh Thik Thak = Spell Check 
Isko Kya Kehte Hain = Thesaurus 
Khuli Chaadar = Spreadsheet 
Iska Bhi Naam Nahin Aaata = Database 
Futaas Ki Goli Kha = Exit 

{Reposted from April 2003}

Numbers – 5

The Business Standard of 12th Jan 2004 carries an item on page 3 with the heading 33 million more Indians in poor list in 2001-02. The percentage of people below the poverty line is estimated to be around 25. That is, India has about 250 million people who are so unimaginably poor that they can’t cross the poverty line that is set way below what can be considered necessary for a human existence. For all the progress India is supposedly making, we have increased the absolute numbers of the abjectly poor by 33,000,000 in that one year alone.
Continue reading “Numbers – 5”

Numbers — 4

No one reading this is likely to be suffering from malnutrition, illiteracy, lack of health care, lack of drinking water, and any of the marvels of modern technology such as digital gizmos and jet travel. That is so because we are sitting on top of a very large pyramid at the bottom of which are the toiling thousands of millions. The top of the pyramid is mostly populated by the white people of affluent western advanced industrialized countries but they are not alone. The economic elite in poor underdeveloped countries around the world also rest content on the top of the pyramid.
Continue reading “Numbers — 4”

HMS Titanic — 4

In the last few days I have been trying to understand what caused the Titanic to sink. To belabor the obvious I must admit that I consider the sinking of the Titanic to be a metaphor. There are important lessons that I would like to draw from it. Continue reading “HMS Titanic — 4”

Numbers – 3

Joel Cohen’s book How Many People Can The Earth Support should be required reading for Indian policy makers. Here is more from the introduction:

The unprecedented growth in human numbers and in human power to alter the Earth requires, and will require, unprecedented human agility in adapting to environmental, economic and social problems, sometimes all at once. The Earth’s human population has entered and rapidly moves deeper into a poorly charted zone where limits on human population size or well-being have been anticipated and may be encountered. Slower population growth, along with many other improvements in human institutions and behaviors, would make it easier for people to retain control of their fate and to turn their attention from the numbers to the qualities of humankind.

These themes have consequences for action. Stopping a heavy truck and turning a large ocean liner both take time. Stopping population growth in noncoercive ways takes decades under the best of circumstances. Ordinary people … still have time to end population growth voluntarily and gradually by means that they find acceptable. Doing so will require the support of the best available leadership and institutions of politics, economics and technology to avoid physical, chemical and biological constraints beyond human control. Migration can ameliorate or exacerbate local problems, but at the global level, if birth rates do not fall, death rates must rise.

India’s population problem is a sort of tragedy of the commons and there is little chance that ‘ordinary people will voluntarily and gradually’ solve this problem. The incentives simply don’t exist, even if the knowledge and the understanding existed about the social disaster of excessive population, for individuals to act for the social good.

The solution to India’s population problem has to “make sense” to those who produce the children. That is, they have to have an incentive to produce the socially optimal number of children. I have worked out a simple mechanism that would solve this problem. Details at — when else — 11.

[Continue on to part 4 of Numbers.]

HMS Titanic — 3

Those in charge of the Titanic disregarded the warnings. And those who were not in charge were blissfully unaware of the fact that those in charge were not fully competent.

The Titanic had sealed its own fate by the cavalier disregard to those ice warnings by their Marconi operators. Particularly the last two, from the Maseba at 7.30pm and the Californian after 11pm. Had they paid attention to them they would have seen they were heading straight into an icefield.[Source]

Continue reading “HMS Titanic — 3”