November 30, 2004
This article was contributed by Mark Stosberg
The field of alternatives to CVS has exploded.
Alternatives have been
documented
and
compared, but the trends deserve further analysis.
It's truly a critical moment, as the winds of change are shifting over the
landscape of source control. Major projects, such as
PostgreSQL,
KDE,
and
emacs are discussing the dumping of
CVS for an alternative. Smaller Projects, such as
wxRuby and
Rhythmbox
have already switched.
A Source Control Management (SCM) system is important because
this software choice impacts a whole group of developers, and
changing systems can be very disruptive to a project.
The larger the project, the greater the inertia, and higher the cost
to switch.
Here's my analysis of trends that will emerge:
What won't happen: No "CVS replacement" will emerge, at least not
with the dominance that CVS has had. Instead, what we will see will follow
the patterns of the expanding offerings of scripting languages.
Although Perl has long dominated this category, other languages have
dared to challenge the heavyweight, and they have prospered.
Python, PHP, and ruby are all doing well, with growing communities
building up around them.
Don't expect to see one clear SCM leader, with the rest hopelessly
out of sight in terms of popularity and usability. Many sufficiently
capable alternatives are emerging. The diverse environment we will see
will play a part in determining which projects stand out.
Those projects that grasp the importance of playing well with
other SCMs will see increased popularity.
The young
svk project seems to understand
this issue. They integrate with
VCP,
a framework designed for interchanging formats of various SCMs.
Svk is being designed so that at maturity, you will be able to use
it as a client for several other SCMs.
Consider the following situation for a typical open-source programmer:
The programmer would like to contribute to one project that uses CVS,
another which uses Subversion, and a third which uses Arch.
Rather than learning all three, she can use svk, reduce her
overhead time, and improve her overall efficiency.
Currently, svk can mirror a CVS archive, but not perform a
"commit through" on your changes.
As people contribute to this 'glue' project, it will be easier for
participating SCMs to update their own offerings to allow
better interoperability.
One important trend is the removal the "single central server"
limitation of CVS. New distributed systems allow developers to share changes in a peer-to-peer mode without going through a central server.
This feature will gain prominence for two reasons. Most importantly,
the centralized model is a subset of what a distributed system can do.
So users don't have to pick an "either or" solution.
Also, a distributed design maps extremely well onto the organic
global network of open source software development.
Developers who do not have "commit access" benefit from
distributed systems because
they are given a much expanded toolkit,
giving them access to the same command set
that the core developers have. With better tools for more developers,
more time can be spent writing code instead of managing it.
Distributed SCMs should be equally beneficial to corporations,
with their increasingly distributed structures. More activity can
happen locally to the developers, making a fast link to a distant
central server less critical for developer productivity.
I have followed two distributed SCMs in particular,
Arch
and Darcs.
Arch currently has a larger user base, and arch repositories exist
for popular projects such as the Emacs and Vim editors.
Arch is also noticeably
more complex to set up and use.
Darcs, which
just turned 1.0, shines because of its ease of use, clear documentation, and powerful underlying unique "theory of patches".
Svk is
working on
emulating the Darcs interface, while Arch would like to support
the Darcs patch handling features.
It's not all roses for Darcs, though. While it receives praise for use
on small projects, it is known to
hang for hours on large trees like the
Linux kernel as well as
when large scale conflicts occur.
Colin Walters, an Arch hacker, shares my vision of a
distributed future.
He
concluded recently:
"The contender for the future of free software revision control
is still very much up in the air..
This much is clear: If you are still using CVS, it's time to evaluate the alternatives, and think distributed.
(
Log in to post comments)