On 30/04/13 00:23, Nico Williams wrote:
> Well...  If a paragraph is deleted then the pointer might get assigned
> in a subsequent allocation and... you end up with an aliasing problem.

I was thinking of detecting this problem when you delete a par, going through
the cursors/pointers potentially affected, but as you say the criticality is
not local to the LyX instance where the 2 cursors are, that's easy. The problem
is how to synch this forced cursor movement (e.g., going out of the deleted
region, or the incr in pos etc...) with the remote instance in which that
cursor is still editing and get the same outcome in both.

> you don't want to implement a
> distributed locking protocol (for the same reason).

some locking may be the easy way to avoid some of the biggest problems in the 
first instance.
I mean, even with git, there are situations of concurrent edit where the tool 
simply cannot
merge the edits. It has to be done by humans. By locking, you avoid that 
situation to happen.

>  Nor do you want
> to worry about split-brains (netsplits).

pls, explain ?

> Version everything and assign version numbers; keep history.
> Alternatively use hash-of-paragraph-contents as version numbers; keep
> history.

sounds a bit like replicating the git functionality inside lyx...., is it 
really needed ?

Let me see: each one keeps a copy of the last edits by everybody, at some point 
the protocol
sorts out the agreed-upon order of the actions, and each client ensures that 
all actions
are played back in the same order (e.g., undo-es the last needed # of actions, 
and replays
them back in the agreed-upon order). Not sure what the GUI (and user-face) 
looks like while
this is happening ... :-), but it might be needed.

        T.

Reply via email to