[HN Gopher] Cola: A text CRDT for real-time collaborative editing
       ___________________________________________________________________
        
       Cola: A text CRDT for real-time collaborative editing
        
       Author : homarp
       Score  : 92 points
       Date   : 2023-09-03 19:53 UTC (3 hours ago)
        
 (HTM) web link (nomad.foo)
 (TXT) w3m dump (nomad.foo)
        
       | danbruc wrote:
       | I would guess a G-tree is still a B-tree with additional parent
       | pointers, the fact that it is stored in an array is a matter of
       | representation but does not fundamentally change the structure.
       | This still stores pointers, they are just in units of the node
       | size instead of bytes and relative to the first array element
       | instead of the beginning of the address space. A complete binary
       | tree stored in a array without any explicit references, i.e. an
       | implicit representation with the children of the node at index x
       | stored at indices 2x + 1 and 2x + 2, is still referred to as a
       | binary tree, just with an implicit representation.
        
       | gjvc wrote:
       | not to be confused with Ian Piumarta's work of the same name:
       | 
       | https://www.piumarta.com/software/cola/
       | 
       | https://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=91...
        
         | satvikpendem wrote:
         | Or coda.io, a Notion clone style app.
        
       | homarp wrote:
       | written in Rust :)
       | 
       | https://github.com/nomad/cola - MIT licensed
        
       | jitl wrote:
       | This doesn't appear to support rich text formatting ranges like
       | bold, italic, etc - unless I'm missing something in the API.
       | AFAIK Peritext is still the state of the art in rich text CRDT
       | algorithms https://www.inkandswitch.com/peritext/
       | 
       | I'd love to see this build the rich text stuff from the Peritext
       | algorithm.
        
       | canadiantim wrote:
       | Is this something I can use eg with tiptap/prosemirror or some
       | other text editor to add CRDT-based collaborative editing?
        
         | teaearlgraycold wrote:
         | I don't think it's made to support WASM. You'd also need a
         | compatibility shim to get it to act like a Y Doc.
        
       | matlin wrote:
       | Any comparisons to Automerge or Y.js/Yrs regarding performance or
       | features?
        
         | jayunit wrote:
         | The "third part" of the post starts with "I've benchmarked cola
         | against 3 other CRDTs implemented in Rust: diamond-types,
         | automerge and yrs." This cola library appears to perform
         | favorably in operation speed.
         | 
         | I'd be curious to know about memory usage, too.
        
       ___________________________________________________________________
       (page generated 2023-09-03 23:00 UTC)