Etherpad で使用されているアルゴリズムは Operational Transformation として知られています。
それを解決するのが、運用の変革 (OT) です。聞いたことがない方のために説明すると、OT はマルチサイトのリアルタイム同時実行を行うアルゴリズムのクラスです。OT はリアルタイム git のようなものです。任意の量のラグ (ゼロから長期休暇まで) で動作します。これにより、ユーザーは低帯域幅でライブの同時編集を行うことができます。OT は、再試行、エラー、データの上書きなしに、複数のユーザー間で最終的な一貫性を提供します。
残念ながら、OT の実装は最悪です。さまざまなトレードオフを持つ 100 万のアルゴリズムがあり、そのほとんどは学術論文に閉じ込められています。アルゴリズムを正しく実装するには、非常に困難で時間がかかります。優れたライブラリが必要なので、必要に応じてどのプロジェクトでも OT をプラグインできます。
それはsharejsのサイトからのものです。既存のクライアントにフックできる node.js ベースのサーバー クライアント。
OT は、Derby の基盤を形成する Node.js の Racer モデル同期エンジンにも実装されています。現時点では、derby.js はまだそれを透過的に提供していませんが、Derby docsからも計画しています。
現在、Racer はデフォルトで、すべてのトランザクションを受信した順序で適用します。つまり、last-writer-wins です。(…) Racerは[また]ソフトウェア トランザクショナル メモリ (STM)、運用変換 (OT)、および Diff-match-patch 技術の組み合わせによる競合解決もサポートしています。
これらの機能はまだ完全には実装されていませんが、Racer のデモでは STM と OT の予備的な例が示されています。
偶然にも、sharejs チームと derbyjs チームの両方に元 Google ウェイバーが参加しています。Meteor のコア チームには、ex etherpad/Google Waver がいます。Etherpad は OT の最もよく知られた実装の 1 つであるため、Meteor もいつかサポートしたいと考えていました…</p>