github VS bitbucket
I was holding myself back when the bitbucket bashing on the Why Git is Better than X where X is one of hg, bzr, svn, or perforce website began. Jesper Noehr now sent me a link to this wonderful page (Update: The page got replaced with a new one, but I mirrored it for completeness sake) by a github developer.
That really bugs me because I'm a very happy bitbucket user and github is no alternative for me because the VCS on github is a different one. I know that hg is less than optimal, but so is git. hg works for the projects I'm working on, is easy to extend, works flawlessly with trac (which I can't say about the trac git plugin that is so slow because a git API is missing and the plugin has to fork the process which is slow) and has excellent cross platform support as well as a very user friendly interface.
So even if bitbucket would be a direct copy of github it would still serve its purpose as it has different qualities. However. Did you ever notice that Outlook Express looks the same as Thunderbird? Or that Zimbra's web interface resembles Outlook? That roundcube looks like Apple's Mail.app? Nobody complains and it would be pointless because these clients work differently. Thunderbird has countless advantages over Outlook (extensions, no broken news support, cross platform, open source etc.), Zimbra is more an open source exchange implementation that happens to have a web interface and roundcube is a web version of Mail.app so doing a totally different thing. And did I mention that they all just receive and send mail? :)
github and bitbucket are not fighting in the same crowd. github has git users, bitbucket has hg users. And they are not alone as launchpad has bzr users and sourceforge has subversion and CVS users. And you can extend that list for other major code hosting platforms. Most users learn to love their tools anyway and have a hard time switching, so neither of these services should have to fear about a healthy user base anytime soon (except maybe for sourceforge — the new design nuked the fridge).
Josh Goebel wrote an excellent article about the copyright hysteria on look and feel. It's a good read and valid criticism about the whole “ripping of designs” hysteria.
Now back to github and bitbucket. What's the criticism in detail? Here some quotes from the website in question:
The Account Page […] is almost identical in layout - user profile (name, homepage, location) in the top left, a list of your repositories underneath that, recent activity from you in the left side of the screen where the activites are of the format 'username, action in highlight, link to action page, timestamp'
How do you come up with a good UI design? Usually you have a look at other applications/websites to get some inspiration and see where they fail and what they did right. If you implement totally different designs and workflows when you create a user interface the result is most likely user frustration. I remember a time when all linux applications had different ideas to do the very same, so not very clever. So I'm pretty sure the github guys based their design on existing stuff as well. User information on the top right is a common pattern (seen it in WordPress, reddit, digg and others). The “repos left, commits right” overview page itself is less than optimal on both websites, so nobody has to be proud of that particular page. Where does it originate? Not sure, but gitorious has one too and that one looks a lot better than both of the others.
The Project Header. I think there is very little I need to point out here - see how many elements you can identify are nearly unaltered in layout from GitHub. (Hint - GitHub is on the top)
While the two might look similar they are both not that different from other repositories as trac in terms of UI design. Just compare the two pages to the Zine trac for a moment. Not much difference. The bitbucket one is nearly identical to the trac one with the difference of using the project overview header on all tabs. github has a very similar header with the difference that it's not consistently used on all tabs which gives it a very inhomogeneous look and feel.
The github / bitbucket commit log comparison (and images: github commits | bitbucket commits) leaves out a very important detail. bitbucket displays merges as a flattened tree (with a node graph on the left) instead of a simple list. Makes it easy to find out what exactly happened. It also shows tags, branches, number of created, deleted and changed files and marks merges. The rest of the screen is once again nothing unique to either of these two projects.
Another from the discussion is the similarity in the browser view. They actually look nearly exactly the same as the pocoo tracs that are unchanged for far more than a year. Why that? Because we (and bitbucket as well as github) are using the famfamfam silk icons. And these are just the most often used icons on the web.
Yes, services work nearly the same as in github but how else would you implement stuff like that for websites? Not implementing it would be frustrating for the users, and different implementations won't work out. So not exactly sure what's the criticism there. lighthouse and other systems are using external URL hooks for longer than github or bitbucket as far as I remember.
I could take and compare trac and github, compare sourceforge and github or anything else that was there before. It won't be hard finding similarities, and that's not a bad thing. But there are things bitbucket has, you won't find on github that are worth mentioning.
For example the bitbucket repository overview page that shows the summary is also a hg clone URL. You only have to paste the URL to the overview page and you can also clone from there. Also contrary to the github wiki, the bitbucket wiki is actually nothing more than a hg repository. You can clone it and commit to it like to any other repository. Not only does that mean, that you can use the same tools for the wiki, you use for your code, but also that you can take the whole wiki and work offline. Unlike github bitbucket also implements an issue tracker similar to the trac one which is actually surprisingly sophisticated (unfortunately not distributed, but Jesper thinks about implementing that as soon as someone comes out with a nice algorithm to calculate human memorable issue identifiers for distributed usage).
Now to the community aspect. I always hear that github is great because of the community. That may be, but that's not a “feature” of github, launchpad or bitbucket, that's your own project. One of the pocoo developers (when the original pocoo project was still around) submitted some code to launchpad to attract contributors. It didn't change much even though there is a large community. It does not matter where your code is but that people are writing patches, participating in discussions and have a good time. For the pocoo projects most of these discussions take place in IRC and it works out nicely. And it worked like this before github or bitbucket came around. What bitbucket changed was not that it embedded the community but helped contributors. Nearly every patch I apply lately is not a plain old diff but a link to a repository to transplant or merge patches from. And these repositories are most often hosted on bitbucket. And that's great because people can work together on new features which was previously only possible if they exchanged patches via email or one of them had a web server with hg installed.
And from my personal experience I know how hard it is to create a project such as github and bitbucket and how simple and small templates and CSS files are. And the only thing you can just rip-off with few effort is exactly that. The actual implementation is the complexity and Jesper did a good job at implementing it. (Yeah, it's really mostly a one man project; I think he's got a web designer)
So I love what bitbucket does for our projects. And if bitbucket does not have the same page rank as github has, it probably has more to do with how hg or bitbucket are advertised: non aggressive. There are no fancy talks where someone calls other people names and there is no website that says why everything but hg or bitbucket sucks. And that's also one of the reasons I stick to hg and bitbucket: I like the people working on these projects. Jesper is not the kind of person that creates a website for calling other people or projects names and for me that matters a lot. I rather stick to the friendly underdog than the aggressive market leader. And that's unfortunate because github really provides a great system but the recent bashing by some of the developers is perplexing and irritates me.
Update: sorry everybody. I just came back drunk and deleted instead of approved all 10 comments in the moderation queue. Reminder to myself: a) Zine is not drunk friendly and b) never try to moderate your blog drunk.
Update 2: The website in question was replaced with an apology. Also the note on the “Why git is better than X” comparison page about bitbucket is gone now. I think we're all happy again :)
Actually quite sad but it seems there have been quite a few claims about "we are better than you" in the last weeks (e.g. "Macs are better than anything else" etc). And some people seem to be rather aggressive in these. Maybe just a feeling but I think people in the Python community (which I would put hg and bitbucket in) are a bit more relaxed and also - let's say "fair"?
— Christof on Friday, January 9, 2009 21:09 #
I tried github. I hate git but I still tried it. I hated it. bitbucket all the way yo!
— patx on Thursday, July 2, 2009 16:54 #
I started using bitbucket yesterday (so I'm no expert!!). I chose it over github simply because it let me get started for free with a private project. Using github, I'd have had to pay $7/month.
If the project takes off and becomes properly commercial, I'd happily stay with bitbucket and use hg.
I don't suppose it will, but a developer's got to dream...!
— Dewin Cymraeg on Monday, September 28, 2009 15:15 #