Здравствуйте!
Команда ONLYOFFICE возвращается на Хабр, как мы и обещали. Постараемся писать чаще и больше, и вообще держать вас в курсе событий. В последнее время нам есть что рассказать и показать.
Тему первой статьи подсказала нам сама жизнь. Не так давно наравне с вопросом: «А чем вы лучше Google Docs?» нам начали задавать вопрос «Ну и чем вы лучше Collabora?». Это связано с нашей интеграцией с сервисами ownCloud и Nextcloud, официальным партнером которых как раз таки является Collabora.
Если говорить о преимуществах, то у Collabora есть перед нами очень большое — идеологическое. Оно заключается в том, что этот продукт является продолжателем дела OpenOffice и LibreOffice. Непросто бороться с ними за пользователей, но у нас есть весомые аргументы в свою пользу. Сейчас расскажем.
Где редактор? Краткий экскурс в анатомию Collabora и ONLYOFFICE
Collabora — это представление редактора, открытого на сервере, в вашем браузере. И этот редактор — LibreOffice. Во многом поведение Collabora напоминает «тонкий клиент», потому что у вас на компьютере почти ничего не происходит. Всё волшебство происходит исключительно на сервере. Правда, есть одно отличие — Collabora не выглядит в точности как LibreOffice, у неё есть собственный интерфейс (мы вернемся к нему позже).
В ONLYOFFICE мы стараемся задействовать именно ресурсы клиента. То есть, редактор действительно работает у вас в браузере, просто периодически он обменивается данными с сервером. Если в Collabora на сервере происходит чуть более, чем всё, то у нас на сервере происходит всего несколько процессов, в числе которых сохранение, конвертация и проверка орфографии. Это позволяет экономить ресурсы сервера и работать быстрее.
Об отрисовке и наборе текста
Заметить, как устроена отрисовка в Collabora несложно. Страница разбита на блоки, это позволяет ей загружаться быстрее (вы же помните, что эти картинки вам приходят с сервера?). Но интернет — штука хитрая, поэтому некоторые из них могут подгружаться медленнее или не прогружаться совсем. Нам при тестировании этого продукта доводилось смотреть на серые пятна.
В целом устройство Collabora предполагает некоторое природное замедление: редактор находится на сервере, он оторван от пользователя. Тот курсор, который мы видим на экране, на самом деле, не тот курсор, который стоит в редакторе. Между ними есть задержка — отправка координат. Вы видите просто картинку из редактора.
ONLYOFFICE — это полноценный редактор в браузере. Мы полностью обрабатываем все события пользователя на клиенте и отправляем информацию о них на сервер. Получается гораздо оперативнее.
Функциональность: о потенциальном и реальном
Наследие LibreOffice — это значительное преимущество Collabora. Её разработчикам не надо писать все функции заново, у них автоматически есть всё, что есть в Libre. Другими словами, оглавление* у них было раньше, чем сам продукт (с 2003-го примерно).
*и тут вы 100% вспомните нам, что у нас вот, например, нет оглавления до сих пор. Мы советуем вам быстро это сделать прямо сейчас, пока не поздно. Потому что жить этой претензии осталось недолго.
На самом деле, радоваться всё равно рано: мы уже упоминали, что у Collabora свой собственный веб-интерфейс, и в него пока протащили далеко не всё. Вы не можете добавить не то что оглавление, но даже банальную автофигуру или диаграмму. В общем, несмотря на то, что открытие документов у Collabora сейчас на уровне десктопной Libre, возможности редактирования у неё пока исключительно базовые. Потому что, видимо, нет функциональности — нет проблем*
*но мы пошли другим путем
Знаете, бывают такие мероприятия, где мы представляем редакторы ONLYOFFICE и нас спрашивают что-то вроде: а можно ли у вас поменять шрифт или выделить текст жирным? Мы расстраиваемся и просим дать нам задачку потруднее, потому что давно прошли этот этап — добавили все возможные объекты, красивые диаграммы, работу с автофигурами и формулами. Сейчас доделываем оглавление, сводные таблицы (они сейчас открываются только на просмотр) и цифровую подпись.
Проблемы с совместимостью в наследство
Здесь всё понятно: Collabora получила в качестве наследства все проблемы и баги Libre. И главная проблема тут — плохая совместимость (очень) с форматами Microsoft. Как мы помним, то, что майкрософтовские форматы OOXML (docx, xlsx, pptx) — родственники форматов OpenDocument, не прибавляет им совместимости.
Хотя, конечно, если вы и все, с кем вам доводится работать, остаетесь верны ODF, то для вас это не будет проблемой. Это будет проблемой для тех, кто откровенно предпочитает Microsoft, или же работает с широким кругом документов из разных источников. Им (особенно первым) Collabora не подойдет.
Напомним, что большинство документов на этой планете привязано к docx, xlsx и pptx. Как бы мы ни восхищались открытыми офисными пакетами, Microsoft — по-прежнему мировой лидер и их редакторы по-прежнему стоят повсюду и сохраняют документы именно в такие форматы с 2007 года.
В ONLYOFFICE мы используем форматы docx, xlsx и pptx в качестве базовых, потому что мы хотим отлично открывать большую часть документов, а не меньшую. И да — мы точно откроем такие документы в миллион раз лучше, чем Collabora (и Libre). Это наша работа, мы специализируемся на этих форматах.
Работаем ли мы с ODF? Да, но конвертируем. И качество конвертации постоянно растет.
Архитектура: почему использовать Collabora — это дорого?
В основном потому, что она задействует ресурсы сервера. Это главный минус того, чтобы просто запустить на сервере редактор и всех к нему подключать. В конце концов, если бы это было выгодно, то эту схему давно использовали бы Вы-Знаете-Кто*.
(*Microsoft)
Поясним: вы открываете документ и он занимает 500 Мб памяти (и при этом еще может увеличивать расход в процессе форматирования). Потом ваш коллега открывает свой документ — ещё минус 500 Мб памяти. А если кто-то откроет документ в 700 страниц — ещё минус 1,5 Гб. Сколько памяти и серверов вам потребуется, чтобы покрыть потребности своей команды? Можно посчитать: если у вас два ядра и два гигабайта памяти на каждое из них, то вам хватит этого на 8-10 человек. А если у вас еще +8-10 человек, то вам уже нужен второй сервер.
Можно пытаться что-то оптимизировать, например, использовать одно общее ядро для запуска, но документ все равно записывается в память — в память сервера в случае Collabora.
Схема, которую выбрали разработчики Collabora, просто пожирает ваши ресурсы. Если у вас большая компания, то с таким офисом вам придется заниматься исключительно серваками: их потребуется много и необходимо будет постоянно балансировать между ними нагрузку, потому что клиенты не должны мешать друг другу (но они будут).
Возможности балансировки не бесконечны, хотя бы потому, что в такой схеме клиент привязывается к серверу. Главная привязка тут — совместное редактирование. Например, вы приглашаете коллегу присоединится к редактированию отчета, над которым вы сейчас работаете. Отлично, но в схеме Collabora ему нужно зайти в тот же редактор на том же сервере, на котором вы сейчас. И неважно, что на нём ещё 10 человек правят свои документы, понимаете куда мы клоним? Вы будете мешать друг другу и всё будет тормозить.
Конечно, в Collabora пытаются как-то нивелировать это всё и экономить память. Например, вы можете заметить, что открытый документ, который вы некоторое время не трогаете, становится неактивным. Пока он неактивен, там не проходит автосохранение, изменения не подгружаются. Экономия.
Архитектура ONLYOFFICE: почему это оптимальнее?
Потому что мы используем вычислительные ресурсы клиента, а не сервера. Конечно, мы расходуем серверные ресурсы тоже, но в существенно меньшей степени, чем Collabora.
Связь между клиентом и сервером поддерживается, но незначительная. Тестирование (и практика) показывает, что на сервере (возьмем, например, с процессором семейства Intel Core i5) с развернутым ONLYOFFICE мы комфортно может позволить себе 75 пользователей (точнее, 75 открытых вкладок с редакторами) на ядро.
Таким образом, на гипотетической машине с двумя ядрами в Collabora смогут работать только 8-10 пользователей, а в ONLYOFFICE — 150. показало — 75 человек на ядро. Таким образом, на сервере, где в Collabora сможет работать одновременно 8-10 человек, в ONLYOFFICE сможет комфортно работать до 150 человек.
Совместное редактирование: боль или радость
В Collabora появилось совместное редактирование. Оно основано на том, что редактирующие заходят в один редактор на одном сервере. С этим связано вот какое неудобство: есть вещи, которые включаются для всего документа. То есть, если вы вдвоем в документе в Collabora и кто-то включает Track Changes, то Track Changes включается для всех. И вы не сможете этого избежать. Возможно, поэтому в Collabora пока нет непечатаемых символов.
В ONLYOFFICE такого в принципе не произойдет: у вас в браузере действительно работает полноценный редактор, и это полностью ваше пространство, где вы можете включать и выключать Track Changes, не вторгаясь ни в чье личное пространство. И не только Track Changes.
Что вы хотите сделать, когда нажимаете undo?
Другой момент в совместной работе в Collabora — устройство undo/redo. Вот вы что хотите, когда нажимаете ctrl-z? Предполагаем, что, как и любой здравомыслящий человек, вы хотите отменить СВОЁ последнее действие. Посмотрим, как устроена undo в наших редакторах, чтобы понять, сможем ли мы достичь этой цели.
В Collabora undo/redo сквозное для всего документа. Рассмотрим ситуацию:
Пользователь 1 вводит букву «А»
Пользователь 2 вводит букву «Б»
Пользователь 1 хочет отменить букву «А». Он не сможет это сделать. Кнопка Undo будет активна только у второго пользователя, потому что последнее действие принадлежало ему. В общем, бедняга Пользователь 1 так и не сможет отменить своё последнее действие, пока Пользователь 2 не отменит своё последнее действие, то есть букву «Б». Это означает, что в Collabora нет разницы, совместное редактирование или нет, главное — откатывать изменения в той последовательности, в которой они поступали в документ.
Благодаря такой схеме undo/redo рождаются такие магические моменты, когда вы вроде бы ничего не делаете, но при этом в тулбаре происходят изменения: как, например, у Пользователя 1, когда Пользователь 2 отметил букву Б, сразу стала активной кнопка undo. Вроде бы пустячок, а получается как будто то, что происходит у вас в редакторе, зависит не от вас, а от каких-то внешних факторов.
Что касается ONLYOFFICE, то вы сможете отменить своё последнее действие в любом из режимов совместного редактирования (у нас их два, подробнее в этой статье). Как нам это удается? В основном, потому что мы почти всё делаем на клиенте. Там же хранится список действий — не только своих, но и чужих. Свои собственные действия помечаются, чтобы потом была возможность их откатить. Сервер при этом используется как база данных, с помощью которой мы синхронизируем правки на клиентах. Технические подробности реализации мы уже описывали вот тут. Самое главное отличие реализаций undo/redo — у нас оно работает «от пользователя», а у Collabora — «от документа».
Краткие выводы
- Collabora лучше, чем ONLYOFFICE открывает документы OpenDocument, но гораздо хуже открывает OOXML (docx, xlsx, pptx).
- Функциональность ONLYOFFICE на данный момент шире, чем функциональность Collabora. Но в Collabora потенциально есть все фичи, которые есть в Libre.
- На одном сервере с 2-мя ядрами смогут одновременно работать 8-10 пользователей, если на нём развернута Collabora, или 150 пользователей, если на нём установлен ONLYOFFICE.
- В Collabora обработка всех действий от пользователя происходит на сервере, в ONLYOFFICE — на клиенте.
- Collabora работает медленнее, это издержки архитектуры.
- Совместное редактирование в Collabora основано на том, что пользователи заходят в один документ в одном и том же редакторе, что порождает ряд неудобств.
- В ONLYOFFICE у каждого пользователя свой полноценный редактор в браузере. Сервер используется как БД для хранения пользовательских правок и последующей сборки файла.
Вы можете сделать свои выводы или рассмотреть аспекты, которые мы упустили. Но знаете что? По нашему мнению, пока что Collabora — продукт медленный (это решается хорошим интернетом), сырой (но можно доработать), с большим количеством багом (но их, конечно, пофиксят), но самое главное — их архитектура экономически невыгодна и к этому подорожник не приложишь, в то время как ONLYOFFICE можно использовать уже сейчас. Начать можно, например, с нашего решения для интеграции со сторонними облачными сервисами, такими как Nextcloud и ownCloud.
P.S. Кстати, мы недавно выпустили редакторы ONLYOFFICE c переработанным интерфейсом, в котором инструменты сгруппированы в тематические вкладки. Это позволило нам облегчить навигацию по инструментам редактора, а ещё сделать видимыми многие важные вещи — например, плагины (про них скоро расскажем отдельно). Как выглядит новый интерфейс и что стало где в этом видео.
Автор: xkorolx