On Tue, 27 Sep 2005, Charles Duffy wrote:

> I'm not particularly fond of svn -- I think it's not nearly ambitious 
> enough[1] and have had DB corruption issues in the past -- but it's 
> certainly a big step up from CVS, and history stored in SVN can be far 
> less ambiguously retrieved.

I have worked quite a bit with Berkeley DB (which SVN set off with as
its database backend) in bogofilter, and while lots of things are to be
said about BDB robustness and corruptions, the most important point of
criticism is that one needs to take BDB by the hand and guide it, and it
doesn't tolerate application bugs that cause BDB to be used improperly.
If used properly, it's fast and solid - but then you've entered the
realm of transactions, and they're as awful to hack as GTK+ or assembly
language - it's all raw and low-level.

SVN has its shortcomings, and it's a huge beast, code-wise, but
switching programmers from CVS to SVN is easy.

> [1] [about competitors]
> though most of them do have downsides: Arch, for instance, is difficult 
> to learn and has poor win32 support, while Darcs is easy to learn and 
> portable but has serious scalability issues, and several of the others 
> are behind Arch or Darcs in terms of providing the above-mentioned 
> design features and functionality -- though there are some very new 
> systems (such as Git and Mercurial) which have impressive performance 
> characteristics, despite (as before) not having all the functionality 
> (or, in many cases, a design which allows straightforward implementation 
> of all the functionality) of the best-designed distributed SCMs.

I think that SCM systems are interesting to watch and to see what comes
out of it. After long years with everyone being happy between RCS and
CVS, some still on SCCS, some trying BitKeeper for a change, a lot of
projects have started, some have forked, and it's interesting to watch
some of them taking a second attempt before the first one had even
completely finished - SCMs are certainly a field where a lot of
development will take place in the near future.

For a maintainer however, he needs to get a job done. Trying the SCM of
the week will distract him from the real work, pull him into the depths
of meta data export, and in the end the situation might be worse than it
used to be even with CVS's serious shortcomings.

> [2] - Distributed operation is IMHO a killer feature doing open source 
> development: It means that 3rd parties working on their own patches have 
> revision control tools assisting them both in building the patch and 
> keeping it up-to-date with the maintainer's tools, and providing the 
> same level of support (ie. history of specific changes that went into 
> their patch/branch) that projects done by the maintainer receive. Having 
> worked on a few OSS projects using distributed revision control systems, 
> I find it quite hard to go back.

While they all have their advantages, they, too, need proper handling,
and you can also just import the upstream branch in your local SCM of
the day, clone the code and hack away, and then merge back. It gets, of
course, harder if you do a lot of work, but it's certainly OK for the
"occasional" patch - and lots of work in the OSS communities is that
someone sends a short patch, it's merged, and at that point, the local
separate branch becomes obsolete -- it was a single merge point, perhaps
two or three, and that's it.

I think if the SCM zoo has stabilized in two years, we hackers (I'm not
speaking for the OpenVPN project now) will have some more tools that a
maintainer can rely on, that are widespread and work well.

Those that caught my eye, and are open source, are listed in
<http://home.pages.de/~mandree/version-control-links.html> - chances are
there's a new promising contestant out that I've missed in the past
quarter or someone that used to be centralized has now gone distributed.

-- 
Matthias Andree

Reply via email to