1 पॉइंट द्वारा GN⁺ 2023-09-04 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Rust में लिखे गए cola नामक रीयल-टाइम collaborative editing के लिए टेक्स्ट CRDT (Conflict-free Replicated Data Type) की सैद्धांतिक पृष्ठभूमि और तकनीकी implementation की व्याख्या
  • CRDT एक ऐसी data structure है जिसे कई साइटों पर एक साथ replicate और modify किया जा सकता है, और केंद्रीय authority के coordination के बिना भी convergence की गारंटी होती है
  • लेख की सामग्री को document की state representation और उसे transform करने वाले edits, code में framework को efficiently implement करने के तरीके, और cola तथा अन्य Rust-आधारित CRDT libraries के साथ benchmark comparison में बाँटा गया है
  • लेखक टेक्स्ट में Anchors नामक एक concept पेश करता है, जिसका उपयोग insertion और deletion दोनों को इस तरह निर्दिष्ट करने में किया जाता है कि concurrency सक्षम हो सके
  • लेख में Lamport timestamps का उपयोग करके conflicting insertions को Lamport timestamp के अनुसार descending order में sort कर handle करने के तरीके पर चर्चा की गई है
  • लेखक deletion को handle करने के लिए tombstones नामक concept प्रस्तुत करता है। tombstoned characters को deleted के रूप में mark किया जाता है, लेकिन वे document में बने रहते हैं
  • लेख में G-trees (grow-only trees) के उपयोग से system performance बेहतर करने के तरीकों पर चर्चा की गई है। G-trees को दोनों दिशाओं में traverse किया जा सकता है, इसलिए एक ही cursor position पर बार-बार होने वाले edits बहुत तेज़ होते हैं
  • लेखक लेख का समापन cola की तुलना Rust में implemented तीन अन्य CRDT — diamond-types, automerge, yrs — के साथ benchmark results से करता है। cola upstream और downstream दोनों दिशाओं में इन तीनों से बेहतर प्रदर्शन करता है
  • लेखक बताता है कि cola इस समय ज्ञात सबसे तेज़ टेक्स्ट CRDT implementation है, लेकिन production-ready होने के लिए अभी और काम बाकी है, जैसे undo/redo और अन्य features का समर्थन

1 टिप्पणियां

 
GN⁺ 2023-09-04
Hacker News राय
  • एक टिप्पणी में दावा किया गया कि G-ट्री मूल रूप से parent pointer जोड़े गए B-ट्री जैसा है, और इसे array में स्टोर करने पर भी उसकी संरचना मूल रूप से नहीं बदलती
  • यह चिंता जताई गई कि Cola शायद bold, italic जैसी rich text formatting ranges को support न करे, और टिप्पणी लिखने वाले ने rich text CRDT algorithms में state of the art के रूप में Peritext का सुझाव दिया
  • Cola और Automerge या Y.js/Yrs जैसी समान तकनीकों के बीच performance या features की तुलना को लेकर सवाल उठे
  • dynamic array में node ownership समस्या के समाधान पर चर्चा हुई, जहाँ सभी nodes dynamic array में स्टोर होते हैं और दूसरे nodes को refer करने के लिए indices का उपयोग किया जाता है
  • slotmap नाम के crate का उपयोग करने का सुझाव दिया गया ताकि indices के खिसकने या दूसरे values को point करने की चिंता के बिना deletion support किया जा सके
  • कुछ users ने Etherpad और Word जैसे दूसरे tools जहाँ असफल रहे, उन projects में Cola को आज़माने में रुचि दिखाई
  • इस्तेमाल किए गए benchmarks की fairness पर आलोचना की गई, क्योंकि वे operations या वास्तविक text को calculate और store नहीं करते
  • यह भी कहा गया कि इस Cola को Ian Piumarta की इसी नाम की कृति के साथ भ्रमित नहीं किया जाना चाहिए
  • text CRDT का उपयोग करके browser में forms की collaborative editing संभव बनाने को लेकर भी सवाल पूछा गया
  • दस्तावेज़ में "CRDT" इस संक्षेप को परिभाषित करने का सुझाव दिया गया, क्योंकि यह इतना आम नहीं है और पाठक भ्रमित हो सकते हैं
  • tiptap/prosemirror या दूसरे text editors के साथ Cola का उपयोग करके CRDT-आधारित collaborative editing जोड़ने की संभावना पर भी सवाल उठाया गया