It's the difference, stupid!

There have been recently some complaints about companies like Canonical (who make Ubuntu) or ~CentOS not contributing back to the upstream projects (like the Linux kernel, etc). I don't think it matters at all, simply because of two reasons:

It's probably fine as it is

Ubuntu mostly seems to concentrate on the user layer. Perhaps they are happy with the Linux core components as they are, and just simply don't need tweak the kernel at every occasion. And this goes with every single use of the OSS project - if you're happy with it, don't feel obligated to contribute back.

But if you do tweak the project, then there's a very important thing you must remember:

Deviation From The Trunk Is Expensive.

The further you deviate from the upstream trunk, the more it's going to cost you. You can maintain a small set of patches, but every single new revision of the underlying trunk is going to create you more headaches. There is a strong financial incentive to contribute back to the upstream, unless the changes you made are your own, critical business differentiators, in which case it is worth for you to pay the money, because that is why the customers are choosing your system.

Also, from my own personal experience as an OSS project lead, I have to admit that companies who do contribute back to the development have a whole lot more say as to where the project goes. We've had a few companies who've branched off our system, and then come back with suggestions how we could serve their particular problem. Typically, we tell them to make the changes and then contribute them as patches, and we'll happily take them in the trunk. They almost never do this, though some people do and it's really great. The end result is that these companies are then stuck with same age-old version of the system, and are unable to get the latest advances (including really useful stuff like security fixes), driven by some other companies, because it would be too cost-prohibitive for them to switch to the latest trunk.

The fun thing is that if you don't contribute in a quick manner, it's possible that the trunk has already changed so much that any contributions you send back are essentially worthless. So it is in your best interest to keep very close to the trunk, if you do build your version of the code.

I think this is just plain common sense, and one of the reasons why open source works: over the years, people have expressed concerns that someone could just take your code and make loads of money with it, if you give your source code for free. But because that won't stop the original development, you either need to choose to play ball with the trunk maintainers, or be prepared to use the money to essentially maintain your own version of the project. Which can be about as expensive as writing the whole thing on your own in the first place. So many companies choose to contribute back, because then the maintenance won't be their responsibility.

Open Source has these interesting built-in financial incentives, which transcend philosophical arguments about sharing and freedom and openness. Which is why open source makes so much sense as a perfectly viable model for any incremental development.


No comments yet.
More info...     Comments?   Back to weblog
"Main_blogentry_171008_1" last changed on 17-Oct-2008 11:31:49 EEST by JanneJalkanen.