(This is part 2 of a 5-part series on open source – parts 1, 2, 3, 4, 5)
With open source software (OSS), the immediate costs are generally very low. Get a computer and an internet connection (which you probably would anyway), and you’ve got all the expenses covered to benefit from OSS – and participate in its development. Infinite audience, negligible variable costs, very low barrier to entry. Other than your own time, skills, and effort.
The result? Explosive growth – SourceForge lists some 160,000 projects (or 380,000, depending where you look). Its two top projects (file sharing), have been downloaded half a billion times each.
Is it good? Sure, let a thousand OSS projects bloom, or more, why not.
But there’s also a lot of wheel re-invention going on (I should know, I’m an expert on that!). Some of it, and I fear quite a bit more than most people would be inclined to acknowledge, is extremely unfortunate: “hey, feature/app X in language Y is neat, let’s redo it in language Z!”
Is OSS leading to innovation? I’m not so sure. I suspect that when people stumble upon a potentially truly great idea, they will be tempted to re-consider whether they really want to share that idea with the world, and risk diluting it – by others adding more ideas (in the best scenario), or by others adopting it and succeeding at drawing more attention and claiming credit for it.
Another major hurdle is that turning an innovative idea into an innovative solution requires a lot of hard work. For “big” innovations, you’ll need to get all the right volunteers involved and motivated, have excellent people skills, and show true leadership. It’s easy to hit a wall somewhere along the road and lose interest before the product is finished (I should know, I’ve been there far too often).
It wouldn’t surprise me if for all the people sharing their ideas and working on them in public, there were at least as many others soaking up everything they can find and thinking “hey, maybe I can do something with this and become famous” – or even rich, by switching to a closed source software model. Even the GPL can’t fully prevent that, as long as you keep your software secret (and don’t get caught by having “similar bugs”!). The mere prospect of that happening can drain all motivation from an open source developer (see also: Prisoner’s Dilemma).
So all in all, my impression is that OSS isn’t all that innovative and collaborative as it’s often cracked up to be. Do you need an example? How about “Google”, which was built on the shoulders of open source. Sure, they do give back a lot, also in the form of open source. In fact, they provide what is arguably the greatest free service on the internet. But genuine collaboration w.r.t. their core innovations? No way.
There’s nothing “wrong” at all with this, btw. It’s just not really open.
To be continued tomorrow… Open Source Hardware
There is a huge amount of duplicated effort in the open source community. Not just because of the reimplementing in a different language problem but also because whenever someone disagrees with the approach taken by a project they fork it creating two mediocre projects instead of working towards one good one.
True, but the pool of participants is also very large. Duplication can be useful if it acts as learning experience. It’s impossible to know how much duplication is going on behind closed doors. IMO, of the three issues mentioned (duplication, not finishing, going closed), the last one is the bigger problem, i.e. when really interesting advances are made which then drop out of public sight. The other two are more related to not making optimal use of all the available resources.
Projects also get forked for other reasons. I just forked a tiny extension for Mediawiki because the existing project leader couldn’t be contacted and didn’t respond to posts.
Back to the article contents though I have had the same thoughts. Like probably anyone who has ever programmed the idea of creating a product and selling it is attractive due to the minimal startup costs. However once on has the product then marketing becomes a concern. That is one area in which open source can help but if one is open sourcing the core product then the revenue stream is in jeopardy. The idea of releasing a product with multiple levels comes out where the lower one is open but the more advanced ones require payment. That idea may work in practice but the theoretical issues are annoying: what happens when a user using the open version wants to extend it to add functionality in a pay version? Do you allow that or do you even have a choice in the matter? If that happens, then it becomes a march to continue implementing features. Of course, adding new features is often a good thing so a march of adding features to keep ahead of the open version may be useful. However there is a certain loss of control.
I like the open source world. However I think it might be both the best and worst thing for programmers. Finding some sort of balance where one can still make money from work without giving control to larger controlling entities is difficult.
On a completely unrelated note, I’ve finally caught up with your blog. I became interested in Arduino after first hearing about it a couple months ago and reading about your trials and tribulations has been a pleasure. Thank you for sharing your experiences with us.
Thanks, good points. I’d just like to comment that adding features and choices isn’t always so great – too many configurations, styles, themes, add-ons can also be a step back. Glad you like the weblog :)