I spent all day today doing test-runs of mercurial and bazaar... and
bitbucket and launchpad. Here's my personal opinions on where I want
to go from here. I really want to move to a DVCS system. I want to
be able to save my changes all the time without having to commit
broken code to a central repository. I want to be able to work on a
team without a central repository, and work offline. I also want it
to be easier than using svn, when viewed from the standpoint of
someone who has never used a version control system.
Taking another look at BitBucket I see that it has indeed changed a
lot since the last time I looked. The interface is clean, the Open ID
is useful, and the compressed downloads are like automatic releases -
very nice. I would now definitely consider using BitBucket for some
of my projects. BitBucket's free account only goes up to 150 Mb
however, and it only works with Mercurial, which I have grown to
dislike, personally. Mercurial certainly works as advertised, in
terms of providing distributed VCS functionality... but I quickly got
annoyed trying to read Mercurial's changeset numbers (example:
r9538:f995b066ed61), and I got annoyed at the slow clone time for
large projects. Because Mercurial downloads the entire revision
history when you clone a repository, the clone times will get slower
and slower the more you develop. I know there's ways to get around
this, but they are experimental at this point. Also there's no true
support for file renaming, continuous svn integration is difficult,
and so on.
Bazaar on the other hand, lets you do a quick download of just the tip
(most recent version), using "bzr branch --stacked". Also, in
addition to being able to do a branch (aka clone), you can do a
"checkout", which automates the "bzr push" when you do a commit. You
can even use "bzr checkout --lightweight" to get just the tip (and
avoid downloading the entire revision history). The revision numbers
are readible (example: 17.1.1), and it has true support for file and
directory renaming. The newest version of Bazaar (1.9) has built-in
integration with svn repositories (the bzr-svn stuff is already in
there), and the binary installation worked fine [1] on my OS X 10.5
installation. However, LaunchPad (designed for Bazaar) on the other
hand is my least favorite hosting option. The interface is messy,
it's hard to find the buttons I'm looking for, there's no wiki, and
the server response always seems slow. I know it supports related
projects, and there's a lot of people using it, but I don't think that
LaunchPad is the best option for Tortuga.
I also looked at using Bazaar and Trac, which would be great because
Trac is easy and familiar and open-source. However, Trac kept leaking
memory.. and the plugins (including auth plugins) keep breaking
between versions, it's just a pain to administer.
I like Google Code because so many of us already have google accounts,
the interface is incredibly simple, and it's got a wiki and downloads
and customizable tabs, it's fast, and we can request more space if we
ever hit the quotas (100mb subversion, 250mb file downloads). Plus
I've already written a "python setup.py google_upload" setuptools
command that automates releases through google code.
So, what I'd like to do is to continue to use Google Code for hosting,
and use Bazaar for development. We'll still use the subversion
repository on google code (which integrates with the issue tracker),
but I'll change the "source" tab so that it documents how to use
Bazaar (with the integrated bzr-svn stuff) to develop on this project.
This way, people can have a choice between svn and bzr.
Before I make these changes, I want to hear from interested people.
What's your opinion? Please do educate me if you think I'm missing
something, or if any of my facts are incorrect.
-Ian
[1] Ok actually I got bit by this bug when I used "bzr commit" on a
bzr-svn checkout:
https://bugs.launchpad.net/bzr/+bug/293440
but the one-line patch listed in that bug report fixed things right
up, and if you use 0.10rc1 the fix is already in there.
Totally agred on this, as for using svn +bazaar I guess every project
has it's own thing so I can live with it.
Oh wow, I didn't know that! I like what they've done with granting
'commit' access:
http://plone.org/development/info/write-access-collective
> The potential for programmers to screw up a completely different pluging is
> there, but it is highly unlikely to happen, and it's easy enough to find out
> who did something bad and publicly shame them before reverting their change,
> so I don't think it's likely to be much of a problem in the real world.
I really like that. I would be fine with a wide-open collective
repository just like you described. I'm sure we'll work something
out.
> But, one of the reasons I suggested hg+trac is that we've got a way to make
> it easy to setup a new trac instance and new hg repository easily through
> the web so it should be easy to make that work for a plugin repository.
I took a good look at that. I really like Trac... but I really
*really* don't want to use Mercurial. If they fixed those things I
mentioned though, I would take another look at it and keep an open
mind. I would be pretty happy with a Bazaar+Trac solution, once it's
a little more stable (maybe just a few months!). I bet when the time
is right, I could hack a branch of that hg+trac solution to use bzr
instead of hg... if the code can be made available, that is. Let's
get the CMS pieced together before we worry about it though.
> That said, I think too much time has been spent on this already and none of
> it makes any difference if we don't yet have a functioning tortuga, so I'm
> all for going with Google Code and working whatever we need to work out
> later.
Thanks Mark. I'm very open to change, let's get a functional CMS and
then evaluate hosting options again.
ian
How about this - for the time being, we'll use google code and bazaar
through bzr-svn. Once we get a stable "1.0" type release out, and the
API is stable enough that people can contribute some serious plugins,
at that point we'll look at our options again and figure out how we
can have a centralised plugin repository. Maybe by then the solution
will be Bazaar with Trac and OpenID... or maybe BitBucket will start
talking with Bazaar... or maybe Canonical will make a "LaunchPad
Lite" that's streamlined and easy to use.
In any case I will remain open to moving Tortuga to another hosting
service in the future.