Code hosting choices

Sunday 1 March 2009This is close to 16 years old. Be careful.

I’m in the middle of a major overhaul of coverage.py, and one of the changes I’m making is to move the code into a public repository with bug tracking. But I have to choose which one.

Google Code is kind of the default choice at this point. It has everything I need, and people understand it. But frankly, I don’t want Google to own everything. I’d like to give the business to another player.

Launchpad is a good alternative. It’s got tons of features, and is based on Bazaar, which is something I’ve wanted to learn more about. Distributed version control is here to stay, and has real advantages over Subversion. But Launchpad seems a bit heavyweight: it’s got features that make it a good home for large projects like Ubuntu and MySQL, but I don’t need all those features, and there doesn’t seem to be a simplified experience that I could use.

Both Google Code and Launchpad require you to sign in to create a bug report, which is less of a problem for Google, since the chances are much greater that a random user will already have a Google account than a Launchpad account.

Github is very nice, but so far to my eyes, git is not, so I’m not seriously considering it.

I’m sure there are other choices out there, I just don’t know what they are.

Comments

[gravatar]
"Github is very nice, but so far to my eyes, git is not, so I'm not seriously considering it."

At the risk of setting you up to get flamed, can you elaborate on that?

I switched from CVS to SVN and loved it. Later, I switched from SVN to git and loved that too.

I can understand preferring Bazaar or Mercurial to git, but you'd really rather use a non-distributed version control system (SVN) than git?

This is a preference I'm surprised to hear.
[gravatar]
what about bitbucket ?
http://bitbucket.org/

It has mercurial as dvcs and also provides basic wiki capabilities.
[gravatar]
I can second the recommendation for bitbucket. I do wonder what will happen with DCVS. It seems to be a two horse race between hg and git, to everybody not directly employed by Canonical. Git has a brutally terrible command line interface, and documentation, and barely functional windows support, but for some reason has the momentum. It also seems to have attracted every offensive Linus worshipping nut job into its blog attack squad, which is just sad.

The worst thing about the whole mess is that we would have all been better off if subversion had never existed, the increase in utility over CVS is negligible or negative, but it has become a huge source of stop energy for corporations - "But we just switched to SVN, which was meant to solve all our problems!"
[gravatar]
> Git has a brutally terrible command line interface, and documentation... but for some reason has the momentum.

This is far overstating matters. It does have a sub-optimal CLI but its docs are actually pretty good. There's no "brutally terrible" about it, though I do prefer hg's interface.

(Ned: I'm not trying to turn your comments into a flame war, I just felt that rjw's comment deserved a bit of corrective. I tried to be reasonable and calm. I won't blame you if you delete with a vengeance but I fear you've poked the bear!)
[gravatar]
I'm quite happy with Assembla.com - for open source project you get free hosting and git, hg or svn to choose, plus several tools to manage the develoment.
[gravatar]
I second the hg + bitbucket option. An elegant and powerful combo.
[gravatar]
Kenai is Sun's "Forge" offering, w/ svn and mercurial support.
[gravatar]
Ned,

Id second the mercurial/bitbucket suggestion. I switched to mercurial for all my misc items when it reached 1.0 and Ive been very happy. Before switching I looked at all the dvcs systems and I found that mercurials workflow model & cmdline interface just sort of "clicked" with how my brain worked (Git for example just did not).

--
John Cavanaugh
[gravatar]
I think that Google Code is the best choice for little "one-file" projects. For me GC's tag based issue tracker and wiki is killer features. And svn is the most popular VCS for near future.
[gravatar]
Fourth on hg/Bitbucket. Full disclosure: I am a Mercurial developer. By all means, ask me questions if you have any. Jesper Noehr, the Bitbucket developer, is also usually responsive, either on twitter, or in #bitbucket on freenode.
[gravatar]
Fifth on hg/Bitbucket. I'm the odd man out in the fact I also don't like git.
[gravatar]
I fifth bitbucket if your decide mercurial is the one to go with.
[gravatar]
Sixth on Mercurial/Bitbucket (there's also freehg.org), with a fallback on Bazaar/Launchpad, but I do work for Canonical. ;-)

I second the aversion to the migthy Google, and to git, which is as unpythonic as it gets. Rather sad seeing so many Pythonistas fall for it, when we have Mercurial and Bazaar.
[gravatar]
If all you want is a place to host your branches with a nice interface, bitbucket is probably Ok. I use launchpad's "+junk" branches (personal branches, not related to any project), but I'd like if it had a more simple interface too. Also, Launchpad allows only public, Free Software projects.
[gravatar]
... but that don't seem to be a problem in your case. (ate the rest of the phrase some how in the last comment)
[gravatar]
Not unpredictably, this seems to have turned into a discussion on version control system choices. However, the particular choice is only a small part of the story. Merely choosing to use a DVCS adds a bar of difficulty to use, so you need to be able to work with the userbase in other ways.

Look at the project maintainer side of things, which is where Google Code and Launchpad (and Sourceforge in its day) tend to shine. Can you make packaged releases and have them up for download? Not everybody is comfortable using your particular DVCS of choice. Svn has pretty good awareness presentation and people suck it up and will pull things from it if they need to. Not so much with the plethora of DVCS choices (and "tailor", whilst useful, is another learning curve on top of everything else). So distribution is an issue.

Similarly, bug tracking. And maybe online documentation display (people who don't ship documentation in the tarball are not nice people -- and I'm looking at you, "cog" packager -- but online display is useful Google juice, too)
[gravatar]
Thanks everyone. One clear message is that I should seriously consider bitbucket.org.

@Joe + @Bill: git is more baffling to me than most dvcs's. I'm sure it's in my future somehow, but mercurial and bazaar are more appealing to me. They feel like finished products rather than awesome plumbing for an unfinished product. I know this is a cliched and controversial opinion...
[gravatar]
Let me add my voice to the chorus in favor of bitbucket. I have absolutely no ideological problem using code.google.com of course (and I just absolutely don't see how using it in any way makes Google "own" the code they host?!) but hg is sweet and Jesper at bitbucket is very responsive.

One think I DO miss in projects hosted at bitbucket is code.google.com's simple but useful code review / commenting facility -- Jesper's been telling me it's on the roadmap forever, but it's not there yet;-). Ah well, one can use rietveld.appspot.com (oops, does that hurt the sensibilities of "don't want google to ``own'' (?!) things" fanatics?-).
[gravatar]
When I said I didn't want Google to own everything, I didn't mean they'd own my code, I meant that they'd be the only code hosting game in town.
[gravatar]
Bitbucket has no "help" screen that I can find. No "docs" or "getting started" pages either. In contrast, Launchpad has a multi-page tour plus a full help area. They also have a "DocTeam" page for contributors to the docs.

So, I'd probably go with with launchpad because I think docs (or lack thereof) say a lot about a project (not sure yet if launchpad's docs are good, but at least they're there. :) ).

Also, Alex K., you mention Google Code's wiki as being a killer feature? From the times I've wanted to look up info in a GC-hosted project's wiki, I've found their wiki setup to be less than helpful. Though, granted, at least they offer one. Launchpad has an "Answers" page, but that seems more like a sort of request-tracker/faq.
[gravatar]
Like Guenter, I would also suggest checking out assembla.com. They offer quite a lot of features, and I've worked with them for some time now.
[gravatar]
I've used Launchpad, and it's not overwhelming for small projects. Integration with Bazaar is nice (no need to remember long URLs, just bzr co lp:projectname), the bug tracker is adequate, and I haven't needed or used any other facilities. The Python Packaging Index is the place for making releases and uploading tarballs, and that can be done with a simple 'python setup.py sdist register upload' in the source directory, well, once you've done the hard part and written the setup.py.

Disclaimer: I don't use Launchpad-hosted Bazaar branches as the primary repository; I still use self-hosted Subversions repos that Launchpad mirrors for me.

I am very lazy, though, and will refuse to fight a website that doesn't let me do what I want within 5 minutes. Launchpad passed that test. Bazaar passed that test (but failed later with internal errors when I was trying unobvious things). Git passed that test for local work (colorized and paged diffs by default! instant commits! interactive hunk splitting! awesomely polished convenient command-line features!), and failed abysmally when I tried to figure out how to create a public mirror of my local git branch (head, meet wall. again. again. again.).
[gravatar]
I forgot to mention the project website that I'm also self-hosting. I don't think Launchpad provides that, and I think a website is mandatory in this day and age (with screenshots, if it's a GUI app, which coverage.py isn't).
[gravatar]
I'd like to recommend Launchpad. But hey, I'm biased.

The project creation pages do need a little love, but most of the fields are optional. The bug tracking is very helpful, and the code hosting is easy to use.
[gravatar]
Eighth for Hg+Bitbucket ;-)

@John: We do have docs, they're just hard to find. This is being remedied right now, since you happened to insult our usability guy (good incentive.) :-)

http://bitbucket.org/help/
[gravatar]
I'm still most satisfied with own trac/hg hosting, thus I'd recommend assembla or similar. When not the choice, then probably bitbucket/hg.

I'm now using git and github extensively, but still feeling more comfortable and productive in trac-like environments, together with hg more intuitive interface.

Add a comment:

Ignore this:
Leave this empty:
Name is required. Either email or web are required. Email won't be displayed and I won't spam you. Your web site won't be indexed by search engines.
Don't put anything here:
Leave this empty:
Comment text is Markdown.