On Mon, Feb 1, 2010 at 5:31 AM, Turner <[email protected]> wrote:

>> Transformer is the magic that makes OT worthwhile. Transformer will
>> take edits that diverge from a common root and transform them such
>> that they can be composed together.
>
>
> What does that process entail? If it's fed a DocOpStream1 and
> DocOpStream2, does it output two identical streams with DocOp1a being
> composed with DocOp2a and DocOp1b being composed with DocOp2b, and so
> on? I thought that composing concurrent ops into one single op was
> what the composer did.
>
>

Given operations A and B, transform will produce an A' and B' (ie,
*transform* the operations into new ones). Generally it's applied like
such:

Client sends operation D to the server. The server has operations [A,
B, C] that client doesn't know about yet. The server transforms each
operation by D;

transform (A, D) -> A', Da
transform (B, Da) -> B', Db
transform (C, Db) -> C', D'

[A', B', C'] is sent back to the client (potentially you could compose
them into a single operation ABC' first). D' is added to the server
history.

I find it helpful to think of Composer as a sort of compression;
instead of sending 4 operations, I can compose them and send one.
Transformer, on the other hand, I think of as fiddling with buffer
offsets to make edits show up in the right place. Please note that
this is just an analogy.

-- 
You received this message because you are subscribed to the Google Groups "Wave 
Protocol" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/wave-protocol?hl=en.

Reply via email to