1 poin oleh GN⁺ 2023-09-04 | 1 komentar | Bagikan ke WhatsApp
  • Penjelasan tentang latar belakang teoretis dan implementasi teknis dari CRDT teks (Conflict-free Replicated Data Type) bernama 'cola' untuk pengeditan kolaboratif real-time, yang ditulis dengan Rust
  • CRDT adalah struktur data yang dapat direplikasi dan dimodifikasi secara bersamaan di beberapa situs, dengan jaminan konvergensi bahkan tanpa koordinasi otoritas pusat
  • Isi tulisan dibagi menjadi representasi keadaan dokumen dan edit yang mentransformasikannya, cara mengimplementasikan framework secara efisien dalam kode, serta perbandingan benchmark antara cola dan pustaka CRDT berbasis Rust lainnya
  • Penulis memperkenalkan konsep 'Anchors' dalam teks, yang digunakan untuk menentukan baik penyisipan maupun penghapusan dengan cara yang memungkinkan konkurensi
  • Makalah ini membahas penggunaan 'Lamport timestamps' untuk menangani penyisipan yang bertabrakan dengan mengurutkannya secara menurun berdasarkan Lamport timestamp
  • Penulis memperkenalkan konsep 'tombstones' untuk menangani penghapusan. Karakter yang telah ditandai tombstone dianggap terhapus, tetapi tetap dipertahankan dalam dokumen
  • Makalah ini membahas cara meningkatkan kinerja sistem melalui penggunaan 'G-trees' (grow-only trees). G-trees dapat ditelusuri dua arah sehingga pengeditan berulang pada posisi kursor yang sama menjadi sangat cepat
  • Penulis menutup makalah dengan perbandingan benchmark antara cola dan tiga CRDT lain yang diimplementasikan dengan Rust: diamond-types, automerge, dan yrs. Cola mengungguli ketiganya baik pada arah upstream maupun downstream
  • Penulis mencatat bahwa meskipun cola saat ini merupakan implementasi CRDT teks tercepat yang diketahui, masih ada pekerjaan yang perlu dilakukan agar siap diproduksi, misalnya dukungan undo/redo dan fitur lainnya

1 komentar

 
GN⁺ 2023-09-04
Opini Hacker News
  • Salah satu komentar menyatakan bahwa G-tree pada dasarnya adalah B-tree dengan pointer induk tambahan, dan meskipun disimpan dalam array, strukturnya tidak berubah secara mendasar
  • Ada kekhawatiran bahwa Cola mungkin tidak mendukung rentang pemformatan rich text seperti tebal dan miring, dan penulis komentar mengusulkan Peritext sebagai state-of-the-art untuk algoritme CRDT rich text
  • Ada pertanyaan tentang perbandingan performa atau fitur antara Cola dan teknologi serupa seperti Automerge atau Y.js/Yrs
  • Dibahas solusi untuk masalah kepemilikan node dalam array dinamis, di mana semua node disimpan dalam array dinamis dan indeks digunakan untuk mereferensikan node lain
  • Diusulkan penggunaan crate bernama slotmap agar penghapusan didukung tanpa kekhawatiran indeks berpindah atau menunjuk ke nilai lain
  • Beberapa pengguna menyatakan minat untuk mencoba Cola pada proyek-proyek yang gagal dengan alat lain seperti Etherpad dan Word
  • Muncul kritik terhadap keadilan benchmark yang digunakan karena tidak menghitung dan menyimpan operasi atau teks nyata
  • Juga disebutkan bahwa Cola ini tidak boleh tertukar dengan karya Ian Piumarta yang bernama sama
  • Ada juga pertanyaan tentang memungkinkan pengeditan kolaboratif formulir di browser dengan menggunakan CRDT teks
  • Diusulkan agar singkatan "CRDT" didefinisikan dalam dokumen karena istilah ini tidak terlalu umum dan bisa membingungkan pembaca
  • Juga diajukan pertanyaan tentang kemungkinan menggunakan Cola bersama tiptap/prosemirror atau editor teks lain untuk menambahkan pengeditan kolaboratif berbasis CRDT