Yeah exactly - it was all new for us. IIRC the first paper on
algorithm wave used was written in 1995.

You can use hashes to make a DAG of edits, like git does. It makes it
a lot harder to figure out which operations you're missing when you
connect, but you can still transform so long as you know the
dependancies of an operation.

There's also a trick where you write a 'prune' function (which is sort
of an anti-tranform function). That lets you can send around
transformed operations and still use them to ingest operations from
other clients. I got a proof-of-implementation working, though its
pretty slow because I'm doing some dumb things. This generates random
operations in a loop at random sites, and randomly pulls operations
from site to site. The whole thing stays consistant.
https://github.com/josephg/tp2stuff/blob/master/node.coffee#L210-L213

-J

On Tue, Jun 11, 2013 at 11:15 AM, Michael MacFadden
<michael.macfad...@gmail.com> wrote:
> Joseph,
>
> By nobody had heard of OT, I assume you mean nobody at Google.  People had
> been creating toy apps based on OT since the mid 90's.  Several of them
> use a purely P2P model like COT, GOTO, etc.
>
> As far as hashing, how would that help?
>
> ~Michael
>
> On 6/11/13 6:50 PM, "Joseph Gentle" <jose...@gmail.com> wrote:
>
>>On Mon, Jun 10, 2013 at 1:53 PM, Michael MacFadden
>><michael.macfad...@gmail.com> wrote:
>>> There are pros and cons to doing OT in a client-server or P2P manner.
>>> Googles view was that if you have potentially hundreds or thousands of
>>> collaborators, then in a P2P mode you wind up with state vectors, vector
>>> clocks, or context vectors that are just to large.  Each peer has to
>>>track
>>> the state of each other client.  Operations typically have a context
>>> vector attached to them.  In this case you have context vectors, and
>>>state
>>> tables that grow out of hand.  Google chose to avoid this by using a
>>> client server OT model.
>>
>>Nobody had heard of OT when wave was conceived - nobody really had the
>>expertise to build a scalable system that worked over P2P. It was a
>>pragmatic decision rather than some clever design choice.
>>
>>You're right about vector clocks and so on. How do you feel about
>>copying git and hashing operations?
>>
>>-J
>
>

Reply via email to