Организация The Document Foundation анонсировала новый продукт LibreOffice Online, выступающий в роли свободной альтернативы таким сервисам, как Google Docs и Office 365, и позволяющий наладить удалённую работу с офисным пакетом через Web. LibreOffice Online имеет клиент-серверную архитектуру, при которой на сервере выполняется базовый каркас LibreOffice, а интерфейс транслируется клиенту и отображается в web-браузере при помощи специального web-приложения. Первый релиз LibreOffice Online запланирован на начало 2016 года, но энтузиасты могут оценить текущее состояние разработки, воспользовавшись Git-репозиторием. Ресурсы для разработки выделены компаниями IceWarp и Collabora, но сам проект будет развиваться под эгидой организации The Document Foundation.

Для трансляции интерфейса клиенту применяется штатный HTML5-бэкенд библиотеки GTK+, предназначенный для отрисовки вывода GTK-приложений в окне web-браузера. Формирование интерфейса с использованием штатного движка LibreOffice позволяет добиться полностью идентичного отображения структуры документа с версией для настольных систем. Пользовательский ввод перехватывается через DOM-события и затем транслируется на сервер через WebSocket API, позволяющий организовать двунаправленный обмен данными с сервером.

Интерфейс LibreOffice в браузере формируется через компоновку передаваемых с сервера готовых битмапов в формате PNG. Как правило в процессе редактирования непосредственно изменения составляют лишь незначительную часть от общего отображения, а подавляющее большинство действий связаны с просмотром уже существующих частей документа, которые можно держать в кэше и загружать с упреждением. Содержимое отдаётся клиенту в виде копий слоев и блоков (документ разбивается на множество кусочков из отдельных изображений), при этом по сети передаются только изменившиеся части интерфейса, а все неизменившиеся кусочки документа кэшируются на стороне клиента. Управление курсором и выделение областей текста также реализованы силами JavaScript на стороне клиента. Таким образом, просмотр и навигация по уже переданному клиенту образу документа производится без лишней нагрузки на сервер.

Серверная часть включает в себя два компонента: LibreOfficeKit, используемый в LibreOffice для выполнения вычислений, мозаичной отрисовки и многослойной компоновки документа, и новый серверный компонент Tile Server для организации взаимодействия с браузером, передачи изображений с частями интерфейса, организации кэширования кусочков изображений и работы с хранилищем документов. В зависимости от число подключенных клиентов Tile Server запускает для каждого клиента отдельные экземпляры LibreOfficeKit, которые выполняются в изолированном окружении. Для всех экземпляров LibreOfficeKit используется общий кэш.

Для LibreOffice Online также развиваются средства совместного редактирования, позволяющие нескольким людям одновременно работать с одним документом. Совместное редактирование будет реализовано с применением двух упрощений: Во-первых, решено использовать для отрисовки один экземпляр LibreOfficeKit для всех участников работы с документом, т.е. всем участникам будет передаваться один набор кусочков документа, что обеспечит синхронное отображение изменений. Во-вторых, будет выделен общий набор операций с абстрактным документом, таких как выделение блоков, перемещение по тексту, редактирование, удаление и перемещение объектов, которые будут обрабатываться индивидуально для каждого участника группы совместного редактирования.

Источник: http://www.opennet.ru/opennews/art.shtml?num=41911