Open Source project hosting has taken a huge step forward over the last year or so. This was facilitated by the emergence of a new breed of version control systems, which are distributed rather than server-based (like CVS and SVN). There is a whole list of these systems now, but the ones that get the most mindshare are git and Mercurial (hg).
Collaboration in open source always used to be complicated and bureaucratic. While there is a lot of talk about how anybody can fix bugs in open source, etc., the practice was quite different. Most projects required you to prove yourself by submitting patches to the maintainers and earn their respect before you would be granted commit access to the CVS or SVN server. That’s understandable, they didn’t want you to submit bad or even malicious code; but it also meant that few people ever fixed bugs they found, because they just didn’t want to put in all that extra work. Many open source projects have also died a slow death by abandonment because there was no easy way for others to take over.
Distributed version control systems have made this much easier, and hosting services like github and bitbucket have added some simple but effective tools. Now, it’s easy to clone a repository, make changes, and then send a pull request to the maintainer. If the maintainer likes the code, he or she can incorporate it into the “official” version. If not, you can maintain your forked version, and the users can decide which one they prefer. It’s even possible to take changes from several people’s forks and combine them into a new version. That makes it possible to effectively take over a project, even if the original repository has been completely abandoned.
I originally signed up with github, and I really liked it. The only real downside was their use of git. Now git is without doubt the most flexible and powerful distributed version control system, but it has a lot of features I simply don’t need. I prefer using hg for its more streamlined workflow and better integration in eclipse. It’s also less of a hassle to set up in Windows and easier to explain to my students.
Perhaps bitbucket is just ripping off github, the two are really quite similar. But what made me switch was a simple limitation: Both github and bitbucket allow up to five private repositories on their lowest paid tier, but github limits the number of collaborators on these to only one. That’s just too limiting for me, and severely limits its usefulness.
Both provide cname support, which lets you set up a (sub-)domain to point to your github or bitbucket stuff. On github, you can create HTML pages, and they even include an elaborate way of creating static websites from configuration files that are hosted there. A cname domain points to your pages rather than your profile, so you can effectively use it to host your website there - but that’s completely useless for me. bitbucket simply points your domain to your profile page, and even changes your repositories’ clone URLs to use the domain. That’s a nice little touch and makes a lot more sense to me.
Maybe I’m making too much of this, but it seems that github is going the route of more complexity for little practical benefit - just like git. I prefer the balance of complexity and power that Mercurial (and, so far, bitbucket) provide.