Don't use the competition cop-out
When talking about why people work on open source its often said that developers are just scratching their own itch. I have also read the innovators dilemma (actually I was referencing it quite a bit in my thesis paper) so I am aware that often innovation occur when someone gives a new twist to seemingly "solved" problem areas. I also realize that solving the same problem with a different approach is an important component here.
The mantra "competition breeds innovation" has become the go-to reply when someone asks why project X isn't using project Y or why there isn't at least some collaboration. Sometimes the answer is also "hey its open source, it can only make the world a better place".
Now before I start disagreeing with the above, I should start with a disclaimer: I am not implying evil intend here by any project that may feel like I am talking to them in this post. What I am however trying to get across with this post is that if you want to be one of the "good guys" it's not enough to not be evil, you have to do something extra.
In regard to "scratching you own itch" I do not believe that while some people might get itches because of NIH but I think most of us are too busy in their jobs to be able to afford NIH. So we shouldn't make it easy for people suffering from NIH to indulge themselves like this.
In regard to the "innovators dilemma": I think there is a little difference to what Clayton was discussing with open source in that we are not in the same dog eat dog world as the proprietary guys but we can actually recombine existing code in novel ways. We can also collaborate to extract common functionality.
Now also believe people have a tendency to overestimate the level of innovation their NIH produces. But more importantly we as a community do incur two very significant costs from NIH:
- spreading our resources thin
- additional time requirement to evaluate all the open source options
For me personally I like solving real world problems, coding itself doesn't excite me much. So to me it always seemed natural to try and collaborate as much as possible. I guess its good that not everybody has this attitude since I cannot claim that I can credit myself with being at the fore front of innovation. And I am not saying that people should stop writing code.
What I am however asking is that people at times take a step back and do a reality check on if what they are doing is really innovation or just piling on yet another solution that has been solved before. And that challenging someone, of course in a polite manner, on this is seeing as important for the competitive advantage of the open source world.
Now when I recently brought up this topic on twitter I was asked for concrete examples of what I mean. I replied that my initial tweet was spawned by the discussion following this blog post analyzing the various doc block parsers for PHP that all seem to be missing different important features.
I also gave another example with PHPCR and VIE. Both are basically about defining clear API's to better separate the concerns in CMS. This in turn enables CMS projects to mix and match. More over it allows CMS to more easily target larger audiences since their apps are no longer monolithic beasts that have to focus their energies on a specific use case.
Finally I would like to state that to me open source was always about reducing redundant efforts compared to the proprietary world. Am I a dreamer? So I would appreciate it if open source developers would stop using the "competition breeds innovation" cop-out as an excuse to indulge themselves in NIH. Thanks :)