Monopolies and the Economics of Software Reuse

What’s the most reused software component today? Is it some charting component, or is it a programming language, or is it an application of some sort, like Word?

Software reuse occurs when a new piece of software functionality is created on top of an existing piece of software. In my mind, the most reused software components are:

  • Microsoft Internet Explorer
  • the Windows Platform, specifically the Win32 api
  • the Microsoft Office suite
  • the Apache web server

I’d argue for the inclusion of Internet Explorer because a lot of web based applications are developed to run well on Internet Explorer, given its market share. Even my mother uses webmail as her primary application. (FreeCell comes a close second).

I have also included the Office suite because it is hard to come across any office where someone hasn’t written a little Access database, or some Word macros.

As much as I like and admire open source, the reality is there are few pieces of open source software that has achieved the breadth and penetration of the Microsoft products, bar Apache.

Why is this so?

Every developer who writes software is faced with a question of “how much will it cost me to distribute this software?”. Given that software components don’t come cheap, by virtue of Microsoft’s monopoly and market domination, most of the pieces of software components are already installed on the customers computers.

Why not open-source?

In theory, open-source components should enjoy better economics compared to running on Microsoft’s platform. However, this is not the reality. Firstly, supported open-source components can cost about just as much. Although open-source components make it possible for competing vendors to provide support, in the end supporting code is expensive business, and it is constant work keeping up with all the other components that your code runs on.

Secondly, where software is unsupported there is little economic incentive to ensure backward compatibility, and vendor compatibility. Every point version of Python breaks binary modules.

Thirdly, there is a different belief system at work behind open-source projects, and that is source code should be shared. This is why binary only linux device drivers are constantly broken. Linus Torvalds simply doesn’t think he has any special obligation to hardware companies which distributes binary only drivers, over-and-above those to other device driver writers.

Fourthly, the economics of maintaining open-source projects are different to closed-source ones. To succeed, open source projects have to be optimized for maintainability, while closed-sourced ones are optimized for backward compatibility. This also explains why open-source projects tend to enjoy more velocity, compared with Microsoft, where there is this sense of constant struggle between the choice of fixing bugs or breaking compatibility.

In this way, a monopoly can contribute to public good, similar to how governments through having a monopoly on the ability to tax its people can contribute to public good, or how a government has a monopoly on the ability to legislate. It creates a uniform, predictable world where other people in the ecosystem can reliably count on as infrastructure to build their wares on.

Bookmark and Share

You should follow me on twitter here

Leave a Reply