First thoughts on arch/tla
Tom Lord's arch version control system seems to be coming along quite nicely.
I first looked at it some months ago but was scared off by documentation that made it a bit hard to understand what was really happening inside. A lot of the design concepts were not really stated, and this can give a worrying impression that there is no strong design.
(I think in tools for technical users it's really important to make the documentation expose enough of the internal model that they can feel comfortable with it and make predictions about cases that are not explicitly described. I think R5RS does this moderately well, for example, but I haven't seen anything that does such a good job for Common Lisp.)
Subversion's manual, by contrast, begins with a clear high-level description of what's happening inside Subversion — not the bits and bytes, but rather the concept of how trees are versioned.
This now seems to be addressed and a clear design can now be seen under the arch tutorial. They do this in a nice way: peeking under the covers at each stage of the tutorial, so you can see what effect it's having on the archive files. And arch is particularly suited to this, because it stores history in an excellent Unixy way: directories containing gzipped patches plus some metadata.
This is very reassuring: you can imagine recovering all your history even if all arch implementations went away, or writing a new compatible implementation (which has happened a few times.) Few version control systems have these desirable properties. It also shows excellent Unix taste to use plain files when possible.
Some particularly nice features of arch from WhyArch
- It works with dumb servers. If you can publish static files to a web or FTP server, then people can follow your changes, create their own branches, etc. This is very clever; I suppose it partially falls out of using a simple Unixy file format for the archive but it takes a fresh mind to release the idea that there must be a smart server process.
- Distributed/disconnected (laptop) mode works completely. You don't need to cache everything on your laptop, unlike Bitkeeper. You can cache whatever you want.
- "If you are interested in open source, the ability to branch someone else's repository without requiring cooperation with the original repo owner is a revolution."
posted Sun 31 Aug 2003 in /software/vc/arch | link
Archives 2008: Apr Feb 2007: Jul May Feb Jan 2006: Dec Nov Oct Sep Aug Jul Jun Jan 2005: Sep Aug Jul Jun May Apr Mar Feb Jan 2004: Dec Nov Oct Sep Aug Jul Jun May Apr Mar Feb Jan 2003: Dec Nov Oct Sep Aug Jul Jun May
Copyright (C) 1999-2007 Martin Pool.