Just come across on this post from Rodrigo Moya, beloved GNOME hacker and friend. He is sort of upset by the amount of duplicated work and he is sort of sad about the feeling of competition between free software projects and the duplicity of work that it implies.
Somwhat Rodrigo thinks that we would be better off if we worked together instead of competing among each other. Up to some extend I agree that a level too high of fragmentation is not any good as long as you pursue the success of the freedesktop.
However, I do think that competition is essential, and instead of discouraging it, we should try to understand why peolpe have to start so many different projects to get something right. I would like to share some thoughts about this:
- Building a team of developers is hard, for a team to work well there should be some sort of complicity, vision and easy going atmosphere in a community. And that means that the group of people creating a project have to share the bulk of a common vision. This involves having good leaders, good software architects and perform a good promotion of the project among the open source community.
- Competition and fragmentation are two different things. Ideally competitors have to follow a certain set of common rules, and more importantly, they should participate in the process to set the rules (standards), this is, if competitors pursue the best for their users. Fragmentation only spreads confusion ammong users and makes downstream projects’ life harder (there is where the duplicity of work comes from).
- Competition is our key differentiator against the closed source model. Is the one thing that makes us appealing. Of course it has its downsides, but our efforts shouldn’t go towards constraining that competition, instead, enforcing a set of rules that we all agree about, and commit ourselves to those rules.
I think that companies like Canonical, RedHat or Novell have a lot to say about this, if we have 16 different libraries for a single purpose, don’t you think developers would stop using most of them if these 3 key players decided not to distribute them anymore at some point? As long as these libraries get distributed, developers won’t make the effort needed to keep a sane dependency tree, and if they don’t even then, we are better off without software that is poorly maintained.