[sldev] Version control repository
Rob Lanphier
robla at lindenlab.com
Tue Jan 9 22:58:36 PST 2007
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi everyone,
A hot topic on IRC, in-world, and everywhere else seems to be "is
Linden Lab going to provide a version control repository, and if so,
when?" The answer is "we need a spec first". What's so hard about
that? Well, I want to work with the community on defining the spec,
and come up with something that is going to be the most useful for
everyone.
The options are spelled out here:
http://wiki.secondlife.com/wiki/Version_control_repository
...as are some of the discussions (hit the "discussion" tab to view).
The safe option these days is Subversion. It's really widely
supported, has a ton of tools for all platforms, and really seems to
have hit critical mass. We use it internally, and as near as I know,
everyone seems reasonably happy with it. There hasn't been any
chatter (that I've heard) about replacing it any time soon. The
command line is very sensible, and the model is reasonably easy to
understand for anyone who has worked with version control systems
before. In particular, the command line interface was designed to be
similar (but not slavishly identical) to the venerable CVS. There's
also lots of nice tools and extensions that work with it, and I think
a reasonable number of IDEs support it now (fact check, aisle 7)
The trendy thing these days in version control systems is distributed
control systems, first popularized by BitKeeper, and more recently
made popular by the explosion of options such as git, darcs, svk,
bazaar, and Mercurial. What's interesting about these systems is that
they make it much easier for ad hoc teams to collaborate, each
developer publishing a mini repository, and provide tools for people
to deal with lots of little patchsets from a lot of different
sources. These tools aren't as mature as Subversion, but they are
much more powerful. The command line interface on many of these is
quite difficult (that's at least my experience with bazaar), but I've
heard good things about Mercurial, and looking at the quick start
guide, it seems the most intuitive of the open source options. Svk is
also interesting, as it's layered on top of Subversion (more below on
why that can be good).
While Subversion works great for, say, a team of professional
developers all in the same building working under the same management
on the same or at least coordinated set of projects, it isn't as well
suited to collaboration of a lot of developers each working on their
own pet feature that want to pick and choose which other developers
they want to collaborate with. Dealing with branches gets really
tedious really quickly...get above a dozen, and you've got a bit of a
nightmare. Merging tools are o.k....certainly better than CVS, but
things are much easier when everyone stays on the same branch.
Subversion would be nice choice because that's what Linden Lab uses
internally. Reducing drag on LL developers is an important
consideration; in addition to my selfish motive to maintain a good
relationship with my co-workers, I want to have as few mental or
logistical obstacles for LL developers to work on the open source side
of the firewall.
Mercurial is interesting to me, because it seems like a great blend of
distributed system and sensible interface. My knowledge of Mercurial
is a little thin, though, so I'd be interested in hearing from people
who have spent quality time with it. Mercurial might be intriguing
for LL devs, and the open source repository may be seen as a great way
to try it out and maybe even get religion on distributed revision
systems. However, it may be yet another friggin' half-working tool to
learn the quirks for. Hard to say; the devil is probably in the details.
Svk might be a great compromise between the two. However, I have no
real experience with svk either.
The community seems divided on the issue. One in-world discussion at
Hooper was leaning pretty heavily toward a distributed tool like
Mercurial. Another discussion at Pooley after the town hall wound
down seemed to be a much more Subversion-leaning crowd.
I'm truly on the fence on this topic, perhaps leaning slightly toward
Mercurial, because I think a distributed system would be a better
fit. I am interested in having a conversation about this before
making a decision. Whatever we decide, I want to stick with it for a
couple of years at least, so let's make sure we do enough homework to
avoid buyer's remorse.
Thoughts?
Rob
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFFpI6cPd430ImZiAMRAnBlAJ0eEWr+4GMojMcNThO3W3JNSOP/5gCfVfJE
2E5tF2trs57wjAmOINvO7fE=
=wo0o
-----END PGP SIGNATURE-----
More information about the SLDev
mailing list