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 on this, of course in a polite manner, is seen as important process 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 :)
Update: I should also give some good news in this context. Midgard and Drupal are both looking at Symfony2. As for PHPCR the new mailing list for PHPCR users gained over 50 subscribers within a day.
*Update2**: I should also have clarified that it takes two to tango when trying to collaborate. So I am not telling someone to stop working on something they feel passionate about just because some other project decided that they rather keep doing their own thing, despite the fact that there are obvious overlaps.
Exactly! If two if the competing standards would collaborate then we would be down to 13 but with one having just increased its backing, hopefully tilting things in their favor.
I can only agree with all of your points. Bravo for this post!
I often hear that doing it "right" and doing it from scratch is faster than getting into insufficient code, find your way and make the appropriate changes. There will be some cases when this is indeed the case i.e. when the existing codebase is very wrong.
But there are two errors in that assumption. First doing it right does not only involve the functional aspects but also the code quality and architectural soundness, making that happen from scratch takes time as you will not be able to learn from mistakes from a previous code base easily. The other thing is even more important: maintenance.
If you contribute to an existing Open Source project you go in propose a change, negotiate and discuss and finally commit. Afterwards the whole community will be responsible for maintenance. If you do it from scratch it will you and only you - binding resources you actually need for other real world problems.
Mezzo dreamer, mezzo visionary. I said in a blog post about Symfony2 leading the innovation in the PHP world and I really hope that we are watching the born of greater collaboration between the different projects. For my pleasure, the Drupal folks are looking some Symfony2 components.
This is a huge step not just because it helps to optimize the available resource but also helps with the adoption by more traditional IT departments and new developers. And technically the benefits are huge.
This post is a must read Lukas!
Yeah, the fact that the Drupal guys planning to integrate core Symfony2 components into Drupal8 is huge on many levels. Its huge because it will enable easy integration of applications build on top of these two systems. its huge because it will bring two large user groups together. Its huge because it will mean that Drupal will follow the "HTTP-centric" approach of Symfony2.
Aside from this I am very impressed with Drupal that they are taking this step of engaging the broader PHP community at this stage. Right now they are the leader in the CMS world and so its even more impressive that when they are at the top they realize that they can still benefit from collaboration.