Literate Programming - We Forget That Open Source is Made of People
blog.steveklabnik.com
blog.steveklabnik.com
A thoughtful post by Steve, but I don't agree with this quote at all. It's misdirected to think that an idea is worth more just because someone has put a lot of time into it. It's also dangerous to assume that there must one way to do something and that it has to work for everyone.
Many others have said this before me, but it bears repeating: Open source is not a zero-sum game. New ideas and implementations do not come at the expense of existing code. The pieces don't get smaller; the whole pie gets larger.
The thing that sucks is people taking sides and getting all bent out of shape over things. Even the people behind "competing" projects can cooperate in their work. Ruby MRI, JRuby, Rubinus, Maglev - all these supposedly competing projects created collaboration on RubySpec and other shared pieces of technology. When John Trupiano and I collided over Rack::Rewrite vs Refraction, we just talked on IRC and had a friendly chat about our different approaches and motivations, and how features in one project influenced the other. Nobody got mad or hated anyone over it. Even major political rivals can be close friends - look at James Carville and Mary Matalin (or don't, if you value your peace of mind).
Interesting, then, that, for whatever reason, I do /not/ see this kind of behavior with the various Ruby implementations: most people I deal with in that community actually seem to enjoy the various versions existing and work together. In this case, I wouldn't even call it "competition": I'd call it "cooperative experimentation".
But this argument breaks down when you look at the nginx vs. Apache example: proponents of nginx tend to just pummel Apache with pain, even when many of the claims aren't even true (which is extra stupid as I don't even think it is correct to believe that nginx and Apache are trying to solve the same problem).
One of the features I noticed from rbenv is that it does less than RVM. This is a good thing, but proposing this improvement to RVM would essentially be asking the maintainer to remove features.
There are many projects with widespread use that have become core projects in the Ruby community (Rails, bundler, RVM, etc). It's reasonable to expect that issues or design decisions get discussed on the project mailing list before you try and divide the community.
In any case, to defend against claims like yours (which are common, it seems), it does seem wise for anyone wishing to create something new to post to existing mailing lists with their ideas. Once the maintainers say "No" to your idea to rip out 90% of their system, you can then create your new project and have the valuable mailing list link to say "Look, I tried."
Naturally, working together on things can get bigger results in the long run, but the idea of creating new projects instead of merely patching up what we already have should never be dismissed or placed "below" cooperation.
The thing that makes git great is not that it is easier to /fork/ other people's work: we don't think of all the different versions of Linux out there maintained by different people in the hierarchy (Andrew Morton, Alan Cox, etc.) as "forks", and no one considers them "competing".
But now, GitHub is teaching this new breed of open source developer that there is no difference between using a distributed version control system to collaborate on a project and forking someone else's efforts to compete with them: that really does suck. :(