Description du projet
TraduitÀ l'intérieur, la fusion doit être sans conflit, donc nous attendons un moteur basé sur CRDT ou des transformations opérationnelles, pas un schéma naïf de 'dernier écrit gagne'. Les modifications simultanées de différents clients doivent converger vers exactement le même état final sur chaque machine, indépendamment de l'ordre de livraison des paquets et des délais réseau. Le travail hors ligne est important pour nous : un utilisateur qui perd la connexion doit pouvoir continuer à éditer localement, et ses modifications doivent se réconcilier automatiquement lorsque la connexion est rétablie, sans dialogue de fusion et sans perdre les caractères tapés. Nous avons également besoin d'un historique complet des versions avec des instantanés nommés, un fil d'édition visuel, et la possibilité de restaurer ou de comparer toute révision précédente.
Le transport doit être construit sur WebSocket avec reconnexion automatique et gestion de la pression arrière, et l'ensemble du système doit évoluer à travers plusieurs documents et plusieurs éditeurs concurrents afin que le serveur ne devienne pas un goulot d'étranglement. Nous vous demandons de traiter cela comme un travail de production : nous tenons à des API propres, des tests autour de la logique de fusion et une documentation claire afin que notre équipe puisse maintenir le projet à l'avenir.
— Curseurs en direct, sélections et indicateur de présence pour chaque utilisateur
— Moteur de fusion CRDT/OT avec garantie de convergence
— Édition hors ligne avec réconciliation automatique lors de la reconnexion
— Commentaires intégrés, fils de discussion et historique complet des versions