Recently I’ve been working hard to consolidate my web presence and to reduce the number of websites on which I depend. One area where I’m a bit too spread out is programming-related sites. I have repositories on Github, Bitbucket, Sourceforge, Gitorious and Google Code. Ok, the Google Code ones are old and not used anymore. Sourceforge is just being used for Grotesque, since the project wasn’t started by me, and I find it to be not very user- friendly ("hulking" would be an appropriate term). It’s not really appropriate for little projects that may or may not go anywhere. I have a couple of private repositories on Bitbucket, which I don’t really use. So, I’ve decided to choose one site and move all my projects there.
In looking at the features of all the sites I use, it was clearly down to Github and Gitorious. Both are pretty sleek sites and both allow easy forking and merging of repositories. From my perspective, the fundamental difference between the two is that Github is user-centric while Gitorious is project-centric. Github’s "killer feature" is its so-called "social programming." In reality, however, I don’t really use it. After being on the site for three years, I’m still only following two people and I am, in turn, only being followed by the same two people. The only repository that I have forked and performed subsequent pull requests is that of Biopython, a big project.
Github does have a few big features that Gitorious lacks, namely an issue tracker and project websites. The latter is not a big concern for me; I’d rather host project sites on this server. The former is a bit of a concern, in that I haven’t seen a very good alternative. Fortunately, I only have one project that has reached a level of maturity in which other people are using it, Grotesque. Given that it caters to a particular niche and that I’m the only active developer, I can handle bug reports by email for now. The other features of Github, tend towards the social aspect, which again, I don’t use.
The main thing that draws me towards Gitorious is that I can organize my repositories. So, I can have a project dedicated to Grotesque, with separate repos for the main application and for an external library developed for it. I can have a separate project just for the repositories for the code behind my websites. Finally, I have a project just for my half-baked ideas that probably aren’t of interest yet to anyone but me.
One other thing is also worth mentioning. While I certainly don’t have any of the complaints about Github that I did about Facebook and Twitter, I have become increasingly aware of and concerned about free software as defined by the Free Software Foundation (free as in freedom, not free as in beer). I hate externalized dogmatism, so I won’t argue my stance on this, but the fact that Gitorious is based on free software while that of Github is proprietary did play a small role in the decision. It wasn’t so clear-cut as with Facebook and Twitter, though, since I don’t really have any concern that Github’s software is up to anything nefarious. So, that was just a "moral bonus" to switching to Gitorious. For the record, there is still non-free software that I depend on (Skype (unfortunately), Spotify, and basically all of the music production software I use), so I’m not really a model free software advocate.
You can visit my Gitorious public profile here. I still have a few more projects to add there but my main active ones are up. I’ll still have my Github account of course, so I can still participate in projects there like Biopython. As for private repositories, I can, of course, just host them here.
What would be best, of course, is if someone came up with a federated Git hosting service, so I can host my repositories on this site but people could still easily do merge/pull requests.