Совместный редактор в реальном времени
Совместный редактор в реальном времени — это тип программного обеспечения или веб-приложения для совместной работы , которое обеспечивает совместное редактирование в реальном времени , одновременное редактирование или редактирование в реальном времени одного и того же цифрового документа , компьютерного файла или хранящихся в облаке данных, , таких как онлайн-таблица , Word. обработка документа, базы данных или презентации — одновременно разными пользователями на разных компьютерах или мобильных устройствах с автоматическим и практически мгновенным объединением их правок.
Редактирование в реальном времени выполняет автоматическую, периодическую, часто почти мгновенную синхронизацию изменений всех онлайн-пользователей, когда они редактируют документ на своем собственном устройстве. Это сделано для того, чтобы избежать или свести к минимуму конфликты редактирования .
При асинхронном совместном редактировании (т. е. не в режиме реального времени, с задержкой или в автономном режиме) каждый пользователь обычно должен вручную отправлять (публиковать, отправлять или фиксировать), обновлять (обновлять, извлекать, загружать или синхронизировать) и (если возникают конфликты редактирования) объединять их правки. Из-за отложенного характера асинхронного совместного редактирования несколько пользователей могут в конечном итоге редактировать одну и ту же строку, слово, элемент, данные , строку или поле, что приводит к конфликтам редактирования , которые требуют ручного слияния или перезаписи редактирования, требуя от пользователя выбора, какие изменения использовать. или (в зависимости от системы и настроек) автоматически перезаписывать свои правки или правки других людей с предупреждением или без него.
История ключевых продуктов
[ редактировать ]Первый экземпляр совместного редактора в реальном времени был продемонстрирован Дугласом Энгельбартом в 1968 году в книге «Мать всех демонстраций» . На появление широко доступных реализаций этой концепции потребовались десятилетия.
Часть программного обеспечения под названием Instant Update была выпущена для классической Mac OS в 1991 году компанией ON Technology . [1] [ нужен лучший источник ] Он позволял редактировать один документ в режиме реального времени нескольким пользователям через локальную сеть и опирался на рабочей группы сервер .
Интерес к совместному редактированию в реальном времени через Интернет привел к развитию MoonEdit и SubEthaEdit в 2003-2005 годах, за которыми вскоре последовал Gobby .
С появлением технологии Ajax и функции «редактирования контента» в браузерах совместное редактирование через Интернет в режиме реального времени стало частью феномена Web 2.0 примерно в 2005 году. В частности, продукт под названием Writely вызвал взрывной рост числа пользователей и был куплен. Google в марте 2006 года (так называемый Google Docs , а затем переименованный в Google Drive ). Он обеспечивал одновременное редактирование всего документа, хотя изменения, внесенные другими пользователями, отражались только после опроса клиентской программой сервера (примерно каждые полминуты). [ нужна ссылка ] Еще одним ранним веб-решением был JotSpotLive, в котором одновременное построчное редактирование было доступно практически в реальном времени. [2] Однако после покупки Google материнской компании JotSpot в ноябре 2006 года сайт был закрыт. Google Sites был запущен в феврале 2007 года как рефакторинг JotSpot. [3] [4] [5] [6] но ему не хватает многопользовательских возможностей JotLive в режиме реального времени. Проекты Synchroedit (форматированный текст) и MobWrite (обычный текст) — это две более поздние попытки с открытым исходным кодом заполнить пробел в совместном редактировании на основе браузера в реальном времени, хотя они до сих пор не могут достичь истинной производительности в реальном времени, особенно на масштабная архитектура. [ нужна ссылка ]
В 2009 году Google начал бета-тестирование Google Wave , среды для совместной работы в реальном времени, которая, как надеялась Google, в конечном итоге заменит электронную почту и обмен мгновенными сообщениями. [ нужна ссылка ] EtherPad был приобретен компанией Google, которая выделила команду EtherPad для работы в рамках проекта Wave. Однако в августе 2010 года Google объявил в своем блоге. [7] что компания решила прекратить разработку Wave как отдельного проекта из-за недостаточного признания пользователями. как Google выпустил заброшенный исходный код EtherPad как открытый исходный код в декабре 2009 года, сообщество взяло на себя его разработку и произвело полную переработку под названием Etherpad lite , которая полностью написана на JavaScript и построена поверх Node.js. После того , Еще одним заметным инструментом, основанным на оперативной трансформации технологии , является CKEditor . [8] В 2020 году наблюдался всплеск интереса к этой концепции, поскольку Microsoft также недавно выпустила свою среду Fluid, которая опирается на новую технологию Total Order Broadcast, в отличие от OT или CRDT. [9] В настоящее время Fluid не зависит от платформы. Microsoft заявляет, что он еще не готов к использованию в производстве. [10]
В июне 2016 года компания Collabora Productivity выпустила версию 1.0 Collabora Online , онлайн-офисного пакета с открытым исходным кодом, использующего технологию LibreOffice . Его можно интегрировать в любой веб-сайт с помощью нескольких строк кода. Существует комплект разработки программного обеспечения с примером кода интеграции на нескольких языках Node.js , PHP , Python , ReactJS и .NET . Они имеют спецификации API, обеспечивающие функциональную интеграцию с настраиваемыми пользовательскими интерфейсами. [11] [12] [13] Поскольку документы Collabora Online остаются на сервере, каждый пользователь одновременно использует один и тот же документ, что позволяет редактировать только один документ в режиме реального времени и в интерактивном режиме без дополнительных задержек или задержек, чтобы увидеть, как печатают другие пользователи. Это позволяет избежать необходимости блокировки абзацев в текстовых документах. Он обеспечивает совместное редактирование в режиме реального времени текстовых документов, электронных таблиц, презентаций, рисунков и векторной графики.
Недавно совместное редактирование в реальном времени вернулось в автономные приложения для редактирования текста с расширениями для Atom и Visual Studio Code , выпущенными в 2020 году. [14] [15]
Другие примеры
[ редактировать ]Совместное редактирование в режиме реального времени может происходить онлайн в веб-приложениях, таких как Microsoft Office в Интернете (ранее Office Online ), который поддерживает ( через Интернет одновременное онлайн-редактирование ) (которое Microsoft называет «совместным авторством») документов Word . Excel Таблицы , PowerPoint и другие Microsoft Office, документы Office.com , OneDrive или SharePoint хранящиеся в облачном хранилище , а также в Google Docs и других приложениях Google Workspace для повышения производительности (офисный пакет) для совместного онлайн-редактирования текстовых редакторов и других документов, хранящихся на Google Диске . Совместное редактирование в реальном времени также может осуществляться гибридным способом, например, с помощью Power Sheet BI для Excel. [16] при совместном редактировании в автономном, веб- и онлайн-режиме в настольном программном обеспечении, а также в веб-приложениях и мобильных приложениях, которые можно автоматически синхронизировать с мгновенным доступом к истории версий. В 2020 году возродился интерес к встраиванию этих приложений в безопасные веб-приложения, особенно для бизнес-приложений, при этом Microsoft и Vaadin взяли на себя ведущую роль в разработке специализированных бэкэндов для совместной работы в реальном времени, которые справляются со сложностями синхронного обмена данными в реальном времени, что разработчики могут использовать через API. [17] [18] В 2013 году Mozilla выпустила библиотеку JavaScript TogetherJS, которая добавляет совместное редактирование в реальном времени в любое веб-приложение через систему обмена сообщениями и, при необходимости, алгоритм оперативного преобразования для синхронизации форм. [19]
Vaadin Ltd., поставщик платформы Vaadin, выпустила версию 1.0 своей системы для совместной работы. В октябре 2020 г. [20] с целью позволить разработчикам быстро встраивать функции совместной работы и редактирования в реальном времени в любое веб-приложение с серверной частью Java, используя несколько строк кода (для конкретных случаев использования через их, все еще ограниченные, высокоуровневые API). [21] Эта функция в настоящее время поддерживает Java, хотя поставщик отмечает, что API на основе TypeScript также скоро появится, что соответствует недавнему продолжающемуся расширению платформы Vaadin, позволяющему в будущем создавать пользовательский интерфейс на основе TypeScript с помощью предстоящей платформы Fusion. [22] [23]
Технические проблемы
[ редактировать ]Этот раздел нуждается в дополнительных цитатах для проверки . ( август 2008 г. ) |
Возможно, этот раздел содержит оригинальные исследования . ( Август 2008 г. ) |
Сложность решений для совместного редактирования в реальном времени связана с задержками связи. Теоретически, если бы связь была мгновенной, то создание совместного редактора в реальном времени было бы не сложнее, чем создание однопользовательского редактора, поскольку документ можно было бы редактировать, используя алгоритм, аналогичный следующему:
- Запросить токен «редактировать документ» с сервера
- Подождите, пока сервер не скажет, что наша очередь редактировать документ.
- Сообщите серверу, как редактировать документ
- Отпустите токен «редактировать документ».
Однако скорость связи ограничена задержкой сети. Это создает фундаментальную дилемму: пользователям нужно, чтобы их собственные правки включались в документ мгновенно, но если они вносятся мгновенно, то из-за задержки связи их правки обязательно должны быть вставлены в разные версии документа.
Пример иллюстрирует эту проблему. Предположим, Боб и Алиса начинают с документа, содержащего слово Мэри . Боб удаляет «М», затем вставляет «Н», чтобы изменить слово на «Гэри» . Алиса, прежде чем получить какое-либо редактирование от Боба, удаляет «r», затем удаляет «a», чтобы изменить его на My . И Боб, и Алиса получат изменения, примененные к версиям документа, которые никогда не существовали на их машинах.
Таким образом, задача совместного редактирования в реальном времени состоит в том, чтобы выяснить, как именно применять изменения удаленных пользователей, которые изначально были созданы в версиях документа, которые никогда не существовали локально, и которые могут конфликтовать с собственными локальными изменениями пользователя.
Самые сложные решения решают эту проблему таким образом, что не требуется сервер, не используется блокировка (все пользователи могут свободно редактировать все части документа одновременно) и поддерживается любое количество пользователей (ограниченное только ресурсами). компьютеров). UNA и SubEthaEdit — примеры двух программ, использующих этот подход.
Хотя эти сложные подходы обеспечивают наилучшее взаимодействие с пользователем , базовый редактор для совместной работы также может быть создан в модели клиент-сервер . В клиент-серверном сценарии одному из экземпляров редактора назначается роль сервера совместной работы при открытии документа. Этот сервер обеспечивает синхронизацию других редакторов, определяя задержку в сети и выступая в качестве сервера синхронизации времени . Сервер получает уведомления с отметкой времени об изменениях, внесенных в документ другими пользователями. Он определяет, как эти изменения должны повлиять на его локальную копию, и передает свои изменения в пул совместной работы. В некоторых моделях изменения не отражаются на клиенте до тех пор, пока не будет получен официальный ответ от сервера, даже если эти изменения были внесены локально.
Этот подход, хотя и значительно менее мощный, позволяет обеспечить базовое сотрудничество при относительно низких затратах. Это делает его предпочтительным в ситуациях, когда ресурсы обработки ограничены. NetSketch — пример программы, использующей эту модель.
В прошлом Microsoft и IBM работали над добавлением средств совместной работы к своим существующим архитектурам. [24] Хотя эти подходы «рабочего пространства» позиционируются как совместная работа в реальном времени, они требуют либо блокировки документа (чтобы редактировать его одновременно мог только один человек), либо «согласования» конфликтующих изменений, что обычно считается пользователями неудовлетворительным. [ нужна ссылка ]
См. также
[ редактировать ]- Совместный просмотр
- Бесконфликтный реплицируемый тип данных
- Распределенные вычисления
- Распределенный контроль версий
- Совместная документация
- Список программного обеспечения для совместной работы
- Текст в реальном времени
- Неделя
Ссылки
[ редактировать ]- ^ «Руководство пользователя» . Архивировано из оригинала 21 февраля 2009 г.
- ^ Майкл Аррингтон (27 сентября 2005 г.). «JotSpot Live — идеальная вики?» . ТехКранч .
- ^ Майкл Аррингтон (27 февраля 2008 г.). «Прошло 16 месяцев, но Google перезапустил Jotspot» . ТехКранч .
- ^ Дэвид Чартье (28 февраля 2008 г.). «Первый взгляд: Google перезапускает JotSpot как Google Sites» . Арс техника.
- ^ Дэн Фарбер (27 февраля 2008 г.). «JotSpot перевоплотился в Сайты Google» . Новости CNET . Архивировано из оригинала 15 мая 2008 г. Проверено 19 марта 2008 г.
- ^ Марк «Риззн» Хопкинс (27 февраля 2008 г.). «Google наконец-то освободил JotSpot с помощью Google Sites» . Машаемый .
- ^ Ина Фрид и Джош Лоуэнсон (4 августа 2010 г.). «Google отключил Google Wave» . CNET .
- ^ СуньЧэнчжэн; СанДэвид; НгАгустина; ЦайВэйвэй; ЧоБрайден (04 января 2020 г.). «Реальные различия между OT и CRDT в рамках общей структуры трансформации для обеспечения единообразия соредакторов» . Труды ACM по взаимодействию человека и компьютера . 4 : 1–26. arXiv : 1905.01518 . дои : 10.1145/3375186 .
- ^ «Часто задаваемые вопросы» . Liquidframework-docs.azureedge.net . Проверено 2 ноября 2020 г.
- ^ «Жидкий каркас» . Liquidframework-docs.azureedge.net . Проверено 2 ноября 2020 г.
- ^ Гатой, Уильям (2 июня 2016 г.). «Collabora Productivity выпускает «движок» Collabora Online 1.0 для хостеров и облаков» . Архивировано из оригинала 7 августа 2016 г. Проверено 02 сентября 2021 г.
- ^ «Collabora Online SDK» . Архивировано из оригинала 01 марта 2021 г. Проверено 02 сентября 2021 г.
- ^ Гоань, Сяо (10 декабря 2020 г.). «Интеграция Collabora Online с Nextcloud в Ubuntu с помощью Docker» . LinuxBabe . Архивировано из оригинала 14 июня 2020 г. Проверено 02 сентября 2021 г.
- ^ «Live Share для VS Code» . Проверено 26 февраля 2022 г.
- ^ «Телетайп для Атома» . Проверено 26 февраля 2022 г.
- ^ «БЕСПЛАТНОЕ приложение без кода, аналитический искусственный интеллект, блокчейн, платформа для совместной работы Excel&Web 3.0» . PowerSheet.ai . Проверено 8 июня 2020 г.
- ^ «Жидкий каркас» . Liquidframework-docs.azureedge.net . Проверено 2 ноября 2020 г.
- ^ «Двигатель сотрудничества» . Ваадин . Проверено 2 ноября 2020 г.
- ^ «Mozilla Labs: технологический обзор TogetherJS» . Togetherjs.com . Лаборатория Мозиллы . Проверено 12 января 2023 г.
- ^ «Познакомьтесь с Collaboration Engine: самый простой способ создания совместных веб-приложений» . Ваадин . Проверено 2 ноября 2020 г.
- ^ «Двигатель сотрудничества» . Ваадин . Проверено 2 ноября 2020 г.
- ^ «Краткий обзор будущего функций Vaadin для совместной работы в реальном времени» . Ваадин . Проверено 2 ноября 2020 г.
- ^ «Представляем Vaadin Flow и Fusion» . Ваадин . Проверено 2 ноября 2020 г.
- ^ Microsoft Live Communications. Архивировано 5 марта 2008 г. в Португальском веб-архиве. Продается как в реальном времени, но не в реальном времени в смысле этой статьи.