M. David Peterson and I host a regular podcast, eXplorations, and most recently spent sometime discussing the open source movement and the underlying “business case” for open source. Mark (the M. side of his name) usually tends to argue the proprietary source side of things, while I tend to argue the open source side, and while things can get fairly intense in our discussions - as for any two people on different sides of a contentious issue, the rhetoric can get heated - we do this largely to discuss some of the deeper aspects of the programming world that we (and our audience, hopefully) occupies.
Mark most recently brought up one of the core questions that anyone asks of open source, and one of those that is perhaps most relevant to any of us with mortgages and kids to feed: “Where is the value proposition in open source for the programmer? Where’s the business model for actually making this work pay?”
Preparing a Laptop
It’s a good question, and one that no doubt many people who work on open source projects are inclined to ask when they’ve just spent the last week working on their cool OSS app and are now both desperately behind in the paying side and the rent check is due. How do you make a living doing what you think is right?
I’m going to flip that around a little bit. I picked up a new laptop recently, a Toshiba (my personal favorite). Installed on it was a pre-installed version of Windows XP Home Edition, a recovery disk in case I hosed the OS (not the actual copy of Windows, mind you, just a recover disk). I’m planning shortly to put a Linux distro on it, either SUSE or quite possibly Ubuntu, shortly, but I need to have a basic Windows test environment to play with for my own commercial endeavors.
Significantly, there wasn’t a huge amount of pre-installed software on the laptop - Microsoft One Note, which has become the de facto replacement for MS Works, a DVD player, some DVD burning software, that was pretty much it. The assumption was that I likely had a whole shelf full of DVDs (or CDs) full of really useful software. As it turns out, I do have a pretty full shelf of such software, some in big fancy sturdy boxes that you could use as shielding for nuclear reactors, but as to how much of its useful … quite honestly, there isn’t a lot. In many cases, the companies that produced the software no longer exist. In the case of those that are still around, the current version of software is easily three or four major revisions from what exists there.
Yet for all of that, I was up and running on my laptop within a day of buying it, writing both software for a couple of companies and working on chapters for a couple of technical books. Even on Windows, I find that those products that are most useful to me are the ones that I’ve never paid a dime for, while those that are still being paid off on my credit cards have long since been consigned to the CD graveyard (consisting of vaguely phallic looking spikes on circular stands that end up becoming the repository for any number of fairly useless products).
These are not all Open Source, mind you. One of my primary tools is Oxygen, which does cost a couple of hundred dollars retail, but favors that I’ve done over the years keeps me in current copies. Open Office 2.0 is free, and works fine for me, which is saying something since I am a professional writer. I use a developer version of Visual Studio, write most of my Java code using Eclipse, use an SVN repository for version control and do most of my graphical development in Gimp (though I do have an older Photoshop version I did acquire several years back that I fall back on). My vector graphics are rendered in Inkscape, and I’ve been using both OOo and Scribus to do my newsletter layouts.
Now, I’m a programmer, though I have to readily admit that I’m a writer as well. I live and die by my tools. If I need a piece of software to accomplish something very specialized that I couldn’t find suitable elsewhere, I’d buy it. But I find it intriguing that I’ve managed to get by for quite some time without having to buy anything, money that I’ve saved that can in turn go into upgrading my hardware or even occasionally take my family on vacation. So even as a developer, I can readily claim that I benefit disproportionately from free software that others have written.
Now, as both a writer and a programmer, I also produce software. Some of it (much of it in my case) comes in the form of code samples for articles and books, solutions to problems that other programmers can use to both learn and adapt. In some cases, I get paid for these articles, in some cases they emerge as a natural part of my blogging efforts, but in either case I willingly produce this same open source code. I also work fairly heavily in promoting open source and open standards technologies, in making sure that work by other developers that I feel is worthwhile does get noticed. Thus, in my own quiet ways, I do pay for the code that I use with code that I produce.
The Case for Pro-Bono
Now, this is where things get a little more intriguing. I suspect that I am probably not unique among programmers in making these efforts for “free” software. You take a look at any mailing list or forum, and while you see a great deal of “how do I do this?” you also get a fair number of answers to that same question.
Now, in a typical market, this idea of going out and giving away these snippets for free might seem ludicrous - it’d be like a lawyer going out and telling others advice that he would ordinarily charge hundreds of dollars an hour for.Yet, even lawyers have this concept enshrined in the operating ethics of the profession - pro bono publicam, for the good of the public, a term that’s usually reduced to pro bono work. Such work is done because it recognizes that in a healthy society, wealth by itself should not be the only factor insuring access to the legal system. Note that while its unlikely that such pro-bono work makes up the whole of any lawyer’s activity (not if he wishes to continue in the profession) it can make up a fairly significant minority of such activity, when spread over time.
It also pays off, albeit not necessarily in immediate currency. A lawyer with a significant amount of pro-bono work in his resume is far more likely to be picked up for a judgeship, it can be of significant value if one enters into politics, and it is not unknown for people who needed that pro-bono work at one point in their life to come back years later with paying work, or providing referrals to others, or provide other favors in return when they get the opportunity.
A lawyer (or a programmer) tends to have advantages others don’t — high intelligence, drive, opportunities, etc. (analytical ability, creativity, the ability to work at an abstract level in the case of programmers) that mean that the value of what they can do in general tends to exceed what others without those advantages can do, though that also tends to be the case for specialists in most fields. Yet the curious thing is that if you look at most such skilled professions, you find that there is something like the pro bono concept, a tacit recognition that “with great powers come great responsibility” (to quote Spiderman).
There’s also an aspect of barter here - I’ll help my mechanic with a website one day and he’ll knock off a few hundred dollars of labor the next time my failing car decides to cough up a part of itself on the highway. It’s hardly a strict accounting, nor should it be. Value is a fluid concept at best, and returning a favor for a favor usually places upon both the tacit recognition that so long as the value is roughly equivalent, it is best not to quibble about the details. There are consequences to this as well - if I do someone a favor and they don’t eventually reciprocate in kind, I will stop doing them favors. It’s also why you should always be respectful about such indebtedness, because these favors occur within the immediate network in which you live and work, and as such, stinginess on your part can in general reduce the value that you receive in return from the network.
Note that last word: network. Programmers in this day and age understand networks in a way that only perhaps systems engineers or mathematicians understood them a few decades ago. Open source software, pro-bono work, whatever you want to call it, is really only effective if you have a network within which to cast it. Most of the paid consulting work that I do comes anymore from the “free” work that I did and published, and usually comes from directions that I couldn’t even begin to anticipate. In that respect, producing open source software is much like a savings fund - you put money into it then forget about it, but it accrues interest that you are not necessarily aware of (albeit not much in this day and age of still fairly low interest rates), and if you need it, the extra money is there.
Open source as a value proposition only makes sense within the backdrop of an Internet, because this ultimate network insures that, while a disproportionate number of people may benefit from your work, you’ll also get back requests for elaboration or customization from customers (note the similarity of those two words) that would never have occurred if you kept the code locked up. Open Source solutions are typically solutions to problems that the programmer him or herself encountered, and the customer (who in general probably can’t produce this code on their own) will typically wish to adapt this code to fill his or her need, usually in exchange for money.
Diminishing Rewards vs. Increased Expectations
Ooops! There’s that money word again. A few quick thoughts about the state of the software economy are in order. Fifteen years ago, the software market was saturated. A few companies had pretty effectively cornered the market in most areas then reachable given the power of PCs, and more than a few pundits of the time bemoaned how difficult it was to make a living in software. Then the Internet came charging out of nowhere, bringing in its wake a powerful (and evolving) distribution system that dramatically expanded the boundaries of the networks people dealt with, something that is still having repercussions. Certainly a few people saw it coming, but most didn’t.
The problem, though, with this phenomenon was that it changed the expectations of people who came of age in this era. They came to see an event that was in its way more powerful than television or radio or telephony or telegraphy (because it could incorporate all of them among other reasons) as being “business as usual”. Yet short of either telepathy or teleportation, there isn’t really much more on the horizon that will have the same impact as the Internet. Web 2, or whatever its called this week, involves making a jump in abstractions, which may have some reverberating effects, but even there what changes isn’t qualitative, only quantitative.
So, back to those entrepeneurs in 1991 … four years later the gold-rush was on, as new niches opened up, as people began putting together core pieces. The great business-to-business revolution was supposed to have happened in 2000, yet halfway through 2006 we’re still trying to get all of the protocols working together. Shrink-wrapped boxes first lost the stores where they were sold from to be sold instead from Internet sites and Fedex, then lost the boxes to be sent via links from web portals, and are now losing the portals and are instead whirling around cyberspace in torrents. There are something on the order of fifty thousand projects on Source Forge, and similar numbers in other repositories. If even one in ten of these projects were viable (a not unrealistic estimate) that means that there is software to do everything from creating grocery lists to scheduling rocket burn times for space flights.
Much of it exists because this same favor for a favor mentality has met the other aspect of the Internet - it becomes remarkably difficult to lose anything, even if it was done five years ago half a continent away. Things persist, and because they persist moribund projects can suddenly come to life again (hello, Firefox!) as new people bring new energy to projects. These projects go through fits and starts, but they do improve over time. If they improve enough, others pile in to help it, to push it forward even more. Pay very close attention to Scribus, for instance - I think this one’s going to go somewhere big.
However, this also works against the “modern” concept of planned obsolescense which underlies much of (especially American) contemporary culture. We’re used to the idea that something only has value if its been recently produced, and there is something vaguely declasse in having something that’s reconditioned or rebuilt. In situations where the new product is demonstrably better than the old, this makes sense, and I suspect that it was generally true throughout much of the 1990s as the technology core on which most of these products were built evolved. Today, however, the market has shifted away from the notion that the customer has real needs that cannot be met with existing software to the notion that the companies must produce software in order to keep in business, even if the market is no longer strong enough to support that software in the face of so many competitors.
There is a sense of entitlement here that borders on the delusional. Companies can only exist if they can service the needs of their customers, and if alternatives exist out there that are cheaper, better, faster, then customers will use those alternatives. Combine that with a huge body of legacy code that’s continually being mined and improved by open source developers who want or need new features, and you see in this the recipe for serious economic problems. The market in general has become extremely oversaturated in most sectors, and while there may be some new “breakout” technology that will introduce a phase shift yet again, its unlikely that it will have the paradigm wrenching power that the Internet’s emergence had.
The notion of software as a service, while a fairly novel delivery approach, is actually likely to only worsen this problem. What ends up happening here is a question of mass customization - being able to create software that in fact is able to be customized readily by the customer directly, minimizing even the customization revenue streams. Such software is not hard to write - in fact increasingly it is becoming the preferred way of writing software, and because of this there will be many more losers out there in the marketplace who will choose to open source their software instead in order to gain residual network effects.
In other words, the market as it stands is far more likely to increase the amount of open source software than to retrench away from it, to the extent that the manufacture of such software increasingly gets to be seen as an offensive or defensive go move for market awareness and perception rather than as a product to be produced in its own right.
Is Open Office a Success?
This in turn gets back to the corporate motives for going into Open Source. Open Office is a prime example of this type of effort, and one that Mark and I debated in the podcast. Open Office was, for Sun, a strategic gamble, not a product purchase. They wished to significantly weaken the degree of entrenchment that Microsoft had in the Office space, which was essentially Microsoft’s cash cow. For Sun the investment was comparatively cheap - they took a fairly marginal office suite and revamped it, making it available for a fairly small fee. More significantly, they also open sourced the effort from the get-go, with the understanding that this OSS version would essentially serve as the beta R & D version.
Overall, the effort has been extraordinarily successful - they’ve made back the purchase price of Star Office and quite a bit beyond from licensing deals, they’ve effectively outsourced their own R & D to the developer community, who of course, have their own reasons for wanting a transparent office suite, and perhaps more significantly they have seriously disconcerted Microsoft in the space that the Redmond company previously was convinced they’d secured, providing inroads for other companies (and projects) to continue to weaken Microsoft at their strongest point.
Has it made Sun the billions that Microsoft has made from Office? No. Not even remotely. On the other hand, it has seriously compromised the ability of Microsoft to make billions more off of a product that, even by more traditional software standards, is extraordinarily long in the tooth. It has given Sun the ability to get into markets that would otherwise have been closed to it, and it has opened up to Sun a fairly significant developer community that are at least now marginally familiar with Sun’s offerings.
A few years ago, there was a lot of writing about the Reputation Economy, stating that reputation would in fact end up being the currency of choice on the web. I think that this notion is a little off. What you see emerging instead is the Obligation Economy, one which can at first glance be confused with the former, but which is both fundamentally different and a little bit darker. The reputation economy is based upon the idea that the more well known you are, the more power that you have. The problem here is that the net is not a political contest. People like Linus Torvald are fairly powerful because they have created immense reserves of obligation - they have done the world a favor, and more than a few people feel indepted by that favor and are working very hard to pay it on, in effect creating secondary networks of obligation (indeed, if you look closely at the GPL, what you see is in effect the codification into legal contract the whole notion of obligation).
The obligation economy was well known to the Romans - as indicated by orations by Cicero and others - and is still the currency of choice in most political circles. Power does not come from money, but from the obligations that comes about by the intelligent use of that money. This is part of the reason why some people can turn a couple thousand dollars in seed money into a multi-billion dollar business, while other people can win the lottery and still be broke within a year - the first group use the money to build webs of obligation which can in turn be used to build other webs, the second group tends to squander the money on material possessions that do not significantly change their own web of obligations, save perhaps to drive away the valuable ones while simultaneously attracting people only concerned with money.
Thus the value proposition for either an individual developer or a corporation in producing open source software, while seemingly nonsensical in the short term, becomes much more evident in the long term - using that software both as a means to change the web of obligations on and from the person or company in question and to use that to gain other competitive edges in the marketplace. It’s nice to think that OSS is based fundamentally on altruism, but its also naive, just as pro bono work is not (purely) an altruistic motive for a lawyer. I do not doubt that altruism plays a part, but there’s a cold, hard, economic reality at work here as well, just one that can’t necessarily be immediately measured in dollars.
Thus, I think it reasonable to say that Open Source software is emerging not because of altruism but because of logical pragmatism in a market that is oversaturated with legacy applications that nonetheless still find users to sustain and continue them. It means hard slogging for many pure software companies … I think the prospects for Microsoft moving forward are actually quite dim, largely because their whole company orientation is still built around the sale of software as a privileged entity at a time when even mass customization has at best only a few more years as a viable solution. Add into this the large pool of pirated software and cracking rings that only have become more entrenched and difficult to stop as the distribution systems have themselves become more distributed, and the “Software Industry” as a whole is likely to be struggling for many years yet, sustained only by the occasional “disruptive technology”.
Towards Mass Customization
Now, having said all that, and just to take out a little bit of the sting from the pain, this is not specifically an indication that the average programmer is going to find himself serving fries with that Happy Meal any time soon, something that I think demonstrably is not the case. My take on “mass customization” is that it is, and will remain for some time, an oxymoron. Computers by their very nature automate those tasks that are intrinsically repeatable within constraints. When you deal with higher orders of abstraction, the constraints themselves become more complex, to the point where they in turn require more sophisticated developers to be able to apply them.
This is where I see the industry heading overall - the base software becomes freely available, but the need for people with the skills to customize that software also rises. Now this runs counter to the way that most corporations, especially those that are “software vendors”, operate. Customizations generally don’t scale. This means that your programmer’s work to solve a given problem for one customer cannot be turned into a solution for another customer without paying that programmer for the second customization.
Microsoft was able to leverage software scaling to an incredible degree in the 1990s, such that the same piece of work produced by a few hundred software developers could effectively be sold millions of times over. Just as a ballpark figure, let’s define the code utilization factor (S) as the number of copies sold divided by the number of software developers involved. I’d put Windows 98 at somewhere in the area of S = 500,000, which is a very sweet multiplier, indeed. I suspect that Vista will likely have an S in the neighborhood of 10,000 or so — many more developers, coupled with considerably slower sales of new PCs, which account for the bulk of all new Windows licenses sold, as well as a general perception that XP is actually good enough for most people.
Admittedly, most companies, even large companies, would kill for an S of 10,000, but the decline is significant, and indicative of the industry overall. Blockbuster games might occasionally get high S values in the neighborhood of a million or so, but games also fall more into the entertainment model than the software industry model, a model where the creative talent is far more important than the engineering talent. Most other commercial software products out there have an S in the neighborhood of 100 to 1000 or so (again, just as a guess, knowing what I do of the industry - I’m trying to put together more empirical numbers now). SOAS will, likely briefly, push a few players up into the fairly rarified area of 5000 or so, largely because SOAS (typically) require fewer people to develop, and consequently benefit from an effect of scale, but that also implies rapid replicability (others getting into a successfully opened market) and frequently is also extraordinarily sensitive to faddishness (don’t buy MySpace.com stock anytime soon, unless you’re looking for a massive tax write-off).
However, the long term effect of the current trends is to point to far more companies having S values in the neighborhood of 1 to 100, largely on the strength of componentization. That is to say, programmers will develop customizations that they can utilize across clients (if they are intelligent) so that they can service a number of clients in a comparatively small period of time. Note that this isn’t necessarily an indicator of profitability. An S of 1 means that a programmer has one and only one client, but that client could pay hundreds of thousands, or even millions, to that programmer, and if a company has an S less than one, it only means that there are multiple programmers assigned to a given client, on average. However, in order to be profitable in that particular scenario, the pay rate per programmer has to be considerably higher than average as well - forcing software costs to go up.
Thus, even in the open source environment, there are considerable pressures that will likely keep software companies successful as long as they can adapt to a low S regime. Things that can be automated largely will be, over time, which implies that software services (customization, not software AS a service) are far more likely to be the norm in the coming years. I think that periodically you will have lottery events - someone’s backroom software project will take off and become an incredible success - but these should be treated in much the same way that one treats the lottery - someone will occasionally win, but playing the lottery tends to be a bad investment strategy for retirement.
I hadn’t really intended to write this essay, and apologize to those of you who had to slog through it, but overall I think it does manage to articulate a lot of what I see happening right now in the software industry, both proprietary and open. There is a tendency that most people have of looking at the momet that they are in as being somehow unique and privileged, but I am inclined to say that we are rather more accurately about midway through a process that’s been underway for nearly twenty years and that will likely stretch for another twenty, that is shaping the interactions between society and the computer/Internet combination. I believe that the “software industry” as we know it is a transient phenomenon, and that the relationship between those who create software and those that use software is a still evolving one - a relationship that likely will end up being far stranger than any can predict. As more things become digital (and this includes life itself, given the increasing power of genomics) resolving this relationship may very well prove to be one of the most significant social issues that we’ll have to face in the years ahead.
Kurt Cagle is an author, technologist and software architect living in Victoria, British Columbia.