Categories

Posts in this category

Tue, 04 May 2010

The case for distributed version control systems


Permanent link

Currently the parrot developers are discussion whether to ditch svn in favor of another distributed version control system, maybe git.

I'm not a very active parrot developer, so my opinion probably doesn't count that much, but I still want to share a story, and then my opinion.

The story

Back in 2007 I was bored. I read about Perl 6 and pugs, and decided to check it out. And then I found a broken link on the pugscode website. And since I tried to be a nice guy, and I was bored, I decided to inform the developers.

So I joined #perl6, and told the developers about the broken link. No more than 5 minutes later had the awesome Audrey Tang done three things:

  1. Fixed the link.
  2. Told me in which file of the repository the fix was.
  3. Sent me a commit bit, so that I could make such fixes in future, too

I was very impressed by this display of openness, and stayed. Granted, there were some other reasons for staying too, but it did leave a very good impression.

Roughly a year (or maybe two) I had a doc patch for the Perl 5 core documentation. And I was surprised and disappointed to find that perl 5 (at that time locked into perforce) didn't even offer public read access to its version control system.

What we can learn

I've shared my short, romantic story with you because I think we can learn something from it: openness pays off, and being closed deters contributors.

I'm well aware that the parrot contributors can't hand out commit bits as openly as pugs (mostly for legal reasons; also it's a quite different stlye of development). But still a distributed version control system (DVCS) offers some of the openness that Audrey lured me with. With a DVCS the new developers can work just the same way as the core contributors, easily stack changes, bisect regressions and so on.

This social aspect of development is, in my opinion, a strong point for DVCSes. There are other reasons which speak for it; the strongest is probably that DVCS support both the central and the distributed development styles, while central CVS only support their own style.

Git vs. other DVCS

By now it should be clear that I propose to migrate to a distributed version control system. Any decent DVCS would be fine by me. I prefer git, because it's what I'm familiar with, and because it has very good performance characteristics.

I also like it because it has a feel similar feel to perl; many powerful built-ins, some of which are used day to day, others to explore if you have an usual problem or setup.

In short, I like git.

[/perl-6] Permanent link

Comments / Trackbacks:

Trackback URL: /blog-en/perl-6/distributed-vcs.trackback

Luc St-Louis wrote

Another plus for git: the index
Aristotle Pagaltzis explains it well:
http://plasmasturm.org/log/gitidxpraise/

brian d foy wrote


When I switched the perlfaq to github, many more people starting working on it. I think I had more patches in the first three months on Github than in the previous 8 years combined. I like git, but I think that was more to do with the awesomeness and ease of Github.

Nilson wrote


I'm not sure if it's desirable for a project like parrot, which is supposed to be cross-platform, to rely on a inherently not cross-platform VCS.

Git has great features - but try using it on Windows.

I guess it really boils down to who do you want to target. If you want to broaden the demographics of potential contributors, SVN would be the inclusive choice. If you prefer to intentionally "filter" some people, then maybe Git is a good choice.

supernovus wrote


Nilson: There are a few git for Windows ports, including graphical interfaces that make it as easy to use as SVN. I would recommend checking out Git Extensions, which I use on my Windows-based netbook.

The benefits of a distributed version control system greatly outweigh the deficiencies.

Nilson wrote


I've used msysgit in the past and I noticed a few days ago that there is a TortoiseGit (although I didn't test it yet).

I'm not saying that it isn't possible to use Git on Windows. I'm just saying it's a pain. I remember facing a lot of weird issues because of Cygwin.

Git has awesome features, but msysgit just felt like an alien experience on Windows. Personally, I expect VCS to not stand in my way.

Of course, if you judge that possibly alienating potential Windows contributors is worth the DVCS benefits, it's also a valid choice.

Jakub Narębski wrote

msysGit is native MS Windows implementation of Git
@Nilson: actually msysGit is native git implementation for MS Windows, contrary to git in Cygwin which uses POSIX compatibility layer. Nevertheless I agree that MS Windows is a bit second-class citizen... mainly because of lack of contributors.

Write a comment

The comments on this blog post have been disabled; the comment form below will not work.

 
Name:
URL: [http://www.example.com/] (optional)
Title: (optional)
Comments:
Save my Name and URL/Email for next time