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