[darcs-users] darcs hub future
ben.franksen at online.de
Mon Dec 3 14:46:50 UTC 2018
Am 07.11.18 um 00:02 schrieb Steven Shaw:
> Hi Simon and others, I recently came across Pijul <https://pijul.org/>
> which seems to be the intellectual successor to Darcs rewritten in Rust.
> There is Pijul hosting called Nest <https://nest.pijul.com/>, similar to
> Darcs Hub. I was never a big Darcs user but was interested in the "theory
> of patches". From what I can gather, Pijul has implemented this
> mathematical theory with good algorithmic complexity. It's written in Rust
> which might make it less appealing to previous Darcs users. I was wondering
> what folks thought of it?
There is not much to be found about the theory of Pijul, except the
original paper that inspired its development. (Not that the situation is
much better for Darcs' theory.) Anyway, from what I gathered from that
paper and the bits accessible from their home page, Pijul's theory is
quite different from that of Darcs (although there are certain
overlaps). Its approach to conflicts is, in a certain sense, dual to
Darcs: while in Darcs a conflict is represented as a special sort of
patch (Merger/Conflictor), in Pijul the conflict is represented as a
special sort of "tree"; more correctly, they represent the content
(state) of a repo not as a tree but as a (possibly cyclic) directed
graph, thus allowing multiple conflicting versions of the tree state to
The fact that Pijul is written in Rust certainly makes it a lot harder
to understand it by reading the code. Last time I looked I found it very
low-level, using mutation all over the place, and mostly missing any
form of abstraction.
Regarding algorithmic efficiency, this is indeed a problem with Darcs'
current implementation, in particular its existing Merger/Conflictor
representations. However, a better representation exists and has been
implemented, it is just not fully integrated yet. There are some pretty
fundamental design choices that we are currently discussing, most
importantly whether merging should be "by value" or "by name".
More information about the darcs-users