Rails, AnyCable, 그리고 YJS를 활용한 실시간 협업
Rails 애플리케이션에서 AnyCable을 사용하여 고성능 WebSocket 연결을 구축하고, YJS(CRDT)로 충돌 없는 실시간 동시 편집 기능을 구현할 수 있습니다.
Rails, AnyCable, 그리고 YJS를 활용한 실시간 협업
Rails 애플리케이션에서 AnyCable을 사용하여 고성능 WebSocket 연결을 구축하고, YJS(CRDT)로 충돌 없는 실시간 동시 편집 기능을 구현할 수 있습니다.
Все тесты зелёные, а байты разные: как я проверяю порты бинарных форматов
У меня было полторы сотни кросс-языковых фикстур, все тесты зелёные, и я был уверен, что мой Go-порт Yjs байт-в-байт совместим с оригиналом. Потом сравнил байты напрямую с канонической реализацией, и они разъехались: семантика сходится идеально, а на проводе документ толще. Юнит-тесты, roundtrip и даже конвергенц-тесты систематически пропускают баги совместимости, когда портируешь чужой бинарный формат на другой язык. Рабочий метод один: генерировать фикстуры из канона и требовать в CI побайтового совпадения в обе стороны. Разбираю конвейер и три реальных бага из трёх своих портов (Yjs, Loro, Willow): документ в 12 раз толще канона, big-endian остров, который молча портил бы все float’ы при обмене, и дыра, через которую 9-байтный апдейт заказывал make() на 67 ТБ. Метод обобщается на любой «порт формата X на язык Y», CRDT тут просто материал.
https://habr.com/ru/articles/1049858/
#CRDT #Yjs #Loro #Go #тестовые_векторы #фикстуры #wire_format #conformance_testing #байтсовместимость #сериализация
Un fichier HTML. Aucun serveur. Aucun compte. Mais un graphe qui émerge, des quêtes qui se tissent, et un réseau qui peut être chiffré.
Ça s’appelle NoirBulles.
Ça tient dans une page web.
Et ça change la façon dont on pense ensemble.
La landing page (et l’app) → https://la.bulloterie.org/site/noire/start.html
#LocalFirst #PKM #NotNotion #GrimoireNumerique #OpenSource #Yjs
https://www.numerique.gouv.fr/sinformer/blog/la-fabrique-du-libre-2-quand-le-secteur-public-europeen-et-lecosysteme-open-source-collaborent-le-cas-lasuite-docs/ (La Fabrique du Libre #2 : Quand le secteur public européen et l'écosystème open source collaborent - le cas LaSuite Docs )
Le choix de la simplicité radicale
L'outil LaSuite Docs est né d'une frustration bien connue des utilisateurs d'outils de traitement de texte traditionnels. Face à la complexité excessive et aux fonctionnalités parfois superflues de Word ou Google Docs, l'équipe de LaSuite a fait le choix de la simplicité radicale.
LaSuite Docs se distingue ainsi par sa philosophie minimaliste :
- Pas de choix de la police de caractères ;
- Pas de choix de la taille de l'interligne ou des titres ;
- Pas de pagination, d'en-tête ou de pied de page.
Virgile Deville explique ce choix radical : « Cette approche, adoptée intentionnellement, contraint les utilisateurs de LaSuite Docs à se concentrer sur l'essentiel : le contenu.
Nous construisons LaSuite Docs selon le principe du 'content over form'.
Le résultat ? Des documents plus simples à produire, et surtout, à maintenir. »
Au-delà de la simplicité de son design, LaSuite Docs offre des fonctionnalités essentielles pour le travail collaboratif des agents de l'État français :
- La collaboration en temps réel ;
- Accessible via un navigateur, aucune installation requise ;
- Des documents imbriqués, pour créer organiser ses documents en base de connaissance ;
- La publication par lien, pour transformer ses notes en plateforme de documentation externe ou interne ;
- Un historique de versions et la possibilité de les restaurer en cas de souci.
Les librairies open source comme socle de l'outil
Comme le souligne Virgile « Avec LaSuite Docs, nous avons fait le choix de ne pas faire de choses trop difficiles.
Nous construisons une application Django, sur laquelle est branchée l'authentification OIDC, nous gérons les permissions sur les documents, nous traitons les sous-documents et l'interface utilisateur. »
La vraie magie opère grâce à quelques librairies open source qui gèrent toute la complexité technique.
Au cœur du système, on retrouve les CRDTs (Conflict-free Replicated Data Types) - des structures de données qui permettent à plusieurs personnes de travailler simultanément sur différentes versions d'un même document et de résoudre automatiquement les conflits en temps réel.
LaSuite Docs repose sur trois librairies ouvertes :
- BlockNote, un éditeur de texte riche pour assurer l'interface utilisateur ;
- Yjs, une librairie CRDT pour gérer la synchronisation en temps réel ;
- ProseMirror, un framework sous-jacent pour l'édition de documents structurés.
« C'est assez fou que nous ayons cela en open source de nos jours », souligne Virgile.
« Il y a dix ans, il n'en aurait pas été question.
Et aujourd'hui, nous pouvons réaliser ce projet relativement simplement. »
Un témoignage qui fait écho à celui de Christian Quest (https://www.numerique.gouv.fr/sinformer/blog/la-fabrique-du-libre-panoramax-de-lutopie-a-linfrastructure-publique/) , à l'origine de la base de photos citoyennes libre d’accès et souveraine Panoramax : certains projets ne peuvent démarrer qu’au moment où le contexte technologique et économique le permet.
Pour LaSuite Docs, les planètes sont alignées !
#Allemagne #BlockNote #Django #Editeur #Europe #France #GoogleDocs #Javascript #LaSuite #LogicielLibre #OpenSource #OpenSource #PaysBas #ProseMirror #Python #SecteurPublic #Word #Yjs
Lies I was told about collaborative editing, Part 2: Why we don't use Yjs
https://www.moment.dev/blog/lies-i-was-told-pt-2
#HackerNews #LiesCollaborativeEditing #Yjs #Part2 #TechDebate #MomentDev
Render PDF in an external window