All the cool kids are using darcs
Sunday, July 10, 2005
Revision control systems are a bit like editors in that developers get
very attached to them and resist using ones that they're not familiar
with. To date, CVS has been the tool of choice for most
collaborative open source Lisp projects. However, CVS (in addition to
having a
number of
issues) is better suited for a development style that is well
organized with a set of approved contributors, a dependable server
and a stong, central maintainer(s) who is dedicated to
keeping the source tree up-to-date with any patches provided from
external sources. For some open source projects, that's fine;
however, for others, a more decentralized source management style is
more effective (see
here for a discussion of the differences in approach). With a decentralized SCM, the primary emphasis is on
being able to effectively support multiple developers working
asynchronously and to be able to share/merge the changes from the different
developers. A number of different decentralized revision control
systems have been used for Lisp projects in the past; however,
darcs is rapidly gaining in popularity.
In CVS, the primary object is the source file in a centralized
repository and there is a defined "flow" to the patches that are
applied against objects in the repository. On the other hand,
the primary darcs object
is the
"changeset" (which can span multiple files) and every instance of a project is a separate "branch"
(which may share code with other branches or which may evolve
separately). Changesets may be applied to different branches of the
project that have evolved in different ways (so the patches need not
be applied in the same order). While most version
control systems version files, a darcs repository is just a
collection of patches and a particular file version is just the
set of patches that were applied in order to build it. Dave Roberts
has summarized some of the benefits of darcs and compared it to
Arch
(another distributed revsion control system) in his weblog.
Linux Weekly News has also given
a good review of darcs.
Some of it's main
positive features are:
- Very simple and easy to learn
- Patches are very flexible and can be grouped in a variety of different ways
- Cross-platform (Arch didn't always work well in Windows)
- Branching and merging are very easy
- Easy to send/receive patches from others
- No centralized server (you can just use http or ftp to push/pull patches)
- Daniel Barlow has moved araneida, bordeaux-mp, cliki, clx, dbs, detachtty, entomotomy, net-telent-date, sexql, trivial-sockets over to darcs
- Dirk Gerrits has moved Erlisp to darcs
- Drew Crampsie has put his lisp-on-lines project in darcs (as well as having mirrored a number of other lisp projects in darcs)
- James Bielman has put his cffi project in darcs
- Marco Baringer has moved ucw, arnesi, yaclml over to darcs
- Peter Van Eynde is moving his CL packages to darcs

