Опис проєкту
ПерекладУсередину злиття мало бути без конфліктів, тому ми чекаємо на двигун на CRDT або операційних перетвореннях, а не наївну схему «переможе останній». Одночасні правки з різних клієнтів мають сходитися до абсолютно однакового підсумкового стану на кожній машині незалежно від порядку доставки пакетів і затримок мережі. Для нас важлива робота офлайн: користувач, який втратив зв'язок, має продовжувати редагувати локально, а його зміни — автоматично узгоджуватися при відновленні з'єднання, без діалогу злиття й без втрати набраних символів. Потрібна й повна історія версій з іменованими знімками, наочною стрічкою правок і можливістю відновити або порівняти будь-яку колишню ревізію.
Транспорт має бути побудований на WebSocket з автоматичним переприєднанням і обробкою зворотного тиску, а вся система має масштабуватися на безліч документів і безліч одночасних редакторів так, щоб сервер не перетворювався на вузьке місце. Просимо ставитися до цього як до продакшн-роботи: нам важні чисті API, тести навколо логіки злиття й зрозуміла документація, щоб наша команда могла супроводжувати проект далі.
— Живі курсори, виділення й індикатор присутності по кожному користувачу
— Двигун злиття CRDT/OT з гарантією збіжності
— Редагування офлайн з автоматичним узгодженням при переприєднанні
— Вбудовані коментарі, гілки обговорень і повна історія версій