supporting a range of collaboration functionalities in advanced collaborative software systems. • Originally invented for consistency maintenance and concurrency control in collaborative editing of plain text documents.
(保留因果關係) ◦ Convergence (收斂) • The most basic question: Two transitions happen concurrently. How to find a (reasonable) state merge(A, B), such that a S b A b’ ?? B a’ apply(apply(S, A), B') = apply(apply(S, B), A') ?
A’’ Drawbacks of OT: 1. OT is often too complicated to design on various actions. 2. Complexity grows as increasing concurrent users. 3. Hard to (formally) prove the correctness even for the simplest cases. ? ? ? ?
formalized as a sequence consist of 3 kinds of operations: 1. Insertion: Insert(string) 2. Deletion: Delete(uint) 3. Retention: Retain(uint) Along with the initial/final document length. Changeset
of plain text and efficiently return a list of differencess. ◦ Match: ▪ Given a search string, find its best fuzzy match in a block of plain text. Weighted for both accuracy and location. ◦ Patch: ▪ Apply a list of patches onto plain text. Use best-effort to apply patch even when the underlying text doesn't match. • CRDT: Conflict-free replicated data type Can describe peer-to-peer collaborations!
◦ Does not interrupt typing when content is changing ◦ CM6 (still in prototype phase) even serialize operations for you! • Calculating transforms: ot.js • Hand-wiring the state transition, simulate network channels, ... Implementation
systems". ACM SIGMOD Record. 18 (2): 399–407. [2]Rui Li; Du Li (2007). "A New Operational Transformation Framework for Real-Time Group Editors". IEEE Transactions on Parallel and Distributed Systems. 18 (3): 307–319.