It is always said that competition between different producer and companies producing similar products is good for the end users and consumer of those products because the each company tried to provide better products to satisfy the consumer and finally receive more income.
All of the above are true when we are discussing commercial entities which produce the products, for example ORACLE and IBM competition lead to better database and set of middle-ware. But I believe it is not the case for open source projects and specially for smaller open source projects.
Looking around we can find at least 10 different open source blogging clients, MP3 meta data editing tools, media players, instant messaging clients and so on. Except for the first project, other similar projects started after there was something usable around. Developers working on each of these projects work to implement same set of features without looking for potential income while if they combine the engineering and working hours with each-other they could develop a far better project without waiting the time for developing similar functionalities over and over.
There are tens of good projects abandoned because another similar project gained the momentum, developers left the project and start working on another open source one. The result is waist of a developer time and talent which can make big differences in already established projects. Imagine that all developers working on different instant messaging project combine the effort and work on one of available IM projects, wouldn’t that please everyone in the community?
I think it even make the developers happy because it will result in a better working software which any developer enjoys.
I know that there are architectural differences between projects and developers think that they will do the job better than the previous one, I was there once and I know how does it feel, but believe me, working together on a single project makes much more sense than working on 10 separate projects with similar goals and later on seeing 7 of them abandoned.
Again, I am not referring to well funded projects like Gnome, KDE, Eclipse, NetBeans, GlassFish, etc. But rather I am referring to projects which we start as a hubby or as a thesis or to learn some new technologies. A good portion of our efforts can benefits an already established project instead of being deserted after we satisfied our requirement which is learning something, passing a course and so on.