Thursday, November 18, 2010

Google Code vs GitHub for hosting opensource projects

Cython is now considering options where to move the main (mercurial) repository, and Robert Bradshaw (one of the main Cython developers) has asked me about my experience with regards to Google Code and GitHub, since we use both with SymPy.

Google Code is older, and it was the first service that provided free (virtually unlimited) number of projects that you could easily and immediately setup. At that time (4 years ago?) that was something unheard of. However, the GitHub guys in the meantime not only made this available too, but also implemented features, that (as far as I know) no one offers at all, in particular hosting your own pages at your own domain (but at GitHub's servers, some examples are sympy.org and docs.sympy.org), commenting on git branches and pull requests before the code gets merged in (I am 100% convinced that this is the right approach, as opposed to comment on the code after it gets in), allow to easily fork the repository and it has simply more social features, that the Google Code doesn't have.

I believe that managing an opensource project is mainly a social activity, and GitHub's social features really make so many things easier. From this point of view, GitHub is clearly the best choice today.

I think there is only one (but potentially big) problem with GitHub, that its issue tracker is very bad, compared to the Google Code one. For that reason (and also because we already use it), we keep our issues at Google Code with SymPy.

The above are the main things to consider. Now there are some little things to keep in mind, that I will briefly touch below: Google Code doesn't support git and blocks access from Cuba and other countries, when you want to change the front page, you need to be an admin, while at GitHub I simply add push access to all sympy developers, so anyone just pushes a patch to this repository: https://github.com/sympy/sympy.github.com, and it automatically appears on our front page (sympy.org), with Google Code we had to write long pages (in our docs) about how to send patches, with GitHub we just say, send us a pull request, and point to: http://help.github.com/pull-requests/. In other words, GitHub takes care of teaching people how to use git and figure out how to send patches, and we can concentrate on reviewing the patches and pushing them in.

Wikipages at github are maintained in git, and they provide the webfrontend to it as opensource, so there is no vendor lock-in. Anyone with github account can modify our wiki pages, while the Google Code pages can only be modified by people that I add to the Google Code project, which forced us to install mediawiki on my linode server (hosted at linode.com, which by the way is an excellent VPS hosting service, that I have been using for couple of years already and I can fully recommend it), and I had to manage it all the time, and now we are moving our pages to the github wiki, so that I have one less thing to worry about.

So as you can see, I, as admin, have less things to worry about, as github manages everything for me now, while with Google Code, I had to manage lots of things on my linodes.

One other thing to consider is that GitHub is only for git, but they also provide svn and hg access (both push and pull, they translate the repository automatically between git and svn/hg), I never really used it much, so I don't know how stable this is. As I wrote before, I think that git is the best tool now for maintaining a project, and I think that github is now the best choice to host it (except the issue tracker, where Google Code is better).

16 comments:

slashdotaccount said...

http://mako.cc/writing/hill-free_tools.html

Quit using GitHub and Google Code!

وليد سعود said...

http://gitorious.org/

zack said...

I'm impressed by the fact that the only aspect of developing a Free Software tool you mention is the need of "social tools", overlooking the (implicit) need of developing Free Software *using* Free Software.

As others have commented here already, I suggest you read
Free Software needs Free tools:
developing Free Software by not using Free Software sends out a very bad message.

flavio said...

As they said before go with Gitorious! It's Free Software, in the sense that you actually can install it on your servers if needed.

etienned said...

Why not use bitbucket if they use Mercurial? bitbucket (in my opinion) have a better bug tracker then github and a lot of "social" features.

Snagglepants said...

@zack:
I'm impressed by the fact that the only aspect of developing a Free Software tool you mention is the need of "social tools", overlooking the (implicit) need of developing Free Software *using* Free Software.

Your comment is extremely subjective and short-sighted. I too write 90% of my open, free software on Github because I like it. Yes, there is Gitorious, but at this time, it is flat out inferior in a number of ways that makes it a poor substitute.

The social aspect is important, and is a good selling point. However, as you said, it is not the only one. But that's the author's choice.

Aaron Meurer said...

You pretty much summed up the way that I feel about it. Google Code has a pretty good issue tracker, but everything else is better at GitHub. It does worry me a little bit that if we ever did want to move the issues somewhere else that Google Code doesn't seem to offer any way to export them (unlike the wiki pages, they are not stored in the svn repository). But I don't see us wanting to do that any time in the foreseeable future, so hopefully if that day ever does come, it will be easier to do at that point.

To the other commenters, aside from the portability and the intangible benefits of "freeness" (which I don't know about Ondrej, but I don't really care if the software is GPL or BSD), how do the features of gitorious compare?

Aaron Meurer said...

By the way, looking around gitorious, it looks like it is at least as good as, if not a little worse than GitHub. The interfaces for both websites are very clean. GibHub is maybe a little easier to navigate. For example, there doesn't seem to be a clear way to change the branch you are on in gitorious.

Also, I often get "This Git object is too large to be displayed in the browser" when trying to look at something, which isn't very useful.

elarson said...

Just to share a bit of history, there were a ton of *Forge sites that supported free software project management. Freshmeat.com and SourceForge.com both come to mind as well as other tools like Berlios. Not to mention Launchpad.

That is not meant to be critical, just a little historical context.

I personally don't have a preference when it comes to git as I've been pretty happy with bitbucket. Most folks I do talk to mention the community at github is pretty powerful, which is something to consider, even if it isn't free.

bryancole said...

if the Cython repo is in mercurial, why is github even an option? Google-code is kinda clunky. Bitbucket is the best option for a mercurial repo with similar features (better in some areas, less in others) to github.

Ondřej Čertík said...

I agree that the project should be developed (and compiled) using opensource tools, and that is true for SymPy (I use Ubuntu and I don't need any proprietary things to develop SymPy).

For hosting however, someone has to pay for the computer, connectivity, disk, and especially maintenance. Which used to be me (I paid $20/month for a linode and hosted everything there). GitHub is free (I don't pay $20/month anymore) and provides a way better job both in terms of maintenance and features. It's a huge relief to me.

As to gitorious -- first of all, it is AGPL, which I don't even consider an open source license (I know that Debian now accepts AGPL software, but it's clearly on the edge between opensource and closed source).

Second of all, github provides API to access all important data, and for example the wiki engine is even opensource, and not just AGPL (like gitorious), but BSD, so that's as open as it could be.

If I look at the gitorious wiki, for example here:

http://qt.gitorious.org/qt/pages/GitIntroductionWithQt

I don't see any way to download the data (at github I can download the git repository of the wiki). The same with other things, gitorious doesn't seem to offer any API (correct me if I am wrong). So if that is the case, then gitorious.org is less free than github.com, because once you use it, you are stuck there, while at github you pretty much always have the option to get the data and host it yourself.

As to hosting gitorious on your own server, that of course is nice, but as I said, I don't want to do the admin work, I much rather use something that works, and even pay them (I pay github) for their services, which is exactly what this is.

Someone has to pay gitorious.org servers, which means that they also need to earn money somehow. Github guys have a better business model, thus earning more money and thus at the end of the day can do more services, thus saving my time.

Vinzent Steinberg said...

Aaron Meurer said:
> It does worry me a little bit that if we ever did want to move the issues somewhere else that Google Code doesn't seem to offer any way to export them (unlike the wiki pages, they are not stored in the svn repository).

AFAIK, Mateusz wrote a script for this.

Vinzent Steinberg said...

Aaron Meurer said:
It does worry me a little bit that if we ever did want to move the issues somewhere else that Google Code doesn't seem to offer any way to export them (unlike the wiki pages, they are not stored in the svn repository).

AFAIK, Mateusz wrote a script for this.

Vinzent Steinberg said...

@Aaron:

Here is the link.

Aaron Meurer said...

@Vinzent

OK, that makes me feel a little better. Of course, there would still be the issue of reimporting the issues into whatever other tracker. But, like I said, the Google Code issue tracker works just fine for the moment (and actually has some nice features, like autolinking issue names, etc.) so we can just worry about that only if we ever decide we want to move somewhere better.

Ondřej Čertík said...

I would not worry about issues for now. Google Code works and it's probably still the best. I think that GitHub will eventually improve its issues, and then we can think if we want to move it. I would keep it where it is, as people are used to using it and it seems to be working for us just fine.