Saya mencari perpustakaan yang memungkinkan saya untuk menyinkronkan teks secara real-time antara banyak pengguna (ala Google Docs).
Saya telah menemukan Transformasi Operasional, yang tampaknya sesuai dengan kebutuhan saya. Karena itu, saya mengerti inti dari PL, tetapi bukan matematika atau implementasi PL.
Jadi, saya bertanya-tanya apakah ada pustaka Javascript drag'n'drop yang akan menghubungkan ke area teks, menghasilkan transformasi, lalu mengizinkan saya menerapkan transformasi tersebut ke klien lain?
(Saya sudah mendapatkan sumber Etherpad, tetapi saya tidak bisa mengetahuinya. Jika ada yang bisa menunjukkan bagaimana memanfaatkan implementasi OT Etherpad, itu akan bagus juga!)
transform
etherpad
operational
gamers2000
sumber
sumber
Jawaban:
Saya pikir bagian dari implementasi OT Google Wave adalah Open Source (dan lebih banyak bagian akan datang).
Saya tidak yakin apakah ini yang Anda cari, tetapi alternatif untuk OT adalah Sinkronisasi Diferensial :
sumber
Salah satu mantan insinyur Wave telah merilis implementasi Coffeescript dari algoritme pengeditan kolaboratifnya yang disebut ShareJS, sekarang bernama ShareDB .
sumber
Saya akan meringkas solusi yang saya temukan.
Transformasi Operasional: Misalnya
Sinkronisasi Diferensial:
CRDT (Tipe Data yang Direplikasi Komutatif):
sumber
Perpustakaan OT:
Dalam proyek websocket HWIOS, saya telah berhasil menggunakan kombinasi keduanya (py-infinote di sisi server, jinfinote di sisi klien) untuk menyinkronkan status dokumen.
sumber
Pustaka ot.js https://github.com/Operational-Transformation/ot.js mungkin berguna untuk skenario multi-pengguna.
sumber
https://github.com/opencoweb/coweb
sumber
Turnkey, atau solusi "seret dan lepas" untuk masalah ini belum benar-benar ada karena kerumitan sinkronisasi yang andal dari status yang bisa berubah bersama. Tanggapan dmonad adalah ringkasan yang layak, dan saya memposting ikhtisar terbaru dari solusi yang tersedia di sini .
Pertanyaan ini cukup lama, tetapi Konvergensi (penafian: Saya seorang pendiri) menyediakan solusi paling siap pakai di luar sana, tidak hanya menyediakan sinkronisasi data tetapi sejumlah API lain yang berguna untuk membangun UX kolaboratif. Berikut adalah contoh yang menunjukkan dengan tepat apa yang Anda minta: sinkronisasi bidang teks di beberapa klien.
Jika tidak, ShareDB adalah solusi sumber terbuka yang bagus yang sesuai dengan kebutuhan banyak orang.
sumber
Lihat juga Perpustakaan Javascript ini:
sumber
Dengan lib klien js (Strophe.js) Anda dapat menggunakan server XMPP gratis (seperti jabber.org) bersama dengan lib OT sisi klien saya (JSOTTEST) untuk membangun sistem server-klien lengkap.
Saya akan mengirimkan src dari sistem obrolan klien-server demo ketika saya punya waktu untuk merevisi kodenya.
sumber
Npm memiliki beberapa perpustakaan yang bagus untuk node.js:
sumber
Anda bisa berbicara dengan orang-orang di Cedanet . Meskipun Ceda adalah sumber tertutup dan tidak ada uji coba gratis yang tersedia di situs web mereka. Saya telah terlibat dalam pengembangan Ceda dan terus bekerja dengannya dalam proyek komersial, jadi saya mungkin dapat memberikan beberapa umpan balik / saran jika Anda mengikuti jalan ini.
sumber
Saya pikir etherpad.org dengan etherpad lite lebih unggul daripada solusi lain.
sumber
Kami membangun editor kolaboratif yang menggabungkan Transformasi Operasional dengan pembuatan versi. Dengan begitu kami dapat mendukung kolaborasi offline dan online. Kami merilis perpustakaan OT kami sendiri kemarin sebagai bagian dari tumpukan sumber terbuka kami.
http://interior.substance.io/modules/operator.html
Kami juga telah menyumbangkan perpustakaan untuk pembuatan versi.
http://interior.substance.io/modules/chronicle.html
sumber
Saya telah menulis pustaka unixy kecil (melakukan satu hal dan melakukannya dengan baik) yang mengimplementasikan lapisan kontrol OT, memungkinkan Anda untuk menyambungkan berbagai jenis OT (mendukung semua jenis yang sesuai dengan shareJS). Ini mirip dengan shareJS tetapi kurang beropini dan lebih abstrak.
https://github.com/marcelklehr/gulf
sumber