111

複数のユーザー間でテキストをリアルタイムで同期できるライブラリを探しています (ala Google Docs)。

私は、私のニーズに合っているように思われる Operational Transformation に出くわしました。そうは言っても、OTの要点は理解していますが、OTの数学や実装は理解していません。

したがって、テキスト領域にフックして変換を生成し、それらの変換を別のクライアントに適用できるドラッグアンドドロップ Javascript ライブラリがあるかどうか疑問に思っていましたか?

(私は Etherpad のソースを手に入れましたが、それについて頭も尻尾もわかりません。誰かが Etherpad の OT 実装を活用する方法を指摘できれば、それも素晴らしいことです!)

4

14 に答える 14

59

Google WaveのOT実装の一部はオープンソースだと思います(そしてさらに多くの部分が登場します)。

これがあなたが探しているものであるかどうかはわかりませんが、OTの代わりに差動同期があります:

于 2010-01-11T16:58:10.260 に答える
44

元 Wave エンジニアの 1 人が、ShareJS と呼ばれる共同編集アルゴリズムの Coffeescript 実装をリリースしました。現在はShareDBと名付けられています。

于 2011-10-18T21:57:52.643 に答える
40

私が見つけた解決策を要約します。

  • 運用の変革: 例

    • Google Wave OT. このアプローチは、いわゆる Jupiter アプローチに基づいています。
    • ShareJs。Google Wave OT と同じ OT アルゴリズムに基づいています。
    • クモの巣。COT に基づく - p2p メッセージ伝搬もサポートする非常に洗練された OT アプローチ。
    • OpenCoweb。多くの同様の問題に対して本格的なフレームワークを提供するために、OpenCoweb-jsoe を活用しています。
    • OT.js は、ShareJs の操作タイプに基づいています。
    • ドライブSDK. グラフでのコラボレーションなど、多くのことを実行できる非常に興味深い API。
    • SwellRT は Apache Wave のフォークです。フェデレーションされており、リッチ テキストをサポートしています。
  • 差分同期:

    • Neil Fraser による Diff-Match-Patch。
    • MobWrite は Diff-Match-Patch アルゴリズムを活用します。
  • CRDT (Commutative Replicated Data Type):

    • 共有型の実装を可能にするさまざまな CRDT アルゴリズムが多数あります。一部の CRDT は P2P メッセージ伝播で動作し、一部はクライアント サーバー モデルに依存しています
    • Yjsを使用すると、任意のデータ型 (RichText、Array、Hash Maps、.. 拡張可能) を共有できます。オフライン サポートと P2P 通信プロトコルのサポート (XMPP、Websockets、および WebRTC 用のモジュールがあります)
    • オフラインをサポートするSwarmJSクライアント サーバー共有データベース。Reactでうまく動作します
    • Woot Woot CRDT の実装
    • CRDT別の CRDT 実装
    • 自動マージ
于 2014-10-25T22:18:07.860 に答える
6

OT ライブラリ:

HWIOS websocket プロジェクト内で、ドキュメントの状態を同期するために、両方の組み合わせ (サーバー側の py-infinote、クライアント側の jinfinote) をうまく使用しました。

于 2011-03-04T08:52:29.823 に答える
5

ot.js ライブラリ https://github.com/Operational-Transformation/ot.jsは、マルチユーザー シナリオに役立つ場合があります。

于 2013-09-11T20:50:01.203 に答える
4

https://github.com/opencoweb/coweb

于 2011-09-30T12:29:32.263 に答える
2

Npm には、node.js 用の優れた ot ライブラリがいくつかあります。

  • https://npmjs.org/package/ot -- 組み込みの codemirror と ace のアダプター、およびクライアントとサーバーの実装
  • https://npmjs.org/package/changesets -- ノードとブラウザで使用できるプレーンなライブラリ。送信したり、相互に変換したり、ドキュメントに適用したりできる「変更セット」(基本的に差分) を作成できます。
于 2013-02-13T15:44:25.140 に答える
2

私は、OT コントロール レイヤーを実装する小さな unixy (1 つのことをうまく行う) ライブラリを作成しました。これにより、さまざまな OT タイプをプラグインできます (すべての shareJS 準拠のタイプをサポートします)。これは shareJS に似ていますが、独断的ではなく、より抽象的です。

https://github.com/marcelklehr/gulf

于 2016-04-01T20:19:42.137 に答える
2

これらの Javascript ライブラリもチェックしてください。

于 2011-08-11T07:22:55.920 に答える
1

Cedanetの人たちと話すことができます。ただし、Ceda はクローズド ソースであり、Web サイトで無料の試用版を利用することはできません。私は Ceda の開発に携わっており、商用プロジェクトで引き続き使用しているため、この道を進んでいる場合は、フィードバックやアドバイスを提供できるかもしれません。

于 2010-07-28T07:51:36.383 に答える
1

js クライアント ライブラリ (Strophe.js) を使用すると、クライアント側の OT ライブラリ (JSOTTEST) と共に無料の XMPP サーバー (jabber.org など) を使用して、完全なクライアント サーバー システムを構築できます。

コードを修正する時間ができたら、デモ クライアント サーバー チャット システムの src を送信します。

于 2011-10-06T08:58:05.353 に答える
1

運用の変革とバージョニングを組み合わせたコラボレーション エディターを構築しています。そうすることで、オフラインとオンラインの両方のコラボレーションをサポートできます。昨日、オープンソース スタックの一部として独自の OT ライブラリをリリースしました。

http://interior.substance.io/modules/operator.html

バージョン管理用のライブラリも提供しています。

http://interior.substance.io/modules/chronicle.html

于 2013-07-10T10:59:01.850 に答える
0

私は、etherpad lite を搭載した etherpad.org が他のソリューションよりも優れていると考えています。

于 2011-09-23T10:49:21.587 に答える