Before I get started, I want to make it quite clear that I have no problems with Github – au contraire, they provide a very nice service. What my speculation centers around is the social dynamics of Github.
One of the Github guys writes a nice response to my original post, here:
First of all, apologies for the comment bug. In theory, it has been fixed by the Typo guys, I just need to find the time to upgrade.
Chris mentions that it’s possible to create a “SourceForge style” project on Github. I see that it’s possible to add collaborators, so I guess that’s what he means. I still find it a bit ugly to have things at …/davidw/… but that’s not very important if the URL is at least stable, rather than hopping around to whoever has the latest fork and updates of the code in question.
In my other post, I talked about people being less interested in doing what it takes to contribute to existing projects, rather than forking them, unless it’s really called for. Here’s a concrete example of how things might go wrong. At my current consulting gig, we were looking at utilizing actionwebservice to do some SOAP stuff. That code is not part of Rails anymore, but that’s not the problem – surely someone has decided to take up maintenance of the gem, right? Well, yes… but let’s look:
root@fortrock:~# gem1.8 search -r actionwebservice *** REMOTE GEMS *** actionwebservice (1.2.6) datanoise-actionwebservice (2.2.2) dougbarth-actionwebservice (2.1.1) nmeans-actionwebservice (2.1.1)
So we have the original, clearly out of date, and three others. Yuck… I guess we’ll use the 2.2.2 one, but who knows if perhaps the others contain some good stuff too? Let’s Google it.
The first link is to a RubyForge project, which is basically dead. A few links down, there is a link talking about a more recent version, at the Datanoise site. However, it’s one of many. Confusing. If you go to the github page for the datanoise version of actionwebservice, the README has this:
The latest Action Web Service version can be downloaded from
Hrm. We were just there and that doesn’t seem quite right… Sure, it’s an easy enough oversight to ignore, but it adds to the confusion.
Now, this is not really a serious problem, but do you see how it could get worse over time, as various people fork the code, write blog entries, and so on? It would get harder for someone interested in utilizing the code in question to ascertain which is “the” version. It’s not hard to imagine situations where two forks add different bits of useful code. Typically, in situations like this, new users, those who don’t know the code at all, are also the people least able to look through all the diffs and changes and log entries and what not in an attempt to merge any changes that might be useful. This leads to a “paradox of choice” type of problem.
Another consideration, this one more positive, is that perhaps people are putting code in Github that, in the past, might have simply remained on their own computers, with no effort whatsoever to share it, so in that sense, Github might be doing people a service by at least making the code public.
However, even in that case, if the service fills up with code that people have simply “thrown over the wall”, rather than creating a genuine open source project, with a community, communication channels, and so on, it could get a reputation for having code that you have to handle with care, as a lot of is just stuff slapped up there without much thought to quality or continuity.
Anyway, the Github guys have done a nice job with the service, and I’m sure they’ll continue to improve it. Who knows, perhaps they have some good ideas about mitigating some of these potential problems that they’ll be rolling out soon.