For sometime now, we are seeing some arguments in the industry about open source which I think is a waste of meaningful dialog space. I thought I will put out a post asking people to focus their valuable energy on a more meaningful discussion. This post might appear like a rant but it is not. It is something for the community to think about. It is about using open source to further end-user interests as we move more and more into the services world (see Ben Kepes’s post on how open source is playing a role in the cloud world)
First, some context
When Free Software movement and, then, open source started, the underlying dynamics was usually scratching one’s own itch. The open source software was usually created to meet the needs of an user or group of users and it was shared under open source license for further development because the original creator(s) didn’t have the necessary resources to take it further. Other users took advantage of the availability of source code to either fix bugs they came across or add new features that scratched their own itch. Eventually as the software grew beyond the realm of developers, other users of the software contributed to the project in various ways including bug spotting, software support for other users, evangelism, etc.. Most of the open source projects had a vibrant community contributing code. Slowly as open source got large scale enterprise adoption, we saw vendor driven open source projects emerge with community playing a peripheral role.
Now, the debate
As we move into the cloud world, a small group of people (I refer to them as Tim O’ Reilly School of thought) argued that open source is irrelevant in the services world. I have argued many times about how it doesn’t make any sense and the proliferation of open source projects in the cloud infrastructure and platform layers have clearly made those arguments irrelevant. However, I am seeing an entirely new, but meaningless, debate happening in the industry. This line of argument is used both by people who can’t think beyond proprietary software because they cannot understand the open source dynamics and some in the open source community itself (for marketing reasons). Though it is mainly centered around OpenStack, it can apply to any open source project backed by a predominantly vendor community.
It has been argued that OpenStack community is dominated by vendors and hence it is not open source in the puritan sense. The argument is that a vendor dominated community lacks the purity of user communities and the self interests of the vendors will hurt the project (and, eventually, the consumers of the software). The arguments comes mostly from the competing proprietary software vendors and open source vendors. But, I do see some of the long time open source advocates fall for this line of reasoning. Let me point out why this argument that vendor dominated communities as inferior to user communities is not a valid argument any more:
- The idea of user communities has become less important in the services world. This becomes even less important when we talk specifically about infrastructure and platform services (which end-users never get to “touch”). The nature of communities has changed from end-users scratching their own itch to service providers, system integrators, enterprises, vendors, scratching their own itch. In that sense, OpenStack community is the right “user community” for today’s open source software. Talking about an end-user community for cloud infrastructure software is a meaningless talk because the actual end-users cannot build a cloud at scale in their basement even if they have their hands on the source code. It is the service providers, enterprises and system integrators who take the role of “end-users” in these categories of software. Ideally, the end user community for software like OpenStack will have service providers, enterprises, system integrators along with vendors involved in the project.
- Vendor participation is not a bad thing. What is bad is vendor control. That is why single vendor driven open source projects are differentiated from the community projects. If the community behind an open source project has large number of vendors, it is no different from the end-user communities of past. When too many competing vendors (with their own business interests in mind) coopete (cooperation + competition) in an open source project, the checks and balance created by this coopetition creates a dynamics similar to the end user communities driven by “scratching their own itch”. The difference is the power of money these vendors have to push their agenda. This power can be completely neutralized if the license for the software is a very flexible one like Apache (I can do a separate post on why Apache, and not GPL, is well suited to negate vendor control but it is for another day). The key here for the dynamics of vendor driven communities to mimic user driven communities are large number of vendors and a flexible license. OpenStack has both these features and hence there is absolutely no difference in the dynamics compared to the user communities of traditional software world. In fact, as we speak, another vendor is getting ready to jump into OpenStack bandwagon (which we will officially hear soon).
- Let us take a look at Linux Kernel. When it was purely a desktop focussed operating system, the kernel community was predominantly dominated by end-users. As Linux started becoming dominant server operating system, we saw large-scale contribution from the vendors including hosting providers, system integrators, etc.. As the nature of end users shift from individuals to organizations, the contributing community also changes its color. Today, vendors contribute significant chunk of the kernel code. Does it make Linux kernel anyway inferior? Even though OpenStack project lacks the benevolent dictator like the Linux project (I definitely would like to see one), the coopetition itself will create enough checks and balances to keep the project on track. In fact, large number of vendors in an open source project with flexible license is like a perfect free market model where self interests and an invisible hand will push the system in the right direction.
- Even if an open source project is in Apache Foundation, if the contribution to the project is from one (or handful of) vendor(s), it is not very different from a single vendor driven open source project. So, it is all about diverse contribution and how the self interests of the contributors creates the checks and balances in open, democratic ecosystems.
If I were an OpenStack competitor
If I am part of the marketing team in a proprietary or open source vendor competing against OpenStack, I would not waste my time and energy focussing on whether OpenStack is a vendor driven community or user driven community. I will compete (and drive my marketing messages) only on important issues like maturity of code, reliability, scalability, use cases in production environments, etc.. If OpenStack is a mess, it will help drive the adoption of my product and push OpenStack to work hard. If it is not, it will make my organization work hard, driving up the competition in the marketplace.
In short, any talk or attack about vendor participation in an open source project is a meaningless talk/attack. Instead, we should use our valuable time on important aspects of the open source by accepting the changed dynamics of open source process. What do you say?