Is Open Source capitalist or communist?
About once a week a certain blogger stridently claims Open Source is a Capitalist Movement! or Today, Open Source is Commercial! and Open Source is About Capitalism, Not Freebies!
First, is business capitalistic? Well, sure, you'd say. But the truth is that business rarely operates under a pure capitalist model. And especially not now. Under such a model, a bankrupt or uncompetitive business would be allowed, indeed encouraged, to die in a sort of Social Darwinism.
Yet one need only look at economic recovery schemes worldwide to see that companies thought of as the epitome of capitalism just last year are now only too eager to nurse at our collective tax-funded teat, with the approval of their peers and millions of smaller businesses worldwide.
But business isn't only Communist when it's down. Business requires a commons to operate. Public roads, and infrastructure in general are the usual examples, but also the broader collection of nearly everything that government does: providing a common framework of law in which business can compete, keeping civil order, providing education for the work force, funding research and development.
Add this to the list of commons that business depends upon: Open Source. Open Source is the interstate highway system of software. It operates the Internet and telecommunications infrastructure through which business communication is carried out, and much of the infrastructure of each individual business.
Is Open Source Communist then? Not usually. Its development is funded through three separate paradigms, and only one of them can be said to not have a business goal in mind. They are:
This refers to collaboration by businesses interested in development of infrastructure software, for their own operations or in a supporting role to their product.
This activity is not intended to produce profit directly. Instead, it allows a company to keep more of the profit that it had been using to fund cost-center software development. It provides software to operate the profit-centers more efficiently and effectively. This is the biggest source of Open Source development today, and is represented by projects like Linux, Apache, and Eclipse.
But note that some of the best developers on these projects don't have any business motivation.
This is sharing without any profit motive as a primary purpose of the activity. This applies to some of the best developers on the otherwise-profit-motivated projects, and to many projects operated by individuals, schools, and organizations. It also applies to most Open Source projects before they can attract business participants.
Linux would never have kept going if it had to depend on business at the start; it took years before companies had any serious interest in running it. Those early developers never expected a profit from business participation in the project, though many of them have now found jobs in what was previously their hobby.
The projects operated by the Free Software Foundation are probably the best example of this sort of development.
3) Direct Profit
This refers to software produced by companies that expect to make a profit from something directly associated with the software: through commercial licenses of software that is also dual-licensed as Open Source, through service contracts, training, an enhanced commercial version of the software or commercial add-ons for the software, etc. Some examples of this are MySQL (Sun), Berkeley DB (Oracle), and Spring (SpringSource).
Notice that only the last of these paradigms has a direct profit goal in mind. Two have business in mind. One doesn't have financial goals as its raison d'été. And there's a lot of mixing between the three paradigms. So, the question is Open Source is capitalist or Communist isn't a very meaningful one. It's both and neither.
Red Hat, Ubuntu, Novell
Perhaps at this point you've looked up and said Where's Red Hat? Red Hat, Canonical (Ubuntu), and Novell are like stockbrokers rather than the companies behind the stock.
The Linux distribution companies do make and sell their own software, but they are primarily in the business of packaging, configuring, and supporting software that is made by Open Source projects outside of their company. The result is distributed as a boxed product or bundled with computers for sale.
The Linux distribution companies may or may not participate significantly in the Open Source projects whose work they distribute. All three of the above development paradigms - infrastructure, non-profit, or direct commercial, apply to the software packaged by the Red Hat, Canonical, and Novell.
The Mozilla Foundation is another interesting exception. Even though they're not operated for profit, they have gotten much of their funding from Google, who has an obvious interest in having good web browsers for their service business and doesn't want Microsoft or Apple to dominate the web. So, I'd put them in the "infrastructure" rather than "non-profit" category.
There are other mixes between the "non-profit" and "infrastructure" paradigms: Open Source projects that have very strong participation from a single company, but are allowed broad latitude to manage themselves lest they stop looking like an Open Source project and lose collaborators.
CUPS, the printer server project, was purchased by Apple but continues to be the main printer software in Linux and Unix systems. 5 of the 6 main Samba developers were employed by HP at one time, but only after HP agreed to leave the Samba copyrights in the developers names rather than HP's. Google, HP, IBM, and Red Hat no doubt have a strong participation in many Open Source projects, and more companies join that list every day.
Because the motivations of the Linux distribution companies often differ from those of the folks producing the software, they walk a tightrope between maximizing their own profit by being more closed and alienating the communities that produce the software they sell. The falls from that rope have been colorful.
The economics of Open Source don't work particularly well for distributions, because ultimately they're selling software that they don't own and that others give away for no charge, and their real product is integration - which is also available for free. Red Hat has been able to achieve financial success, but they are essentially alone in this, and more servers are running an "unbranded" no-charge version of Red Hat than their commercial product.
Having it Both Ways
The most successful Open Source projects have both "capitalist" and "Communist" elements to them.
Often there are engineers participating for a commercial project, who have very well-defined goals and tight schedules. They can't take time to build facilities they don't need. And they don't need it perfect, they need it Tuesday!
If participation only came from such engineers, the project would soon devolve to a mess of spaghetti code. They might be highly professional, but their company goals don't allow them to provide all of the professionalism that an Open Source project needs.
Consider, for example, Google's recent mis-step in submitting the wake locks patch to the Linux kernel group, which rejected it for insufficient quality. That's Google we're talking about, a company that can afford to be as professional as it desires.
Besides the goal-directed developers, we also need "architects," who spend a lot of time on the elegance and generality of the code design; we also need "janitors" who clean up the code and unify its style. These folks can't afford to be on a tight product schedule, and often come from research rather than product departments, or they're private individuals with an interest. These are the folks who keep the project healthy and useful for the rest.
Perhaps this is why, in a recent survey of Linux kernel developers, the largest company participating was "No Affiliation."
Linus Torvalds is the ultimate architect of the Linux kernel, but he has a cadre of "signers" who approve changes to various subsystems of the kernel.
The common thread between them is that their work in approving the changes of others can't be directed by their employer, and none will approve a change to the kernel for exclusively business purposes. The code submissions they approve must be of obvious use to multiple classes of user and of high quality. Because new code is visible to everyone and there are many kernel developers, low-quality code that does creep in will ultimately be excised by others.
So, would we want Open Source to be exclusively Capitalist or Communist in its nature?
No. First, we have to be conscious that 4 out of 5 start-up companies fail, and thus a good deal of the originally-profit-motivated Open Source code has survived the company that created it. One good example of this is Nautilus, which provides file-management for the GNOME desktop. Created by Andy Herzfeld's long-gone Eazel company, the code has developed substantially in the absence of its parent.
We need to acknowledge that good developers come from many different walks of life, that their motivations differ widely, and that the overall strength of an Open Source project comes from the diversity of its users and developers rather than their homogeneity. Diversity of interests leads to generality of the code, to development of useful pathways that might otherwise never be trod, and continued support of the project when business falters.
Obviously, many of the "Commercial Open Source" companies will be gone eventually. That's just a reality of start-up companies, whether they're Open Source or not.
The difference with Open Source companies is that we still have their code, for which I thank their management and investors, and there will be people interested in running that code and maintaining its viability even though it's not their profit-maker. Open Source companies are a bit more "green," because the legacy of their development is social benefit that survives their demise. Code of failed proprietary software companies quickly becomes useless. So, Open Source is capitalist and communist, commercial and a hobby or academic project. All at the same time. Each increasingly needs the other to operate at its best. There are three different paradigms behind Open Source development, and only one of them is either primarily capitalist or unconcerned with capital. I hope this will help you understand where you belong in Open Source, and how to justify your participation.
Bruce Perens is one of the founders of the "Open Source" movement in software, and today is a strategic consultant to government and companies large and small on issues of Open Source, Open Standards, and technology. He spends a lot of time explaining software engineering to lawyers, and law to software engineers and their managers. He can be reached via email@example.com, or 510-984-1055.