OT: revision control [was: Re: autoconf and erlang]

Dustin Sallings dustin@REDACTED
Wed May 12 21:57:39 CEST 2004

On May 12, 2004, at 11:23, Vlad Dumitrescu wrote:

> I've checked it and it is interesting, but it doesn't feel quite 
> right. I
> think Subversion http://subversion.tigris.org might be better, not the 
> least
> because the commands are almost like CVS. The drawback is that there 
> are no
> sites yet that host Subversion servers for free.

	Please don't do this.  I think decentralization is important for open 
source projects.  The centralized model makes it too difficult for 
individuals to maintain their own trees, manage changes against head of 
line, and creates a scaling problem when projects become more popular.

	Choosing a solution just because it's most like the one many people 
have been using for a long time is a bad idea.  There are lots of 
distributed revision control systems available these days that go way 
beyond solving small problems in CVS structure and provide features 
that fit very naturally into an open source development environment 
where contributors from all over the world have varying quality of 
connectivity.  And honestly, most of the time all you're doing is 
editing files and committing changes, maybe pulling in changes from a 
source repository, right?

	I use arch for almost all of my projects.  Branching is so easy there, 
anyone can understand it with little effort and it's become the normal 
mechanism for contributing to other people's projects.  I have private 
branches of several applications I'm tracking and all that's required 
from my upstream is a vanilla http server to which the head of line 
commits are published.  More importantly, the repository is made up of 
plain files (in tar files) that are immutable and easy to parse without 
having any arch tools to check out a tree.  Makes replication a snap 
since the tree structure isn't changing (with the exception of a lock 
that gets passed around on the write tree).

	Darcs is a very nice set of improvements in some areas of arch 
(although I believe it's missing in a few others that I use).  In 
particular, you can basically use a mailing list to track changes to a 
tree.  It's possible to branch a project, track head of line, make 
changes and send them back without even having an internet connection.  
The repository is made up of pretty plain files again.  (I've not used 
this one enough since I couldn't get it compiled at the time I ended up 
using arch for everything)

	monotone is another example, although one I haven't personally tried 
yet.  The docs look pretty good, though.  The one thing that makes me a 
bit weary of this one is that the repository is a mutable opaque store 
(like subversion).

	The fact that a server is required for subversion means you're going 
to have the same scalability issues sourceforge has if a project gets 
popular.  The central servers gets too busy and it gets slow to submit 
changes or check stuff out or whatever.  The fact that you can't find a 
site to host your project on subversion also suggests it might be a bad 
choice.  I have several sites hosting my arch repositories (stock OS X 
apache, NetBSD custom Apache install, thttpd, whatever 1and1 provides 
for their cheap hosting solution) and all they know is I've got files 
sitting in my web space.  No special apache modules (which would have 
to be ported to yaws, of course), no cgis, just the files that make up 
my dev trees.

Dustin Sallings

More information about the erlang-questions mailing list