Да, мы те ребята, которые долгое время занимались исключительно онлайн-редакторами, а потом сделали и оффлайн-приложения. Во-первых, несмотря на растущую популярность онлайн-редакторов, большинство пользователей продолжают отдавать предпочтение десктопам. Во-вторых, нам самим давно хотелось уйти от ограничений браузера и ускорить работу с редакторами.
Главная черта наших десктопных редакторов в их родстве с онлайн-редакторами — их объединяет общий исходный код. В этой статье мы немного расскажем, почему мы приняли решение делать десктопы именно таким образом и раскроем секреты их анатомии, а именно — чем они отличаются от онлайн-версии, как устроены и что мы планируем поменять в будущем.
В чем преимущества оффлайн-редакторов перед онлайн
В этой всё еще немного вступительной части текста мы напомним, что на самом деле любим онлайн-редакторы, но не всегда. Некоторые моменты очень огорчают. Посмотрите на смущенное лицо пользователя, который только что попытался скопировать что-то из своего документа, но столкнулся с настоятельной рекомендацией воспользоваться клавиатурой? А этот бедняга, который просто хотел распечатать, а теперь качает pdf? Или вот несчастный с отрубившимся интернетом? В общем, все уже догадались, куда мы клоним. Настольные редакторы обладают несомненными преимуществами, и вот какими:
- Возможность локальной работы, даже в случае отсутствия Интернета (надеемся, такое с вами не произойдет никогда);
- Использование ресурсов компьютера. Многие вещи мы можем реализовать лучше, многие функции работают быстрее.
- Локальные шрифты. Шрифты будут браться с компьютера пользователя, то есть, если пользователь добавит себе на компьютер новый шрифт, то при следующем запуске редактор его тоже подхватит. В случае онлайн-редакторов шрифты сначала нужно установить на сервер.
- Возможность напрямую отправить документ на печать. В онлайне под печатью документа понимается его сохранение в pdf. После этого пользователь самостоятельно должен принять меры, чтобы отправить документ на принтер.
- Полноценное использование буфера обмена.
- Локальная проверка орфографии. Это просто быстрее, чем онлайн-версия, в которой слово для проверки отправляется на сервер проверки орфографии.
- Локализация языка. В десктопной версии язык для проверки выставляется автоматически, в то время как в онлайне приходится самому выбирать язык для проверки орфографии отдельных слов и абзацев.
- Возможность перехода Online-Offline-Online при отключении и последующем подключении интернета.
Итак, мы были уверены, что хотим сделать десктопы. Но нам нужно было ответить на вопрос: как?
Методология
Вариант, от которого мы отказались: нативные приложения. Хотя мы тоже считаем, что круче нативного приложения ничего быть не может, обстоятельства непреодолимой силы вынудили нас отказаться от этой идеи по причине трудоемкости и ресурсозатратности её реализации.
Если бы мы выбрали этот вариант, нам нужно было бы переписать код редакторов и всю визуализацию. Кроме того, в будущем возникал бы вопрос синхронизации обновлений с веб-версией редакторов. Мы бы получили два кода, которые делают одно и то же и делали бы двойную работу, поправляя что-то в каждом из них.
Вариант, который мы выбрали: использовать существующий js код редакторов ONLYOFFICE. Плюсы такого подхода очевидны - разработка не так сложна, а обновление и веб-версии, и десктопа удобны, так как код один и тот же.
Чего мы хотели:
1. Один код общения js/с++.
2. Кроссплатформенный GUI.
3. Иметь в будущем возможность перейти на схему нативной отрисовки. Сам код редактора остается javascript-овый, но при этом мы должны иметь возможность переделать отрисовку (что является основным тормозом приложения).
Что мы выбрали:
1. Чтобы выполнялось первое требование, нам нужен был браузерный движок под все платформы. Так как мы хорошо знакомы с V8, который, к слову, используется у нас на сервере для сборки версий файлов, то изначально собирались брать Chromium в том или ином виде.
2. Тут тоже долго не думали. Qt очень распространен и удобен. Плюс опять же был опыт работы с этой библиотекой.
3. Пока это только планы. Но смысл в том, чтобы js — редактор крутился отдельно, реализуя весь функционал, а отображение, измерение текста было бы нативное. Кстати, так у нас уже работает мобильное приложение под iOS.
Немного об отрисовке
Так как пока нативная отрисовка только в планах, нам нужен был условный кроссплатформенный WebView. У нас было несколько идей.
Варианты:
1. Решения «из коробки», которыми мы могли бы воспользоваться, раз уж всё равно выбрали Qt, т.е. либо QWebView, либо QWebEngineView.
Конечно, если бы остановились на одном из них, главными плюсами было бы то, что вся основная работа уже сделана за нас. Казалось бы неплохо, но минусы всё же перевесили.
QWebView уже не развивается разработчиками, он очень-очень медленный и работает в том же процессе, что и приложение. Для нас это было критичным, ведь дизайнеры хотели «вкладочный» интерфейс, который подразумевает открытие и работу сразу в нескольких документах. Таким образом, случись проблема в одном документе, это привело бы к проблемам во всех вкладках.
QWebEngineView — достаточно новый контрол, активно развивается и основан как раз на Chromium'e. Он работает в своем процессе и гораздо быстрее, чем QWebView. Но и он не подошел. Во-первых, из-за невозможности нормальной работы с нативным кодом в процессе, в котором работает js код. Такое общение организовывается через вебсокеты, что неудобно. Во-вторых, на 4K мониторах почему-то начинала тормозить отрисовка.
2. Чистый Chromium. Плюсы — быстрота и полная функциональность. Недавно вышедшая Visual Studio Code от Microsoft, реализованная именно так, заставила серьезно обратить внимание на этот способ.
3. Chromium Embedded Framework. Это удобная обертка Chromium, c регулярно выкладываемими собранными версиями (cefbuilds.com). Плюс — гораздо проще, чем второй пункт. Минус — теряем часть функционала (обернуто и выдано в виде API много, но не все).
Стандартные подходы мы отвергли сразу, а вот варианты 2 и 3 нам подошли. Из них мы выбрали более простое решение, то есть Chromium Embedded Framework. В итоге на основе cef реализовали CefWebView, полностью удовлетворяющий нашим запросам.
Схема работы приложения
Получившееся приложение работает следующим образом:
То есть: при создании контекста V8 встраиваем свой объект, тем самым получая доступ к нативному коду из js. Далее, если нужно передать данные в другой процесс (например, в ui), пользуемся встроенным в cef механизмом межпроцессного взаимодействия путем пересылки сообщений. Аналогично посылаем сообщения из других процессов в js процесс.
XCode для MacOS
И все же не все в итоге реализовали так, как планировали. Например, приложение под MacOS делали не на Qt, а используя XCode.
Дело в том, что мы используем QTabWidget для табов с редакторами, а под MacOS он довольно сильно тормозит. Речь по сути идет о простом перетаскивании табов, но, чтобы всё работало нормально, нужно было с нуля реализовать этот контрол. Мы этим заниматься не захотели. Все-таки у нас немного нативного интерфейса, да и гораздо удобнее было разрабатывать под MacOS, используя XCode.
Итоги
Мы получили то, что задумывали. Приложение работает под всеми системами и делает это достойно. Оно удобно и подойдет тем, кто хочет работать оффлайн, и в то же время предполагает возможность подключения порталов, что позволит пользоваться инструментами совместного редактирования и работать над документами совместно с другими членами команды.
Для нас это новое интересное поле деятельности и больше возможностей заниматься любимым делом (постоянно что-то улучшать). Дальнейшие планы? Их много. В первую очередь нужно поправить баги самого редактора (JS код), дополнить необходимый функционал (сноски, оглавление, сводные таблицы, анимация, 3D эффекты). А дальше — переходить на нативную отрисовку.
P.S. Скачать приложение можно с нашего официального сайта. А еще (чуть не забыли!) — десктопные редакторы ONLYOFFICE бесплатны для персонального использования. Пользователи облачного решения ONLYOFFICE, оплатившие подписку на 1 или 3 года, могут получить десктопные приложения бесплатно. Для пользователей серверной версии ONLYOFFICE Enterprise Edition — 25 лицензий на десктопные приложения уже включены в стоимость подписки.
Комментарии (44)
sonor
29.03.2016 14:13При работе с odt искаверкал документ, при открытии непонятно по какому критерию покрасил текст в красный в некоторых столбцах, при сохранении сжал строки почти до 0 высоты.
rshtemberko
29.03.2016 14:47Во избежание коментов в стиле «QT это QuickTime», замените QT->Qt :)
Спасибо за статью!
AllexIn
29.03.2016 14:50У вас в Open Source версии по прежнему нет доступа к онлайн редакторам?
Пол года назад искал вариант отказаться от ГуглДОкс в пользу решения поднятого на своем сервере… Очень понравился ваш продукт. Но оказалось что Open Source вариант не умеет онлайн-редактирования… Это не изменилось?xkorolx
29.03.2016 15:01Вы про совместное редактирование? Да, она в опенсорсе теперь есть. Но, давно не обновляли опенсорс версию. Так что там не последняя версия. Планируем обновить.
WayMax
30.03.2016 10:38Скорее автор комментария имел в виду «вообще редактирование», у вас на странице www.onlyoffice.com/ru/enterprise-edition.aspx написано: «Только просмотрщики документов». Мне вот тоже интересно, будет ли возможность редактирования документов в бесплатной версии?
xkorolx
30.03.2016 11:01Enterprise Edition и Open Source — это разные версии ONLYOFFICE. В вашей ссылке речь идет о бесплатной версии Enterprise Edition без редакторов. Пока мы не планируем их туда добавлять.
В Open Source версии есть редактирование документов. Просто версия редакторов чуть постарее. Посмотрите тут.WayMax
30.03.2016 11:42Вот честно, не могу разобраться, из информации на сайте ясно только что есть 3 версии (по той ссылке я то я привел выше, причем третья еще не доступна). По вашей ссылке вообще просто набор "фич" и про разные версии ни слова. Может вам бы как-то структурировать эту информацию на сайте? Хотя дело ваше конечно.
Опять же непонятно что за версии на странице https://sourceforge.net/projects/teamlab/files/?source=navbar. "CommunityServer" это тот бесплатный с www.onlyoffice.com/ru/enterprise-edition.aspx — без возможности редактирования (но с дополнительными "свистелками"), а "DocumentServer" с возможностью редактирования (но только сами аналоги "Word", "Excel", "PowerPoint", без дополнительных "свистелок")?
WayMax
30.03.2016 11:50И что вы подразумеваете под "Open Source"? На sourceforge.net у вас и "CommunityServer" и "DocumentServer" с исходниками.
hellonadya
30.03.2016 14:07Спасибо за вопрос.
Да, у нас два сайта — для коммерческой версии и Open Source.
Первая ссылка (http://www.onlyoffice.com/ru/enterprise-edition.aspx) введет на сайт с нашими коммерческими продуктами. Фактически это коммерческие сборки с дополнительными функциями для упрощения процесса управления веб-офисом. У ONLYOFFICE Enterprise Edition (коммерческой серверной версии) есть бесплатный вариант. Он называется Community. Там нет редакторов, только просмотрщики.
Вот эта ссылка — onlyoffice.org — ведет на страничку наших продуктов с открытым исходным кодом. Наше решение довольно сложное, поэтому оно разделно на несколько частей — Document Server (только редакторы документов), Community Server (управление проектами, CRM и пр), Mail Server. Собрав все три части, вы получите полноценную серверную версию.
Eсли нужны только редакторы, чтобы прикрутить к своей системе документооборота, берите Document Server, если нужна и сама система с документооборотом и со всем функционалом, берите всё и собирайте (для сравнения — в коммерческой версии всё собрано и готово к использованию).
Еще раз на всякий случай подчеркну, что в Document Server'e версия редакторов постарее, чем в платной версии Enterprise Edition (не в Community! в платных вариантах Standart и Portal+).
Возможно, путаницу внесло название Community в двух случаях. Но они действительно похожи отсюда и похожее название — Community и Community Server.WayMax
30.03.2016 16:01Спасибо за ответ (серьезно, без иронии).
Вот видите сколько времени вам понадобилось чтобы объяснить человеку со стороны какие версии у вашего ПО вообще есть. Дам бесплатный, а от того бесполезный, совет — структурируйте вы все таки эту информацию на своих сайтах, как есть сейчас — без ваших пояснений было непонятно, плюс совсем не интуитивное разделение на сайты onlyoffice.com и onlyoffice.org. То что это 2 разных сайта я вообще только сейчас заметил, т.к. на разницу в доменах первого уровня внимания не обратил совершенно.
UPD: причем инструкция по установке вашего продукта с открытым исходным кодом, которая начинается на onlyoffice.org — заканчивается страницами на сайте onlyoffice.com (хотя вы утверждаете что на onlyoffice.com находятся Enterprise решения которые устанавливаются совершено иначе). Зачем тогда на сайте Enterprise решения инструкция по установке Open Source?hellonadya
30.03.2016 17:58Конечно же, нет предела совершенству, когда структурируешь информацию. Поэтому за совет спасибо: )
Что касается деления сайтов на .com и .org, то это не редкость. В качестве примера — ownCloud
xkorolx
30.03.2016 18:04инструкция по установке вашего продукта с открытым исходным кодом, которая начинается на onlyoffice.org — заканчивается страницами на сайте onlyoffice.com (хотя вы утверждаете что на onlyoffice.com находятся Enterprise решения которые устанавливаются совершено иначе). Зачем тогда на сайте Enterprise решения инструкция по установке Open Source?
Ответ — общий Help Center, так как нет смысла дублировать одну и ту же информацию. Там не только инструкции по установке, но и работа с самой системой, которая мало чем отличается.
denisnone
30.03.2016 14:35Хотелось бы установить онлайн опенсорс версию, но без live-редактирования смысла нет никакого.
Уточните пожалуйста, когда произойдет обновление до последней версии?hellonadya
30.03.2016 18:10Пока в планах нет. В open source версии есть наше совместное редактирование — не как в Google Docs, а с зажатием абзаца.
Лично мне оно нравится больше, чем "быстрое", когда видишь, всё, что печатает коллега. Позволяет редактировать фрагменты одного документа и избегать конфликта интересов: )
И просто из любопыства — а почему вам нужно именно быстрое?denisnone
30.03.2016 20:21Большинство коллег не умеет пользоваться кнопкой «сохранить». Они будут фигачить весь день, надолго блокируя содержимое. А потом наивно спрашивать «Как? Ты еще не видел мои изменения?». «Так ты сохрани черт тебя побери!».
И вот придется названивать друг другу, «ну что, готово?». «Да, но я вышел пообедать, забыл сохранить, давай через полтора часа». «Чтоб ты подавился!».
Вот вам примерная зарисовка того, как это будет работать с т.н. строгим редактированием. Этот режим в каком-то смысле действительно более правильный, вы правы, но в идеальной среде. Хорошо, когда все вокруг технически грамотные, ответственные и аккуратные. Но…
Что касается live-editing, то Atlassian обещает прям уже вот-вот зарелизить Confluence 6.0 с такой возможностью. Мы как раз пользуемся их продуктом, но в то же время смотрим, что происходит вокруг в мире и открыты для всего нового, поскольку есть и определенные минусы, не относящиеся к теме разговора.
Так вот у них режим будет намного хитрее, чем в Google Docs. Страница будет существовать в двух ипостасях – для просмотра и для редактирования. И всё безумие с бегающими курсорами и буквами будет происходить только в режиме редактирования у тех, кто редактирует. А проходящие мимо читатели будут видеть старую чистую версию до тех пор, пока последний редактирующий не нажмет «сохранить». Такой подход выглядит самым логичным на данный момент, посмотрим, что у них получится на самом деле.
Искал, где бы в явном виде были перечислены отличия Community версии от Enterprise, но так и не нашел. (только on-premises, SAAS не интересует как класс).
Вот оно, оказывается, и нашлось отличие. Было бы здорово, если бы вы все же написали это где-то. Все ведь понимают, что фирме надо на что-то существовать и платная версия обязана для этого иметь определенную фору в развитии. Так все делают и в этом нет ничего плохого. Просто скажите вслух, чтобы развеять недопонимание.hellonadya
31.03.2016 12:35Проблема понятна: ) У нас на этот случай есть такая штука как Autosave. Главное — включить её в настройках и раз в 10 минут документы будет сохраняться со всеми изменениями, даже если автор, "зажавший" абзац ушел курить или улетел добровольцем на Марс.
(это я продолжаю эмоционировать как фанат "строгого" редактирования).
Про Atlassian — интересно. Надо будет посмотреть.
MAXHO
29.03.2016 15:15Ряд вопросов:
- Лицензирование использования в образовании новой версии (10 машин)
- Если будем делать обучающие материалы — вам высылать и куда?
- Когда будет Линукс версия?
Все очень нравится. Планирую стать фанатом.xkorolx
29.03.2016 15:291) Напишите сюда — sales@onlyoffice.com, поскольку у нас есть специальные условия лицензирования для школ и вузов.
2) Конечно будем признательны за материалы, если пригодится помощь с нашей стороны — опять же будем рады, дайте о себе знать напрямую.
3) Версия под линукс будет вот прямо очень скоро. Она готова, дотестируем на всех версиях — и выложим..
xkorolx
29.03.2016 19:22положили линукс версию (Debian-based)
https://www.onlyoffice.com/download-desktop.aspx
wyfinger
29.03.2016 15:16Недостаточно развита работа с полями, нумерация как здесь habrahabr.ru/post/187398 неверно отображается, как вставить свое поле вообще не нашел.
Поддержка docx лучше чем у LibreOffice.
Панели навигации сбоку нет?xkorolx
29.03.2016 15:24С нумерацией посмотрим, должно все работать хорошо. По полям — их добавить нельзя.
Приоритет по функционалу в редакторе документов:
1) сноски (скоро будут)
2) содержание — появится и панель навигации сразу (в каком виде — идет обсуждение)
3) поля.
kvaps
30.03.2016 10:05забыли еще слово на букву З — или оно тоже в группе O?
Evengard
30.03.2016 13:59+1Вы вообще о чём?
kvaps
30.03.2016 15:06Приношу свои извинения, я промахнулся тредом и понадеялся остаться незамеченным…
Этот коментарий к другой статье :)ShockwaveNN
30.03.2016 15:13Теперь даже настигло ощущение какого-то разочарования от неразгаданной тайны.
QMaster
30.03.2016 14:46Очень огорчают вот такие надписи:
Платформы: Дистрибутив Linux на базе Debian (64-разрядные)
У меня на компе проц тоже 64-разрядный, но не х86-совместимый
LuchS-lynx
30.03.2016 20:48В начале февраля прочитав Вашу статью на хабре я решил попробовать доступный, на тот момент, бесплатным, до 3х пользователей, трехгодовой ключ для Enterprise Edition, который был отправлен мне на почту 03.02.16. Однако в какой-то момент система перестала открывать редакторы документов, в свежеустановленной версии, что мною было принято решение переустановить виртуалку, Однако более новый образ отказался принять ключ, а саппорт ответил, что "ONLYOFFICE, начиная с 8.7, работают только с новой лицензией". Вопрос, могу ли я где скачать более старую версию, для того что бы продолжать пользоваться валидным ключом?
Спасибоhellonadya
31.03.2016 09:06Вам всё правильно ответили. К сожалению, сейчас доступна только версия Enterprise 8.7. Для удобства сейчас предоставляется бесплатный пробный период на 30 дней.
Если рассматриваете только бесплатные варианты, то советуем Open Source (http://helpcenter.onlyoffice.com/server/docker/community/docker-installation.aspx#IntegratedInstallation).
Ну и напоминаю, что десктопы бесплатны для персонального использования; )
sasha_sasha
31.03.2016 11:06не успела нарадоваться этой новости, как приложение отказалось работать. установилось, запросило цель использования, активировалось (со второго раза), показало стартовую страницу и умерло, и так два раза. что я делаю не так?
xkorolx
31.03.2016 11:09Какая система? Если можно — то видео с повторением в личку. Будем очень признательны. Заранее спасибо.
VitaliiSerov
В качестве достоинств настольной версии вы указали:
Возможность перехода Online-Offline-Online при отключении и последующем подключении интернета.
Вроде бы то-же самое умеет делать и Google Docs без всяких десктопных версий.
xkorolx
Да, но работает только в хроме, даже при отключении расширений для офлайн работы.