Posts Tagged ‘opensource’

What drives Open Source?

Tuesday, January 5th, 2010

This article is intended to be a continuation of Modern Thoughts on Open Source. Although this article is totally independent, I’ve used the idea of “open source as an infrastructure” heavily.

Everyone understands how Microsoft makes money, but very few understand why they’re getting a wonderful operating system like Ubuntu free of cost. I’ve tried to explain it here.

The problem with opensource software is simple. The “vegetable vendor” model that most closed-source software uses fails with opensource. Take the most popular and simplest example: RedHat. It essentially creates two operating systems from the same codebase: RHEL and Fedora. They sell support for RHEL to corporates, while giving away Fedora to the community, and sponsoring its development. Make no mistake: RHEL is opensource as well, but it has no community like Fedora does. RedHat decides what to go into RHEL, and they build it themselves. Anyone else is free to build it for themselves ofcourse, but they don’t support those builds [1].

Why bother with Fedora at all? Simple. The first thing a RedHat service engineer does when he gets a complaint from a customer: attempt to replicate the bug on Fedora. If the bug’s fixed in Fedora, fixing it in RHEL is as simple as backporting the changes. If it isn’t, they’ll file a bug in Fedora. Depending on the situation, either they’ll get the bug fixed free-of-cost by the community, or will have to fix it themselves. In other words, they’re just getting code from the community free of cost by maintaining Fedora. Then why not give Fedora to the customers? Because bleeding-edge development takes place on it, and stuff often tends to break and get fixed at a later date [2]: RedHat cannot control what gets committed to Fedora, but they will make sure that only mature features get into RHEL. This service model not only applies to complete distributions, but to individual software packages as well- PostgreSQL, MySQL, Django are just a few examples.

So finally, who writes Fedora? The Fedora Board consists of nine members: five of whom are RedHat employees and four of whom are community members [3]. A lot of mainstream opensource software has a similar distribution of paid/ community developers.

Another famous model is the dual-licensing model followed by MySQL AB (now acquired by Sun). They give away MySQL community edition for free, but their enterprise edition is proprietary [4]. The advantage of having these two editions is similar to the one RedHat gains from having RHEL and Fedora. A similar approach is followed by OpenOffice.org: Their proprietary product that earns them revenue is called StarOffice. Advertising is yet another way: Google pays Mozilla for example.

So, the final question remains: apart from the corporates, who is this “community” that writes the code that end-users get free of cost? Most free software projects started out as “pet projects” with little monetary incentive. The Linux kernel was written by a student as a personal project, and several parts of the GNU operating system was written by Stallman in an attempt to create a free operating system- both were individuals who weren’t concentrating on revenue at that time. Things have changed a LOT since then. While there are still many tiny pet projects that are developed by a few people for little/ no monetary incentive, majority of the contribution to mainstream software such as Linux is from people with monetary incentive. The corporates these people work for benefit either directly or indirectly from that opensource project. Corporates that provide support for these opensource projects, that build their products on top of these opensource products, and those that simply use these products in their everyday work. Simple example: Google finds a bug in Chrome, and finds out that the underlying reason is WebKit. After fixing WebKit, getting that fix merged into upstream will benefit them, because they’re not the only people developing it. Same reason Google will contribute to SSH: They’re using it, and they’re not the only ones developing it.

Even non-monetary incentive doesn’t mean no incentive. Contributing to opensource is a great way to secure one’s future. All the work is out there in the public for everyone to see, and you don’t have to explain the work you did behind the closed doors of a large corporation in flowery language. Code talks. Everything else is CV-noise.

The whole model is sustainable in my opinion. A large corporate uses several bits and pieces of opensource software to create a product. They create an opensource project to drive it, and appoint some developers to head the project. I’ve already discussed how they’ll make money to drive it. Students and other prospective employees start contributing to the project for no monetary incentive, with the intention of rising higher in the project’s hierarchy. They’re essentially making themselves employable by the company- once the company recognizes some brilliant developers, it starts paying them and giving them specific tasks. An additional bonus kicks in when other companies also become interested in the project and start paying more developers to develop it. There’s always some ratio of developers working for monetary benefit to those working their way up.

Modern Thoughts on Open Source

Friday, January 1st, 2010

Few people understand open source. Even fewer use this knowledge to their advantage. On one hand, there are free software fundamentalists with their utopian views, and on the other hand we have closed corporates who don’t possibly see how open source could work. Both miss the point. I’ve attempted to explain it using four questions to guide the article. Admittedly, a lot of what I’ve said here was explained to me by Kiran Jonnalagadda (aka jace, jackerhack).

  1. Why do RedHat, IBM, and Novell contribute so much to the Linux kernel? Is it because they care about the free software philosophy and are being charitable? To quote the Linux Foundation August 2009 issue, “Over 70% of all kernel development is demonstrably done by developers who are being paid for their work” and “None of these companies are supporting Linux development as an act of charity; in each case, these companies find that improving the kernel helps them to be more competitive in their markets”
  2. Why does Google pump money into a competing against Firefox with an open source alternative, Chrome? To quote an excerpt from their December 2009 blog post, “Today’s open source goes far beyond the “patent pooling” of the early auto manufacturers, and has led to the development of the sophisticated software components — Linux, Apache, SSH, and others — upon which Google is built”
  3. Why are several of Microsoft’s products losing market share? Why does Microsoft feel threatened by Linux? To quote Ballmer, “Linux is a cancer that attaches itself in an intellectual property sense to everything it touches”. Is it because the general public is convinced by the GNU philosophy to “share with thy neighbor”, or is it simply because of competition?
  4. And finally, a slightly off-topic question to reinforce my point. Why did Apple finally make the move to x86 even after their innumerable claims that PPC is better? Is it because PPC is inherently inferior to Intel’s x86, and nothing could have been done to save it?

All this points to one thing: Open source is an infrastructure. Just like the roads in the city that automobile manufacturers are interested in, software companies want access to existing infrastructure to build their own products upon and make money, instead of having to re-invent the wheel everytime. It’s a win-win situation for all companies. Paying Microsoft to get Windows to support their products can be an expensive affair. So making an operating system a commodity is in everyone’s interests (well, except Microsoft’s). The web browser is another example of a commodity today. Everyone’s interested in a good, conformant, open platform on which to develop their web applications on.

There are commodities in other sectors too. Apple moved to x86 because it was the standard commodity to use. Too many companies pumped money into it resulting in its development, and mass manufacturing brought down costs. Apple understood this- one company pumping money into PPC cannot match the rest of the world pumping money into x86.

The day a product comes out, every other company tries to clone it and make the product a commodity. In the small time window between the product being niche and the product becoming a commodity, there is money to be made. Take Netscape’s example: Once they felt the pressure of the competing web browsers, they realized that keeping their browser closed and exclusively pumping money into it was pointless. So they opened it out, and started the Mozilla project. In other words, open sourcing a piece of software typically means that that piece of software can no longer make money as a traditional product anymore. Same reason Facebook open-sourced many of its components: It has everything to gain, nothing to lose. It’s already too big on the social networking front to worry about competition there.

Largely, there are two ways to make money off this infrastructure: sell the cars that use these roads most sensibly, or follow a “pure service” model. The problem with the pure service model is that only RedHat and a few other companies have been successful at it. The argument “I created it, so I can service it best” doesn’t hold anymore- too many people have technical expertise in open source software. So unless your service is the cheapest and the best, it’ll be killed off by other service providers.

Products don’t have to start off being closed and then open up when they stop making money. Companies are also interested in starting off free software projects. Google Chrome for example. They wanted to make this web browser a commodity, a commodity created by them. They’ll have a foot at the door when Chrome gains larger market share.