1 pontos por GN⁺ 2023-09-04 | 1 comentários | Compartilhar no WhatsApp
  • Explicação do contexto teórico e da implementação técnica do cola, um CRDT de texto (Conflict-free Replicated Data Type) para edição colaborativa em tempo real, escrito em Rust
  • CRDT é uma estrutura de dados que pode ser replicada e modificada simultaneamente em vários sites, garantindo convergência mesmo sem coordenação de uma autoridade central
  • O conteúdo do texto se divide entre a representação do estado de um documento e as edições que o transformam, formas de implementar o framework de modo eficiente no código e uma comparação de benchmarks entre o cola e outras bibliotecas CRDT baseadas em Rust
  • O autor apresenta no texto o conceito de Anchors, usado para especificar tanto inserções quanto exclusões de uma forma que habilita concorrência
  • O artigo discute como lidar com inserções conflitantes usando Lamport timestamps, ordenando-as em ordem decrescente de acordo com o timestamp de Lamport
  • O autor introduz o conceito de tombstones para lidar com exclusões. Caracteres marcados como tombstoned são sinalizados como excluídos, mas continuam mantidos no documento
  • O artigo discute como melhorar o desempenho do sistema com o uso de G-trees (grow-only trees). Como as G-trees podem ser percorridas em ambas as direções, edições repetidas na mesma posição do cursor ficam muito rápidas
  • O autor encerra o artigo com uma comparação de benchmarks entre o cola e outros três CRDTs implementados em Rust: diamond-types, automerge e yrs. O cola supera os outros três tanto no sentido upstream quanto downstream
  • O autor aponta que o cola é atualmente a implementação de CRDT de texto mais rápida conhecida, mas ainda há trabalho a fazer para deixá-lo pronto para produção, como suporte a undo/redo e outros recursos

1 comentários

 
GN⁺ 2023-09-04
Comentários do Hacker News
  • Um comentário afirma que a G-tree é basicamente uma B-tree com ponteiros para o pai adicionados, e que mesmo armazenando-a em um array sua estrutura não muda fundamentalmente
  • Há preocupação de que o Cola talvez não suporte intervalos de formatação de texto rico, como negrito e itálico, e o autor do comentário sugere o Peritext como estado da arte em algoritmos de CRDT para rich text
  • Há uma pergunta sobre comparações de desempenho ou funcionalidades entre o Cola e tecnologias semelhantes como Automerge ou Y.js/Yrs
  • Foi discutida uma solução para o problema de propriedade de nós em arrays dinâmicos, em que todos os nós são armazenados no array dinâmico e índices são usados para referenciar outros nós
  • Foi sugerido usar uma crate chamada slotmap para permitir exclusão sem preocupação com índices se moverem ou passarem a apontar para outros valores
  • Alguns usuários demonstraram interesse em testar o Cola em projetos nos quais outras ferramentas como Etherpad e Word falharam
  • Foram feitas críticas à justiça dos benchmarks usados, porque eles não calculam nem armazenam o trabalho ou o texto real
  • Também foi mencionado que este Cola não deve ser confundido com a obra homônima de Ian Piumarta
  • Houve também uma pergunta sobre tornar possível a edição colaborativa de formulários no navegador usando um CRDT de texto
  • Foi sugerido definir a sigla "CRDT" no documento, pois ela não é tão comum e pode confundir os leitores
  • Também foi levantada a possibilidade de usar o Cola com tiptap/prosemirror ou outros editores de texto para adicionar edição colaborativa baseada em CRDT