Oh the Horror of Duplication

Those of us who have worked in open source development know the claim well - that duplication of effort is an evil to be avoided at all costs and is the sure sign of clashing egos which destroy the community and hinder the open source movement. We have KDE and Gnome, OpenOffice and KOffice and more. There is emacs and xemacs and all the vi clones. In my neck of the open source woods (Java IoC Frameworks) we have plethera of solutions - Avalon, PicoContainer, Spring Framework, Hivemind, and probably a few others.

Those who cry at such a sight and fear the end of all that is good and holy due to such duplicated effort generally misunderstand a number of facts:
  • There is NO single open source movement. It doesn’t exist no matter what the zealots may wish to believe. Open source describes a licensing mechanism and, perhaps, a programming methodology. But a single community? No. Open source developers are a heterogenous bunch. Their aims vary as much as the various goals of people in any aspect of life.
  • Open source developers contribute because they choose to do so and no one person or entity can force collaboration under an open source license. The very nature of the projects and their licenses encourage freedom and choice, not enforced cooperation. Therefore developer and user alike can choose to contribute, compete, ignore, or complain. But this choice can only be made individually, not collectively.

While there are ultimately advantages of cooperating, there is no way to force every developer to do so. Open source development is not the same as commerical development in which cooperation is not so optional and duplication carries an inherit cost, especially internal to an organization. And we have already established that Open Source is not an organization. Apache is. The FSF is. And generally you will find an effort to encourage cooperation within the bounds of these groups. But they cannot, and should not, control the actions of individual developers free to join ranks or mount an offense as they see fit.

As far as I am concerned the question as to why there are so many similar open source projects, so much duplicated effort, is the same as why there are so many nations. Why don’t all the nations just pool their resources instead of wasting money and effort? Why should we pass a particular law here when they already have that law there? Can’t we just reuse it?

I say this as one who enjoys cooperation and building a community around a project. But I don’t feel threatened when a new project competing with mine moves into the web. Nor do I feel I must immediately collaborate with another project if I happen to have interest in a similar problem. In the area of IoC frameworks I actually enjoy the recent competition and certainly respect the efforts of all developers involved. The PicoContainer and Spring folk have given the Avalon community a reason to get off their butts and start kicking some. In the end we’ll have some excellent solutions and no one is forcing anyone to use or develop one or the other.

It’s not that there isn’t merit in cooperation, or that it should be encouraged or sought after. My point is that people will make different choices and are free to do so. As long as this is the case, duplicate efforts are going to be a part of life and we might as well understand that and learn how to live with it. To fear that someone might actually want to compete with us rather than contribute shows an insecurity and a lack of respect. Perhaps most importantly with respect to open source development, the existance of multiple similar projects or a developer leaving the group and striking out on his own does not immediately spell the downfall of everyone’s efforts.

Freedom and choice are wonderful parts of life. They bring both blessings and curses. They bring the option of one to choose to collaborate or not, to compete or not. One can complain that the “open source community” could be much more efficient or effective if we could unite and work on a single goal. But then, so would the rest of humanity.

When someone complains about duplication of effort, I imagine him or her attempting to sway one from scaling Everest. “But Hillary already did it.” Well, perhaps I want to as well and on my own terms. You’re free to join, or criticize, or help. It’s a choice completely up to you.