stringtranslate.com

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

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

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

При асинхронном совместном редактировании (т. е. не в режиме реального времени, с задержкой или в автономном режиме) каждый пользователь обычно должен вручную отправлять (публиковать, отправлять или фиксировать), обновлять (обновлять, вытягивать, загружать или синхронизировать) и (если возникают конфликты редактирования) объединять свои правки. Из-за отложенной природы асинхронного совместного редактирования несколько пользователей могут в конечном итоге редактировать одну и ту же строку, слово, элемент, данные , строку или поле, что приводит к конфликтам редактирования , которые требуют ручного объединения или перезаписи редактирования, требуя от пользователя выбора, какие правки использовать, или (в зависимости от системы и настроек) автоматической перезаписи своих правок или правок других людей с предупреждением или без него.

История ключевых продуктов

Первый пример совместного редактора в реальном времени был продемонстрирован Дугласом Энгельбартом в 1968 году в The Mother of All Demos . Широко доступным реализациям концепции потребовались десятилетия, чтобы появиться.

В 1991 году компания ON Technology выпустила программное обеспечение под названием Instant Update для классической Mac OS . [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 Framework , который опирается на новую технологию Total Order Broadcast, в отличие от OT или CRDT. [9] Fluid в настоящее время не зависит от фреймворка. Microsoft заявляет, что он еще не готов к использованию в производстве. [10]

В июне 2016 года Collabora Productivity выпустила V1.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, выпустила V1.0 своего Collaboration Engine в октябре 2020 года [20] с целью позволить разработчикам быстро создавать функции совместной работы и редактирования в реальном времени в любом веб-приложении с бэкэндами Java, используя несколько строк кода (для определенных вариантов использования через их все еще ограниченные высокоуровневые API). [21] Эта функция в настоящее время поддерживает Java, хотя поставщик отмечает, что API на основе TypeScript также находится в разработке, в соответствии с недавним продолжающимся расширением платформы Vaadin, которое также позволит в будущем создавать пользовательский интерфейс на основе TypeScript с помощью ее будущей платформы Fusion. [22] [23]

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

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

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

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

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

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

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

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

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

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

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

Ссылки

  1. ^ "Руководство пользователя". Архивировано из оригинала 2009-02-21.
  2. Майкл Аррингтон (27.09.2005). «JotSpot Live — Идеальная Wiki?». TechCrunch .
  3. ^ Майкл Аррингтон (27.02.2008). «Прошло 16 месяцев, но Google перезапускает Jotspot». TechCrunch .
  4. ^ Дэвид Шартье (28.02.2008). «Первый взгляд: Google перезапускает JotSpot как Google Sites». Ars technica.
  5. ^ Дэн Фарбер (27.02.2008). "JotSpot возродился как Google Sites". CNET News . Архивировано из оригинала 15.05.2008 . Получено 19.03.2008 .
  6. ^ Марк «Риззн» Хопкинс (27.02.2008). «Google наконец-то освобождает JotSpot с помощью Google Sites». Mashable .
  7. ^ Ина Фрид и Джош Лоуэнсон (2010-08-04). «Google прекращает работу над Google Wave». CNET .
  8. ^ SunChengzheng; SunDavid; NgAgustina; CaiWeiwei; ChoBryden (2020-01-04). «Реальные различия между OT и CRDT в рамках общей структуры трансформации для поддержания согласованности в соредакторах». Труды ACM по взаимодействию человека и компьютера . 4 : 1–26. arXiv : 1905.01518 . doi : 10.1145/3375186 .
  9. ^ "Часто задаваемые вопросы". fluidframework-docs.azureedge.net . Получено 2020-11-02 .
  10. ^ "Fluid Framework". fluidframework-docs.azureedge.net . Получено 2020-11-02 .
  11. ^ Гатхойе, Уильям (2016-06-02). "Collabora Productivity выпускает Collabora Online 1.0 "Engine" для хостеров и облаков". Архивировано из оригинала 2016-08-07 . Получено 2021-09-02 .
  12. ^ "Collabora Online SDK". Архивировано из оригинала 2021-03-01 . Получено 2021-09-02 .
  13. ^ Гоань, Сяо (2020-12-10). "Интеграция Collabora Online с Nextcloud в Ubuntu с Docker". LinuxBabe . Архивировано из оригинала 2020-06-14 . Получено 2021-09-02 .
  14. ^ "Live Share for VS Code" . Получено 2022-02-26 .
  15. ^ "Телетайп для Атома" . Получено 2022-02-26 .
  16. ^ "БЕСПЛАТНОЕ приложение без кода, аналитика AI, блокчейн, Excel&платформа для совместной работы Web 3.0". PowerSheet.ai . Получено 2020-06-08 .
  17. ^ "Fluid Framework". fluidframework-docs.azureedge.net . Получено 2020-11-02 .
  18. ^ "Collaboration Engine". Vaadin . Получено 2020-11-02 .
  19. ^ "Mozilla Labs: Обзор технологий TogetherJS". togetherjs.com . Mozilla Labs . Получено 12.01.2023 .
  20. ^ "Meet Collaboration Engine: самый простой способ создания совместных веб-приложений". Vaadin . Получено 2020-11-02 .
  21. ^ "Collaboration Engine". Vaadin . Получено 2020-11-02 .
  22. ^ "Краткий обзор будущих функций совместной работы в реальном времени Vaadin". Vaadin . Получено 2020-11-02 .
  23. ^ "Введение в Vaadin Flow и Fusion". Vaadin . Получено 2020-11-02 .
  24. Microsoft Live Communications. Архивировано 05.03.2008 в Португальском веб-архиве. Позиционируется как сообщение в режиме реального времени, но не в том смысле, в каком оно понимается в данной статье.