1 points par GN⁺ 2023-09-04 | 1 commentaires | Partager sur WhatsApp
  • Présentation des fondements théoriques et de l’implémentation technique de cola, un CRDT de texte (Conflict-free Replicated Data Type) pour l’édition collaborative en temps réel, écrit en Rust
  • Un CRDT est une structure de données qui peut être répliquée et modifiée simultanément sur plusieurs sites, avec une convergence garantie sans coordination d’une autorité centrale
  • L’article se divise entre la représentation de l’état du document et les éditions qui le transforment, la manière d’implémenter efficacement le framework dans le code, puis une comparaison par benchmarks entre cola et d’autres bibliothèques CRDT basées sur Rust
  • L’auteur présente dans le texte le concept d’Anchors, utilisé pour spécifier à la fois les insertions et les suppressions d’une manière qui active la concurrence
  • L’article explique aussi comment gérer les insertions en conflit à l’aide de Lamport timestamps, en les triant par ordre décroissant selon leur Lamport timestamp
  • L’auteur introduit le concept de tombstones pour gérer les suppressions. Les caractères marqués comme tombstoned sont indiqués comme supprimés mais restent conservés dans le document
  • L’article aborde également l’amélioration des performances du système grâce à l’utilisation de G-trees (grow-only trees). Les G-trees peuvent être parcourus dans les deux sens, ce qui rend les éditions répétées à la même position du curseur très rapides
  • L’auteur conclut l’article avec une comparaison de benchmarks entre cola et trois autres CRDT implémentés en Rust : diamond-types, automerge et yrs. cola surpasse les trois autres, aussi bien en amont qu’en aval
  • L’auteur souligne que cola est actuellement l’implémentation de CRDT de texte la plus rapide connue, mais qu’il reste encore du travail avant qu’elle soit prête pour la production, notamment la prise en charge de l’undo/redo et d’autres fonctionnalités

1 commentaires

 
GN⁺ 2023-09-04
Avis Hacker News
  • Un commentaire affirme que le G-tree est fondamentalement un B-tree auquel on a ajouté des pointeurs vers le parent, et que le fait de le stocker dans un tableau n’en change pas fondamentalement la structure
  • Des inquiétudes sont exprimées quant au fait que Cola ne prenne pas en charge les plages de formatage de texte enrichi comme le gras ou l’italique, et l’auteur du commentaire propose Peritext comme état de l’art actuel des algorithmes CRDT pour texte enrichi
  • Une question est posée sur les comparaisons de performances ou de fonctionnalités entre Cola et des technologies similaires comme Automerge ou Y.js/Yrs
  • Une solution au problème de propriété des nœuds dans un tableau dynamique a été discutée : tous les nœuds sont stockés dans le tableau dynamique et des index sont utilisés pour référencer les autres nœuds
  • Il est proposé d’utiliser une crate appelée slotmap afin de permettre la suppression sans avoir à craindre que les index se déplacent ou pointent vers d’autres valeurs
  • Certains utilisateurs ont exprimé leur intérêt pour essayer Cola sur des projets où d’autres outils comme Etherpad et Word ont échoué
  • Des critiques ont été formulées sur l’équité des benchmarks utilisés, au motif qu’ils ne calculent ni ne stockent les opérations ou le texte réel
  • Il a aussi été souligné qu’il ne fallait pas confondre ce Cola avec l’œuvre homonyme de Ian Piumarta
  • Une question a également été posée sur la possibilité de permettre l’édition collaborative de formulaires dans le navigateur à l’aide de CRDT textuels
  • Il a été suggéré de définir l’abréviation « CRDT » dans la documentation, car elle n’est pas si courante et pourrait dérouter les lecteurs
  • La possibilité d’utiliser Cola avec tiptap/prosemirror ou d’autres éditeurs de texte pour ajouter une édition collaborative basée sur les CRDT a également été évoquée