[darcs-users] [patch111] Contribute vc-darcs.el for Emacs VC support.

Dave Love bugs at darcs.net
Sun Jan 3 23:54:38 UTC 2010

Dave Love <fx at gnu.org> added the comment:

I don't know what this is in response to.  I haven't seen the material
quoted in the article.

Juliusz Chroboczek <bugs at darcs.net> writes:

> Juliusz Chroboczek <jch at pps.jussieu.fr> added the comment:
>> As you note in your source comments, there is a competing implementation
>> by Juliusz.  Why are there two versions?  Is it solely because Juliusz
>> (presumably) won't assign copy rights to the FSF?
> I sent the papers to the FSF.  I never received a reply.

They're not noted in the list of papers on file.

That mode is based on someone else's work and, as I understood it, no
assignment would be forthcoming for that.  (All significant
contributions need to be covered by legal papers, and I don't know who
else had contributed -- possibly not Juliusz at that time.)

>> Does Juliusz' vc-darcs.el includes features that yours doesn't?
>> Does your (Dave's) vc-darcs.el include features that Juliusz' doesn't?
> First, we use different implementation techniques.  My version parses
> Darcs' XML output, and so remains reliable with funky patch names.

I'm not convinced that there's any advantage to the XML stuff,
especially as its structure isn't defined (as far as I can tell) and it
isn't even necessarily valid XML.  [That's a conclusion I've also
reached elsewhere.]  What is the precise technical advantage?  darcs
should be capable of printing a human-readable hash of a change, but I
haven't got round to contributing that, and I'm not sure now how helpful
it would be.

> Dave's version, on the other hand, appears to do complex regex-munging
> over Darcs' human-readable output.

Where it needs patch names it typically uses what I normally do by hand
with `--patch' to select, but you can also use `--match' selection.  VC
still fundamentally doesn't deal well with patch-based VCSs as far as I
can tell, but I don't claim to understand properly how the Emacs 23
stuff is supposed to work.

> At a quick glance, the functionality differences are the following, in
> roughly decreasing order of importance:
>  - unless I don't understand Dave's code, my version has a better
>  - grokking of Darcs revision numbers;

How so, especially since darcs doesn't actually have the revision
numbers Emacs assumes (which is part of the problem, along with darcs'

>  - my version uses the Emacs 23 support for Git-style revision-control
>    systems, which makes it work better with Darcs; however, this means
>    that it doesn't work on older Emacsen;

I've tracked Emacs and darcs versions, though it's a good deal easier to
keep up with darcs than with the backwards-incompatibilities/bugs in
Emacs, unfortunately.  Modulo bugs and a few possible omissions noted,
mine supports the VC in Emacs 21-23 and darcs versions ~1 upwards.
However, I haven't tested older darcsen recently, and I don't know what
versions are significant in the wild; old ones may not be such a problem
since, fr instance, it's not in RedHat and SuSE 10.

>  - Dave's version has an implementation of a log-browsing mode for
>    Darcs, which mine doesn't (it just uses Emacs' generic log-browsing
>    mode, which doesn't work very well); the proper solution is of course
>    to fix Emacs' generic mode to work with Darcs;

I can't remember what the state of the latest log-view mode is, but I
don't think it should have backend-specific features.  It should have
hooks for the backend, but that was rejected when I tried to get the VC
support generalized on the basis of experience with darcs and I could no
longer install changes.

>  - my version has much nicer vc-annotate.

How so?  It provides less information as far as I can tell.

>> If so, and we can't use Juliusz' work (due to copyright), are you
>> prepared to reimplement those features in a novel way (i.e. without
>> copying)?
> Gosh, no -- as far as I'm concerned, the whole point of Free Software is
> that we're free to copy each other's ideas (with proper attribution).

Ideas aren't the issue -- copyright (detailed expression) is.  Anyone's
free to use my code under the terms of the licence, but as a maintainer
I wasn't free to use work in Emacs that wasn't either trivial or covered
by an assignment/disclaimer.  I've often re-implemented stuff for that
reason, and it's typically easier than chasing legal papers, though I'd
rather not, and I want to avoid possible future need for that.

> If there's interest, I can try to go through the FSF's bureaucracy again.

Has someone said it would be included, if so, why mine was rejected?
However, from experience I'm not convinced it's maintained in Emacs,
since the maintenance typically won't be done for the Emacs versions
people are actually using or by someone who uses darcs.

Darcs bug tracker <bugs at darcs.net>

More information about the darcs-users mailing list