monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Monotone-devel] Re: nuskool & certs created after a revision


From: Graydon Hoare
Subject: [Monotone-devel] Re: nuskool & certs created after a revision
Date: Thu, 01 May 2008 21:59:27 -0700
User-agent: Thunderbird 2.0.0.15pre (X11/20080501)

William Uther wrote:

Yeah - Graydon had a plan for this I thought. It vaguely sounded similar to yours, with some differences in details. From memory it was something like: build a separate tree of certs based on time of cert creation, and sync it using the same nuskool algorithm.

While I can see that working, something feels a little untidy about it. I started trying to think of other ways of doing it.

(de-lurking momentarily)

I am curious about this "untidy" comment; it's by far the tidiest idea I stumbled across in the process, and I'd recommend you give it a shake if you're keeping the gsync code alive at all.

IMO the problem with other approaches lies in thinking about certs as sets. There is no need to. You can think of any set of certs you have as being "a state" -- from which you can calculate something like a manifest name, given any deterministic storage order of the set -- and then you can use the existing state-evlution-over-history mechanism in monotone to track the expansions of that set as history edges in a DAG (that syncs using the same algorithm).

If I receive multiple history edges -- thus multiple heads -- I can always trivially merge them just by unioning all the certs found on all the edges. It's like the canonical example of the algorithm: merging the histories of set-expansions always automatically succeeds.

Any time you can get the system to move from thinking about sets to thinking about DAGs, you get more structure to drive your algorithms off of.

-Graydon





reply via email to

[Prev in Thread] Current Thread [Next in Thread]