SVN migration

1:00 pm gnome

To answer the several people wondering abuot why we’re migrating to Subversion for GNOME, I have a few thoughts.

We’re currently using CVS, which ucks for a number of reasons which everyone agrees with. File moves, support for grouping changes to several files into one logical entity, efficient branching and tagging, versioned metadata – these are just some of teh features you expect from a revision control system that CVS doesn’t have. So moving to something else makes sense.

Of all the other version control systems, one (Subversion) has succeeded in fulfilling a number of criteria:

  1. Providing and communicating a migration route for CVS users – not just converting a repository, but also migrating your daily use from one to the other.
  2. Being included by default in pretty much every distribution.
  3. Generating copious documentation, making life very easy for repository admins.
  4. Providing an admin-friendly ACL permissions system for repositories.
  5. Providing a firewall-friendly way to get source code.

So there are a bunch of good reasons to move to SVN, and the only argument that people have against it is that “everyone knows that distributed’s better”.

For distributed systems, the observation I’d make is that there are several distributed revision control systems (bzr, baz-ng, svk, tla, Mercurial, git, …) so (assuming there’s agreement that’s the way to go) which one do you pick? Obviously there’s some argument about the Right Way to do distributed version control – otherwise, why so many to choose from?

Also, none of those systems has reached a level of maturity and acceptance that you can reasonably expect every developer to have it installed – so you’re adding an entry barrier (compiling the revision control system) for everyone who you want to build your stuff.

In short, the move to Subversion makes a lot of sense for GNOME, and a move to anything else would need a lot of good arguments backing it up before you could even consider it.

Bkor: One small correction – the board did not ask the infrastructure team to move to SVN – Jeff was the release manager at the time he asked, and it was in that capacity that he made the request. The board has never (in my memory) discussed version control systems.

5 Responses

  1. Marius Gedminas Says:

    bzr and baz-ng (actually, bazaar-ng) is one and the same. bzr is the command name, Bazaar 2.0 (previously Bazaar NG) is the project name. Sort of like svn and Subversion.

    I think the future belongs to either bzr or git. The present belongs to Subversion, which has proven itself in the field. Just stay away from Subversion’s bsddb backend!

    Have you read Keith Packard’s blog posts about choosing the revision control system for X.org? They’re worth reading:

    http://keithp.com/blog/Repository_Formats_Matter.html

    http://keithp.com/blog/Tyrannical_SCM_selection.html

    (hmm, I don’t see a ‘Preview’ button…)

  2. Germán Poo-Caamaño Says:

    > Obviously there’s some argument about the Right Way to do
    > distributed version control – otherwise, why so many to
    > choose from?

    Please, don’t use such argument. In that case, use Windows, because there are some many Linux distributions.

    The only strong argument to use SVN instead anyother tool, is because there is one sysadmin working in SVN but nobody else has taken the job to test other tools. That’s enough.

  3. Anonymous Says:

    > Also, none of those systems has reached a level of maturity and acceptance that you can reasonably expect every developer to have it installed – so you’re adding an entry barrier (compiling the revision control system) for everyone who you want to build your stuff.

    All the major distributions have packaged already.

  4. Mikael Hallendal Says:

    I don’t buy the argument that the barrier of having to install another version control system is going to make anyone turn in the door. And for those that don’t having Subversion it’s a huge beast to install.

    I do however agree that going with Subversion for the bulk of GNOME makes a lot of sense. Simply because of it’s similarity to CVS but with features that people have requested for a long time.

  5. Simon Howard Says:

    Considering that Gnome consists of a bunch of independent(ish) modules maintained by separate users, the question I have to ask is: why all the fighting over which version control system to use? Can’t different projects use different systems?

    There are two types of version control system as I see them: the centralised CVS/Subversion approach and the decentralised Git approach. Subversion is good because it’s a “better CVS” – it provides an upgrade path for existing users, which means that the projects hosted on cvs.gnome.org don’t need to change their development processes. As a centralised version control system, it’s pretty decent – I doubt you’ll find many others better.

    Now, Git (and other decentralised systems) do have distinct advantages. It seems to me that the best way to introduce decentralised development is for individual maintainers to change their projects over. If enough people do so, Gnome should consider adding a git repository.

    I do not dispute the advantages of Git-like version control systems in any way, but the Subversion migration isn’t the place to promote it. Switch your projects over to Git, get a large body of people using it, make it the common practise _then_ deprecate the older Subversion repository.