Distributed Revision Control Systems, Haskell Darcs, and Math Sacrilege

By Xah Lee. Date:

When i first heard about distributed revision control system about 2 years ago, i heard of Darcs, which is written in Haskell. I was hugely excited, thinking about the functional programing i love, and the no-side effect pure system i idolize, and the technology of human animal i rapture in daily.

I have no serious actual need to use a revision control system (RCS) in recent years, so i never really tried Darcs (nor actively using any RCS). I just thought the new-fangled distributed tech in combination of Haskell was great.

About 2 months ago, i was updating a 5-year old page i wrote on unix tools (The Unix Pestilence: Tools and Software) and i was trying to update myself on the current state of the art of revision systems. I read Wikipedia (Darcs) this passage:

Darcs currently has a number of significant bugs (see ➢ for example: [1]). The most severe of them is “the Conflict bug” - an exponential blowup in time needed to perform conflict resolution during merges, reaching into the hours and days for “large” repositories. A redesign of the repository format and wide-ranging changes in the codebase are planned in order to fix this bug, and work on this is planned to start in Spring 2007 [2].

This somewhat bursted my bubble, as there always was some doubt in the back of my mind about just how Darcs is not just a fantasy-ware trumpeted by a bunch of functional tech geekers. (i heard of Darcs in irc emacs channel, who are often student and hobbyists programers)

Also, in my light research, it was to my surprise, that Darcs is not the only distributed system, and perhaps not the first one neither, contrary to my impressions. In fact, today there are many distributed revision systems. When you look into these, such as Git, you find that some of them are already used in the industry for large projects, as opposed to Darcs's academic/hobbist kind of community.

In addition to these findings, one exacerbation that greatly pissed me off entirely about Darcs, is the intro of the author (David Roundy)'s essay about his (questionable-sounding) “theory of patches” used in Darcs.

Here's a quote:

I think a little background on the author is in order. I am a physicist, and think like a physicist. The proofs and theorems given here are what I would call ``physicist'' proofs and theorems, which is to say that while the proofs may not be rigorous, they are practical, and the theorems are intended to give physical insight. It would be great to have a mathematician work on this, but I am not a mathematician, and don't care for math.

From the beginning of this theory, which originated as the result of a series of email discussions with Tom Lord, I have looked at patches as being analogous to the operators of quantum mechanics. I include in this appendix footnotes explaining the theory of patches in terms of the theory of quantum mechanics. I know that for most people this won't help at all, but many of my friends (and as I write this all three of darcs' users) are physicists, and this will be helpful to them. To non-physicists, perhaps it will provide some insight into how at least this physicist thinks.

I love math. I respect Math. I'm nothing but a menial servant to Mathematics. Who is this David guy, who proclaims that he's no mathematician, then proceed to tell us he doesn't care about math? Then, he went on about HIS personal zeal for physics, in particular injecting the highly quacky “quantum mechanics” with impunity.

As of , the “theory of patches” introduction section of darc's documentation that contains the “don't care for math” phrase is at 〔http://darcs.net/manual/node8.html#Patch〕. Local copy here: darc_Theory_of_patches.html.gz. As of , that section seems to have moved, to a different section, at this URL 〔http://darcs.net/manual/node9.html〕, and the “don't care about math” bit has been removed.