Descrizione del progetto
TradottoAll'interno, la fusione deve essere senza conflitti, quindi ci aspettiamo un motore basato su CRDT o trasformazioni operative, non uno schema ingenuo 'l'ultimo scrive vince'. Le modifiche simultanee da diversi client devono convergere esattamente allo stesso stato finale su ciascuna macchina indipendentemente dall'ordine di consegna dei pacchetti e dai ritardi di rete. Il lavoro offline è importante per noi: un utente che perde la connessione dovrebbe essere in grado di continuare a modificare localmente, e le sue modifiche dovrebbero riconciliarsi automaticamente quando la connessione viene ripristinata, senza un dialogo di fusione e senza perdere i caratteri digitati. Abbiamo anche bisogno di una cronologia delle versioni completa con snapshot nominate, un feed di modifica visivo e la possibilità di ripristinare o confrontare qualsiasi revisione precedente.
Il trasporto dovrebbe essere costruito su WebSocket con riconnessione automatica e gestione della pressione di ritorno, e l'intero sistema deve scalare su più documenti e più editor contemporanei in modo che il server non diventi un collo di bottiglia. Ti chiediamo di trattare questo come lavoro di produzione: ci interessa avere API pulite, test sulla logica di fusione e documentazione chiara affinché il nostro team possa mantenere il progetto in futuro.
— Cursori in tempo reale, selezioni e indicatore di presenza per ciascun utente
— Motore di fusione CRDT/OT con garanzia di convergenza
— Modifica offline con riconciliazione automatica al ripristino della connessione
— Commenti incorporati, thread di discussione e cronologia delle versioni completa