Bitbucket is no Bit bucket
When github appeared on the internets for the first time, there was a short period of time when I saw the admins of that sitehappy github users[See the follow up to this post for an explanation] jump into many IRC channels of projects that were using git already to switch to github for hosting. Personally for me that was alarming because after a while it appered that git without the hub was no accepted option any more for open source projects.
Ever since we‘re running our own server I think nobody of us ever regretted to host our personal development tools such as subversion (or now mercurial), trac, irc bots and a lot more. Root servers have become pretty cheap (especially in Germany) and debian/ubuntu make server administration a charm.
It really hit me hard when I noticed that people are sacrificing the distributed nature of git and switch to a central hosting location, even though they have their own server infrastructure (I’m looking at you, rails team). Git was designed to not be dependent on a central server and it just doesn’t feel right in my eye to force people to switch to a cental hosting platform because it provides things you would be missing otherwise (branchviewers, fork overviews or something).
This was pretty much the reason why I wasn’t interested that much in bitbucket either. I found it a well done version of hgweb with very fair hosting plans with builtin wiki and bug tracker. Basically the thing I would prefer over Google’s code hosting (I’m not a big fan of subversion any more you know).
A few days ago however I signed up on bitbucket so that I could push to the dozer repository. A few hours later jespern queried me on freenode and welcomed me to bitbucket. First I was afraid the conversion that started would evolve into a github like “switch to our service, you won’t regret it” conversion but it was actually nothing of that sort. That fear out of the way I decided to try mirroring some of the pocoo repositories to bitbucket (because well, you know: we do have some server outages from time to time and a mirror is never a bad idea). And what should I say? It’s a really, really nice way to host open source project. I won’t compare it to github here which is very similar except that it uses git rather than mercurial and doesn’t offer a bug tracker and different plans, but to google code which is a very popular project hosting platform these days.
The big advantage over Google code is obviously that you are using mercurial rather than Subversion. While a closed source project usually has a known number of developers that all have access to the code an open source project usually deals with code from constributors that don’t have access to the code. So I personally think that this alone makes Google code look bad for open source projects.
Both Google code and bitbucket are providing a wiki and a bug tracker. The wiki in Google code is implemented on top of Subversion which is not really that interesting to know but it of course gives you the possibility to access the data locally too. Bitbucket does something very similar and stores the wiki pages in a separate mercurial repository. Especially nice is that the wiki syntax is the well established creole syntax which makes processing of the wiki pages locally very easy. You can pull your complete wiki history as mercurial repository and do whatever you want with it.
The bug tracker in bitbucket is probably the weakest part of the system. While it provides a simple ticket system it is missing a good mercurial integration (eg: that it listens for “this commit fixes #42″) and automatically closes / reopens tickets based on that information. There is also no way to import or export the tickets as far as I can see but I guess that this is a feature that could come in the future.
What’s missing compared to Google code is a file hosting facilty. I don’t think that this is something bitbucket should provide in the future, but that’s definitively something a separate project shold try to fix. Now that sourceforge is starting to look more and more like a domain parking site and being less useful than ever, it’s time for someone to stand up and provide file and website serving :)
There are some things I’m missing on bitbucket currently that would be nice to have. For example it would help mirroring a lot if it was possible to add ssh keys directly to a project instead to a user so that I can grant write access to an ssh key that is only used for mirroring. Integration with CIA (the announcer bot) would be kick-ass too. Maybe it would even possible to specify incoming hooks in form of urls. Every time a changegroup comes in bitbucket would traverse the list of URLs and send them a summary of the changesets as JSON dump. As noticed above tracker <-> mercurial integration would be a nice to have as well as export / import support for it.
I’m really impressed by bitbucket by now and can only recommend it for project hosting. Most important: you are not selling your soul to anyone. If you are unhappy with what you get, you can grab *all your data* and go somewhere else thanks to mercurial. And that this is possible should also give you a good feeling because it means that the people behind bitbucket will care about you to not loose you. Because the success of a website always depends on the number of happy users :-)
The (by now inofficial) pocoo mirrors are listed on my bitbucket account. Don’t get the headline? Read up bit bucket.
I was sceptical too, but now I’m considering to move one of my projects to bitbucket and see how that will work.
On the other hand, Bitbucket isn’t very polished as of now, there are some nice features that they could add but jespern is happy to accept suggestions. I already talked to him on IRC.
Comment by Marek Kubica — Sunday, September 14th, 2008 @ 5:30 pmFor Python libraries at least, PyPI provides file (download) hosting, and just recently added support to upload HTML documentation. You don’t get your own domain name, or anything dynamic, but it should be good enough for a lot of small projects.
Comment by Ian Bicking — Sunday, September 14th, 2008 @ 8:44 pmCIA integration is in the works: http://www.bitbucket.org/jespern/bitbucket/issue/205/cia-integration
Comment by Chris Rebert — Sunday, September 14th, 2008 @ 9:56 pmAnd regarding hooks: http://www.bitbucket.org/jespern/bitbucket/issue/141/add-an-api
Sorry, the hooks bug is really http://www.bitbucket.org/jespern/bitbucket/issue/180/post-commit-actions-aka-services-integrati
Comment by Chris Rebert — Sunday, September 14th, 2008 @ 10:04 pmI am no open-source zealot, but I find it alarming that more and more developers use closed-source applications to manage their open-source projects. I don’t think Stallman is proud for this tred ;-)
Comment by amix — Monday, September 15th, 2008 @ 1:05 pm@amix: While using github, thoughts like those pop into my mind once in a while. You have a good point.
Comment by beppu — Monday, September 15th, 2008 @ 1:38 pmTL, DR.
Some headings and bullets would help.
Comment by Mark — Monday, September 15th, 2008 @ 3:59 pm“It really hit me hard when I noticed that people are sacrificing the distributed nature of git and switch to a central hosting location” — that’s junk though. Everyone who clones from the “central hosting location” still has a complete copy of the project history. Anyone can upload it elsewhere, or maintain a mirror on another site. Nothing is “sacrificed” here, they are just using a good hosting service. Just because a project is decentralized doesn’t mean they can’t keep the useful aspects of having a central “official” repo and a repo viewer, etc., and these services make it easy to clone and work on another project. Nothing about the sacrifices the distributed nature of the project which is enforced by *git*, not by the hosting service.
Comment by Steve — Monday, September 15th, 2008 @ 6:47 pm@Steve: I agree with that. My point was about switching from a working git hosting to only github. And once the majority of repositories are hosted on on central platform a downtime of that platform is more of a problem than the downtime of just one repository.
Like the cheeseshop. Every time it goes down people appear in various IRC channels screaming for mirrors. Same thing if sourceforge is down just that sourceforge drives itself into a hole of irrelevance.
Regards,
Comment by Armin Ronacher — Monday, September 15th, 2008 @ 10:14 pmArmin
If you could provide any examples of times when GitHub admins (there are three of us) tried to force anyone, in any IRC channel, to switch to GitHub, I’d really appreciate the information.
Comment by Chris — Saturday, September 20th, 2008 @ 4:44 am@10: I don’t have my IRC logs here so I can’t grep for it, but I remember when Postgres started providing git repos, the github blog had a blog post that said: “and now they have to move to github”.
Comment by Armin Ronacher — Saturday, September 20th, 2008 @ 9:23 amSorry Armin, it doesn’t work that way. We’re asking our users, who obviously are happy with our service, to tell their friends about it. The blog post in question is here: http://github.com/blog/166-postgresql-on-github
What we are not doing is having the GitHub “admins” enter random IRC rooms and attempt to convince strangers to “switch to our service, you won’t regret it.” This is what you describe in your article and without proof, of which there is none, you are just spreading FUD.
I’m really sorry that you feel the need to tarnish the reputation of a small company which is trying very hard to provide a completely free service, with no strings attached, to the open source community.
It’s a real shame, too - you were so helpful to me when I came into #pocoo to ask for Pygments help. The only interaction I’ve ever had with you in IRC was positive and constructive, yet you seem to think we’ve been trying to forceful convert projects to use our site or alienate those who use git without GitHub.
Comment by Chris — Saturday, September 20th, 2008 @ 7:32 pm@12: I don’t want to spread FUD, and if I’m wrong, I want to apologize. I’ll check my IRC logs right away, maybe I was wrong and it was none of you.
Regards,
Comment by Armin Ronacher — Saturday, September 20th, 2008 @ 10:45 pmArmin
Bitbucket seems good for those who want not to have to worry about managing their own server for repository hosting. If one would like to use his own server, however, it seems not to be an option. It would be nice to see more people contributing to the open-source (BSD licensed) freehg.org code (http://freehg.org/u/mmarshall/freehg/) , bringing it to a point where it shares many of the features bitbucket has.
Comment by anon — Friday, October 24th, 2008 @ 12:33 pm