stringtranslate.com

Совместный редактор в реальном времени

Совместный редактор в реальном времени — это тип программного обеспечения или веб-приложения для совместной работы , которое обеспечивает совместное редактирование в реальном времени , одновременное редактирование или редактирование в реальном времени одного и того же цифрового документа , компьютерного файла или данных, хранящихся в облаке , таких как онлайн-таблица , 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 были запущены в феврале 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]

Технические проблемы

Сложность решений для совместного редактирования в реальном времени связана с задержками связи. Теоретически, если бы связь была мгновенной, то создание совместного редактора в реальном времени было бы не сложнее, чем создание однопользовательского редактора, поскольку документ можно было бы редактировать, используя алгоритм, аналогичный следующему:

  1. Запросить токен «редактировать документ» с сервера
  2. Подождите, пока сервер не скажет, что наша очередь редактировать документ.
  3. Сообщите серверу, как редактировать документ
  4. Отпустите токен «редактировать документ».

Однако скорость связи ограничена задержкой сети. Это создает фундаментальную дилемму: пользователям нужно, чтобы их собственные правки включались в документ мгновенно, но если они вносятся мгновенно, то из-за задержки связи их правки обязательно должны быть вставлены в разные версии документа.

Пример иллюстрирует эту проблему. Предположим, Боб и Алиса начинают с документа, содержащего слово Мэри . Боб удаляет «М», затем вставляет «Н», чтобы изменить слово на «Гэри» . Алиса, прежде чем получить какое-либо редактирование от Боба, удаляет «r», затем удаляет «a», чтобы изменить его на My . И Боб, и Алиса получат изменения, примененные к версиям документа, которые никогда не существовали на их машинах.

Таким образом, задача совместного редактирования в реальном времени состоит в том, чтобы выяснить, как именно применять изменения удаленных пользователей, которые изначально были созданы в версиях документа, которые никогда не существовали локально, и которые могут конфликтовать с собственными локальными изменениями пользователя.

Самые сложные решения решают эту проблему таким образом, что не требуется сервер, не используется блокировка (все пользователи могут свободно редактировать все части документа одновременно) и поддерживается любое количество пользователей (ограниченное только ресурсами). компьютеров). UNA и SubEthaEdit — примеры двух программ, использующих этот подход.

Хотя эти сложные подходы обеспечивают наилучшее взаимодействие с пользователем , базовый редактор для совместной работы также может быть создан в модели клиент-сервер . В клиент-серверном сценарии одному из экземпляров редактора назначается роль сервера совместной работы при открытии документа. Этот сервер обеспечивает синхронизацию других редакторов, определяя задержку в сети и выступая в качестве сервера синхронизации времени . Сервер получает уведомления с отметкой времени об изменениях, внесенных в документ другими пользователями. Он определяет, как эти изменения должны повлиять на его локальную копию, и передает свои изменения в пул совместной работы. В некоторых моделях изменения не отражаются на клиенте до тех пор, пока не будет получен официальный ответ от сервера, даже если эти изменения были внесены локально.

Этот подход, хотя и значительно менее мощный, позволяет обеспечить базовое сотрудничество при относительно низких затратах. Это делает его предпочтительным в ситуациях, когда ресурсы обработки ограничены. NetSketch — пример программы, использующей эту модель.

В прошлом Microsoft и IBM работали над добавлением средств совместной работы к своим существующим архитектурам. [24] Хотя эти подходы «рабочего пространства» позиционируются как совместная работа в реальном времени, они требуют либо блокировки документа (чтобы редактировать его одновременно мог только один человек), либо «согласования» конфликтующих изменений, что обычно считается пользователями неудовлетворительным. . [ нужна цитата ]

Смотрите также

Рекомендации

  1. ^ «Руководство пользователя». Архивировано из оригинала 21 февраля 2009 г.
  2. ^ Майкл Аррингтон (27 сентября 2005 г.). «JotSpot Live — идеальная вики?». ТехКранч .
  3. ^ Майкл Аррингтон (27 февраля 2008 г.). «Прошло 16 месяцев, но Google перезапустил Jotspot». ТехКранч .
  4. ^ Дэвид Чартье (28 февраля 2008 г.). «Первый взгляд: Google перезапускает JotSpot как Google Sites». Арс техника.
  5. ^ Дэн Фарбер (27 февраля 2008 г.). «JotSpot перевоплотился в Сайты Google». Новости CNET . Архивировано из оригинала 15 мая 2008 г. Проверено 19 марта 2008 г.
  6. ^ Марк «Риззн» Хопкинс (27 февраля 2008 г.). «Google наконец-то освободил JotSpot с помощью Google Sites» . Машаемый .
  7. ^ Ина Фрид и Джош Лоуэнсон (4 августа 2010 г.). «Google отключает Google Wave» . CNET .
  8. ^ СуньЧэнчжэн; СанДэвид; НгАгустина; ЦайВэйвэй; ЧоБрайден (04 января 2020 г.). «Реальные различия между OT и CRDT в рамках общей структуры трансформации для обеспечения единообразия соредакторов». Труды ACM по взаимодействию человека и компьютера . 4 : 1–26. arXiv : 1905.01518 . дои : 10.1145/3375186 .
  9. ^ «Часто задаваемые вопросы» . Liquidframework-docs.azureedge.net . Проверено 2 ноября 2020 г.
  10. ^ «Жидкая структура» . Liquidframework-docs.azureedge.net . Проверено 2 ноября 2020 г.
  11. ^ Гатой, Уильям (2 июня 2016 г.). «Collabora Productivity выпускает «движок» Collabora Online 1.0 для хостеров и облаков» . Архивировано из оригинала 7 августа 2016 г. Проверено 02 сентября 2021 г.
  12. ^ "Collabora Online SDK" . Архивировано из оригинала 01 марта 2021 г. Проверено 02 сентября 2021 г.
  13. ^ Гоань, Сяо (10 декабря 2020 г.). «Интеграция Collabora Online с Nextcloud в Ubuntu с помощью Docker». LinuxBabe . Архивировано из оригинала 14 июня 2020 г. Проверено 02 сентября 2021 г.
  14. ^ «Live Share для VS Code» . Проверено 26 февраля 2022 г.
  15. ^ «Телетайп для Атома» . Проверено 26 февраля 2022 г.
  16. ^ «БЕСПЛАТНОЕ приложение без кода, аналитика AI, блокчейн, платформа для совместной работы Excel & Web 3.0» . PowerSheet.ai . Проверено 8 июня 2020 г.
  17. ^ «Жидкая структура» . Liquidframework-docs.azureedge.net . Проверено 2 ноября 2020 г.
  18. ^ «Механизм сотрудничества». Ваадин . Проверено 2 ноября 2020 г.
  19. ^ «Mozilla Labs: технологический обзор TogetherJS» . Togetherjs.com . Лаборатория Мозиллы . Проверено 12 января 2023 г.
  20. ^ «Познакомьтесь с Collaboration Engine: самый простой способ создания веб-приложений для совместной работы» . Ваадин . Проверено 2 ноября 2020 г.
  21. ^ «Механизм сотрудничества». Ваадин . Проверено 2 ноября 2020 г.
  22. ^ «Краткий обзор будущего функций Vaadin для совместной работы в реальном времени» . Ваадин . Проверено 2 ноября 2020 г.
  23. ^ «Представляем Vaadin Flow и Fusion». Ваадин . Проверено 2 ноября 2020 г.
  24. ^ Microsoft Live Communications. Архивировано 5 марта 2008 г. в Португальском веб-архиве. Продается как в реальном времени, но не в реальном времени в смысле этой статьи.