Если бы кто-то спросил нас, какой сегодня день, мы бы ответили, что сегодня Большой День. День, когда мы наконец-то релизим десктопные редакторы ONLYOFFICE. Tе самые, что работают без браузера/интернета и отправляют документ прямо на принтер.

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

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



В чем преимущества оффлайн-редакторов перед онлайн



В этой всё еще немного вступительной части текста мы напомним, что на самом деле любим онлайн-редакторы, но не всегда. Некоторые моменты очень огорчают. Посмотрите на смущенное лицо пользователя, который только что попытался скопировать что-то из своего документа, но столкнулся с настоятельной рекомендацией воспользоваться клавиатурой? А этот бедняга, который просто хотел распечатать, а теперь качает 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)


  1. VitaliiSerov
    29.03.2016 13:47

    В качестве достоинств настольной версии вы указали:
    Возможность перехода Online-Offline-Online при отключении и последующем подключении интернета.
    Вроде бы то-же самое умеет делать и Google Docs без всяких десктопных версий.


    1. xkorolx
      29.03.2016 14:10
      +1

      Да, но работает только в хроме, даже при отключении расширений для офлайн работы.


  1. sonor
    29.03.2016 14:13

    При работе с odt искаверкал документ, при открытии непонятно по какому критерию покрасил текст в красный в некоторых столбцах, при сохранении сжал строки почти до 0 высоты.


    1. xkorolx
      29.03.2016 14:16

      Если можно, то будем признательны за файл.


      1. sonor
        29.03.2016 14:26

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


        1. xkorolx
          29.03.2016 14:28

          Заранее спасибо


  1. rshtemberko
    29.03.2016 14:47

    Во избежание коментов в стиле «QT это QuickTime», замените QT->Qt :)
    Спасибо за статью!


    1. xkorolx
      29.03.2016 14:47

      готово


  1. nikitastaf1996
    29.03.2016 14:47

    А будет windows 10 версия?


    1. xkorolx
      29.03.2016 14:56

      Metro style? Пока нет. А так — на десятке работает.


  1. AllexIn
    29.03.2016 14:50

    У вас в Open Source версии по прежнему нет доступа к онлайн редакторам?
    Пол года назад искал вариант отказаться от ГуглДОкс в пользу решения поднятого на своем сервере… Очень понравился ваш продукт. Но оказалось что Open Source вариант не умеет онлайн-редактирования… Это не изменилось?


    1. xkorolx
      29.03.2016 15:01

      Вы про совместное редактирование? Да, она в опенсорсе теперь есть. Но, давно не обновляли опенсорс версию. Так что там не последняя версия. Планируем обновить.


      1. WayMax
        30.03.2016 10:38

        Скорее автор комментария имел в виду «вообще редактирование», у вас на странице www.onlyoffice.com/ru/enterprise-edition.aspx написано: «Только просмотрщики документов». Мне вот тоже интересно, будет ли возможность редактирования документов в бесплатной версии?


        1. xkorolx
          30.03.2016 11:01

          Enterprise Edition и Open Source — это разные версии ONLYOFFICE. В вашей ссылке речь идет о бесплатной версии Enterprise Edition без редакторов. Пока мы не планируем их туда добавлять.
          В Open Source версии есть редактирование документов. Просто версия редакторов чуть постарее. Посмотрите тут.


          1. 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", без дополнительных "свистелок")?


          1. WayMax
            30.03.2016 11:50

            И что вы подразумеваете под "Open Source"? На sourceforge.net у вас и "CommunityServer" и "DocumentServer" с исходниками.


            1. 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.


              1. WayMax
                30.03.2016 16:01

                Спасибо за ответ (серьезно, без иронии).
                Вот видите сколько времени вам понадобилось чтобы объяснить человеку со стороны какие версии у вашего ПО вообще есть. Дам бесплатный, а от того бесполезный, совет — структурируйте вы все таки эту информацию на своих сайтах, как есть сейчас — без ваших пояснений было непонятно, плюс совсем не интуитивное разделение на сайты onlyoffice.com и onlyoffice.org. То что это 2 разных сайта я вообще только сейчас заметил, т.к. на разницу в доменах первого уровня внимания не обратил совершенно.
                UPD: причем инструкция по установке вашего продукта с открытым исходным кодом, которая начинается на onlyoffice.org — заканчивается страницами на сайте onlyoffice.com (хотя вы утверждаете что на onlyoffice.com находятся Enterprise решения которые устанавливаются совершено иначе). Зачем тогда на сайте Enterprise решения инструкция по установке Open Source?


                1. hellonadya
                  30.03.2016 17:58

                  Конечно же, нет предела совершенству, когда структурируешь информацию. Поэтому за совет спасибо: )
                  Что касается деления сайтов на .com и .org, то это не редкость. В качестве примера — ownCloud


                1. xkorolx
                  30.03.2016 18:04

                  инструкция по установке вашего продукта с открытым исходным кодом, которая начинается на onlyoffice.org — заканчивается страницами на сайте onlyoffice.com (хотя вы утверждаете что на onlyoffice.com находятся Enterprise решения которые устанавливаются совершено иначе). Зачем тогда на сайте Enterprise решения инструкция по установке Open Source?

                  Ответ — общий Help Center, так как нет смысла дублировать одну и ту же информацию. Там не только инструкции по установке, но и работа с самой системой, которая мало чем отличается.


      1. denisnone
        30.03.2016 14:35

        Хотелось бы установить онлайн опенсорс версию, но без live-редактирования смысла нет никакого.
        Уточните пожалуйста, когда произойдет обновление до последней версии?


        1. hellonadya
          30.03.2016 18:10

          Пока в планах нет. В open source версии есть наше совместное редактирование — не как в Google Docs, а с зажатием абзаца.
          Лично мне оно нравится больше, чем "быстрое", когда видишь, всё, что печатает коллега. Позволяет редактировать фрагменты одного документа и избегать конфликта интересов: )
          И просто из любопыства — а почему вам нужно именно быстрое?


          1. denisnone
            30.03.2016 20:21

            Большинство коллег не умеет пользоваться кнопкой «сохранить». Они будут фигачить весь день, надолго блокируя содержимое. А потом наивно спрашивать «Как? Ты еще не видел мои изменения?». «Так ты сохрани черт тебя побери!».
            И вот придется названивать друг другу, «ну что, готово?». «Да, но я вышел пообедать, забыл сохранить, давай через полтора часа». «Чтоб ты подавился!».
            Вот вам примерная зарисовка того, как это будет работать с т.н. строгим редактированием. Этот режим в каком-то смысле действительно более правильный, вы правы, но в идеальной среде. Хорошо, когда все вокруг технически грамотные, ответственные и аккуратные. Но…
            Что касается live-editing, то Atlassian обещает прям уже вот-вот зарелизить Confluence 6.0 с такой возможностью. Мы как раз пользуемся их продуктом, но в то же время смотрим, что происходит вокруг в мире и открыты для всего нового, поскольку есть и определенные минусы, не относящиеся к теме разговора.
            Так вот у них режим будет намного хитрее, чем в Google Docs. Страница будет существовать в двух ипостасях – для просмотра и для редактирования. И всё безумие с бегающими курсорами и буквами будет происходить только в режиме редактирования у тех, кто редактирует. А проходящие мимо читатели будут видеть старую чистую версию до тех пор, пока последний редактирующий не нажмет «сохранить». Такой подход выглядит самым логичным на данный момент, посмотрим, что у них получится на самом деле.
            Искал, где бы в явном виде были перечислены отличия Community версии от Enterprise, но так и не нашел. (только on-premises, SAAS не интересует как класс).
            Вот оно, оказывается, и нашлось отличие. Было бы здорово, если бы вы все же написали это где-то. Все ведь понимают, что фирме надо на что-то существовать и платная версия обязана для этого иметь определенную фору в развитии. Так все делают и в этом нет ничего плохого. Просто скажите вслух, чтобы развеять недопонимание.


            1. hellonadya
              31.03.2016 12:35

              Проблема понятна: ) У нас на этот случай есть такая штука как Autosave. Главное — включить её в настройках и раз в 10 минут документы будет сохраняться со всеми изменениями, даже если автор, "зажавший" абзац ушел курить или улетел добровольцем на Марс.
              (это я продолжаю эмоционировать как фанат "строгого" редактирования).
              Про Atlassian — интересно. Надо будет посмотреть.


  1. MAXHO
    29.03.2016 15:15

    Ряд вопросов:

    1. Лицензирование использования в образовании новой версии (10 машин)
    2. Если будем делать обучающие материалы — вам высылать и куда?
    3. Когда будет Линукс версия?

    Все очень нравится. Планирую стать фанатом.


    1. xkorolx
      29.03.2016 15:29

      1) Напишите сюда — sales@onlyoffice.com, поскольку у нас есть специальные условия лицензирования для школ и вузов.
      2) Конечно будем признательны за материалы, если пригодится помощь с нашей стороны — опять же будем рады, дайте о себе знать напрямую.
      3) Версия под линукс будет вот прямо очень скоро. Она готова, дотестируем на всех версиях — и выложим..


    1. xkorolx
      29.03.2016 19:22

      положили линукс версию (Debian-based)
      https://www.onlyoffice.com/download-desktop.aspx


  1. wyfinger
    29.03.2016 15:16

    Недостаточно развита работа с полями, нумерация как здесь habrahabr.ru/post/187398 неверно отображается, как вставить свое поле вообще не нашел.
    Поддержка docx лучше чем у LibreOffice.
    Панели навигации сбоку нет?


    1. xkorolx
      29.03.2016 15:24

      С нумерацией посмотрим, должно все работать хорошо. По полям — их добавить нельзя.
      Приоритет по функционалу в редакторе документов:
      1) сноски (скоро будут)
      2) содержание — появится и панель навигации сразу (в каком виде — идет обсуждение)
      3) поля.


  1. Evengard
    29.03.2016 15:59
    +1

    Выпускать Open Source версию десктоп клиента не планируете? Я понимаю, что движок там тот же, но тем не менее.


    1. xkorolx
      29.03.2016 16:03

      Пока — нет. Позже — может быть.


  1. kvaps
    30.03.2016 10:05

    забыли еще слово на букву З — или оно тоже в группе O?


    1. xkorolx
      30.03.2016 11:04

      Помню много слов на букву З, но какое из них вы имеете в виду?


    1. Evengard
      30.03.2016 13:59
      +1

      Вы вообще о чём?


      1. kvaps
        30.03.2016 15:06

        Приношу свои извинения, я промахнулся тредом и понадеялся остаться незамеченным…
        Этот коментарий к другой статье :)


        1. ShockwaveNN
          30.03.2016 15:13

          Теперь даже настигло ощущение какого-то разочарования от неразгаданной тайны.


  1. QMaster
    30.03.2016 14:46

    Очень огорчают вот такие надписи:
    Платформы: Дистрибутив Linux на базе Debian (64-разрядные)
    У меня на компе проц тоже 64-разрядный, но не х86-совместимый


  1. alkresin
    30.03.2016 15:43

    Будет ли расширен список дистрибутивов для Линукс? Debian 32-разрядный, например, Fedora ?


    1. xkorolx
      30.03.2016 15:48

      для всех популярных 64-разрядных систем приложение выйдет очень скоро. Для 32-битных тоже думаю соберем. Чуть позже.


      1. alkresin
        30.03.2016 15:57

        Отлично. Спасибо.


  1. LuchS-lynx
    30.03.2016 20:48

    В начале февраля прочитав Вашу статью на хабре я решил попробовать доступный, на тот момент, бесплатным, до 3х пользователей, трехгодовой ключ для Enterprise Edition, который был отправлен мне на почту 03.02.16. Однако в какой-то момент система перестала открывать редакторы документов, в свежеустановленной версии, что мною было принято решение переустановить виртуалку, Однако более новый образ отказался принять ключ, а саппорт ответил, что "ONLYOFFICE, начиная с 8.7, работают только с новой лицензией". Вопрос, могу ли я где скачать более старую версию, для того что бы продолжать пользоваться валидным ключом?
    Спасибо


    1. hellonadya
      31.03.2016 09:06

      Вам всё правильно ответили. К сожалению, сейчас доступна только версия Enterprise 8.7. Для удобства сейчас предоставляется бесплатный пробный период на 30 дней.
      Если рассматриваете только бесплатные варианты, то советуем Open Source (http://helpcenter.onlyoffice.com/server/docker/community/docker-installation.aspx#IntegratedInstallation).
      Ну и напоминаю, что десктопы бесплатны для персонального использования; )


  1. sasha_sasha
    31.03.2016 11:06

    не успела нарадоваться этой новости, как приложение отказалось работать. установилось, запросило цель использования, активировалось (со второго раза), показало стартовую страницу и умерло, и так два раза. что я делаю не так?


    1. xkorolx
      31.03.2016 11:09

      Какая система? Если можно — то видео с повторением в личку. Будем очень признательны. Заранее спасибо.