I’m switching my public open-source projects from Bitbucket to Github, and in the process also from Mercurial to git. But the switch has little to do with git vs. Mercurial; it’s mostly about Github winning the platform war vs. Bitbucket. I like Mercurial, and it was a natural choice when switching from SVN a few years back. Back then I wasn’t familiar with git, and I am quite a bit more familiar with it now, but still the actual SCM played little role in the decision.
Well, to be precise there’s one thing I find slightly more convenient about git. I really like its throwaway-branch mode of development. I want to be able to create quick local branches for hacking, throw some away, merge others and keep my history clean. I want to commit every single comma if I feel like it, without worrying about polluting the "official" history. So git merge --squash or squashing with interactive rebasing are workflows I appreciate. It’s not that these aren’t possible with Mercurial, which recently gave up a bit on the pedanticism and allows similar workflows via extensions. But it’s not the natural or the familiar way of working with Mercurial. As a proof of that, I kept receiving pull requests with dozens of useless small commits just to implement some feature, and kept asking the contributors to find a way to send me a single commit, or just leave the pull request machinery behind and send an old’n good patch file.
But I’m getting sidetracked. Github is just way, way more popular these days, especially for open source projects. I was very disappointed seeing many contributors say they’re reluctant to contribute because that would require creating a Bitbucket account and fork my projects there. Would I please just switch to Github? sigh… I can understand that – Github managed to give coding a nice social aspect – your Github profile is part of your online "rep". You want your contributions to other projects to be seen through it, so people were feeling that having a fork on Bitbucket is like this hidden place no one will ever see and attribute to them.
A curious anecdote of the relative popularity is something I noticed when I started doing the switch. I had more followers on Github than on Bitbucket! Oh my, even though I had a number of moderately popular open source projects I was furiously hacking on Bitbucket, vs. a bunch of half-neglected forks and hacks on Github.
So here it is; not an overly coherent set of thoughts, I’ll admit, but I hope it makes sense. I don’t have anything against Mercurial or Bitbucket – I’m still a user of both. But the higher-profile open-source projects are now on Github. Happy hacking.