Позвольте представиться, мы – «Новые облачные технологии», команда разработчиков проекта «МойОфис». Коллектив состоит из инженеров, принимавших участие в создании офисных пакетов «Лексикона» и мобильного QuickOffice. Не так давно о нас уже успели рассказать на CNews, «МегаМозге» и даже вышел небольшой пользовательский обзор.

Пришло время для повествования от первого лица. Эта статья открывает наш блог на «Хабрахабре», в котором мы будем писать о том, кто мы и что делаем. Давайте знакомиться!



Пользователям


«МойОфис» – платформа для полноценной работы офисных сотрудников, которая позволяет обмениваться почтовыми сообщениями, вести список контактов, управлять совместными встречами в календаре и – самое главное – работать вместе, создавая и редактируя массу документов.


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


Создание простого и удобного продукта – наш вектор развития. Продукт должен быть легким в использовании для конечного пользователя. И мы надеемся, что скоро вы сможете дать оценку тому, удалось ли нам это. Сегодня «МойОфис» работает на большинстве современных платформ: это полноценный Web-клиент, настольные версии приложения для Windows, Mac OS и Linux, а также мобильные приложения для iOS и Android. Еще мы работаем над версией для Tizen.

В наших планах предоставить «МойОфис» для широкой аудитории уже в конце этого года. Немного ранее, осенью, доступ получат корпоративные пользователи.

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

О технологиях


Начать можно с самого важного – единого ядра системы. Благодаря ему приложения «МойОфис» идентично отображают документы на любых устройствах и поддерживают все возможности совместной работы. Как нам кажется, мы хорошо поработали и теперь можем адаптировать его к любой платформе, сохраняя при этом высокую производительность и полный набор функций как для смартфона, так и для Web-клиента.


Ядро редактора «МойОфис» полностью написано на C++ и собирается под необходимую платформу в зависимости от набора доступных инструментов (SDK, NDK и т.п.) либо используя кросс-платформенное решение. В случае Web-клиента это Emscripten.

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

Мы сознательно отказались от заимствования у open source аналогов и весь код ядра написали сами. Для нас важным моментом стал внутренний формат файлов, который имеет общую иерархическую структуру для текстовых документов и таблиц, более сложную, чем стандартные форматы. Именно по этой причине имеющиеся OSS нам не подходили.

Далее серверная часть. Для нее в основном использованы Java и C++. Это дает нам преимущества обоих миров в части гибкости разработки и высокой производительности. А архитектурное разделение на независимые сервисы предоставляет нам возможности для простого горизонтального масштабирования и обеспечивает отказоустойчивость.

Java используется в серверных компонентах, которые обслуживают клиентские REST API, запросы к модулям редактирования документов, запуск операций конвертирования, клиентские уведомления и прочие похожие операции. Он был выбран как язык, удобный для серверной разработки и поддержки, фактически являющийся стандартом для корпоративных сервисов. C++ же используется в модулях конвертирования и совместного редактирования, которые требуют высокой скорости работы и экономного расходования памяти.

Требования к масштабированию и отказоустойчивости диктуют и соответствующую инфраструктуру, которую мы построили на базе etcd/fleet. Они управляют жизненным циклом отдельных сервисных модулей и кластерных компонентов системы, запускают и останавливают контейнеры и системные службы. Балансировка backend’ов при этом реализована на базе nginx/openresty.

Вслед за новейшими технологиями для развертывания высоконагруженных систем, для виртуализации мы используем легковесные контейнеры Docker.

Вот так просто о сложном. Подробнее об этом и многом другом мы готовы рассказать в следующих статьях.

Что дальше


Для себя мы уже наметили следующие темы:
  1. Как мы создаем кросс-платформенные приложения.
  2. Особенности разработки и архитектуры приложений для совместного редактирования документов.
  3. Как проектировать дизайн интерфейса по принципу Mobile First.

Ваши вопросы и комментарии помогут нам выбрать то, о чем мы расскажем в первую очередь.

До встречи!

Комментарии (46)


  1. saibaneko
    28.07.2015 18:51

    приятно, что в наличии версии для Linux и Mac OS X, будет любопытно пощупать продукт в живую.


  1. emreu
    28.07.2015 19:11
    +8

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


    1. myoffice_ru Автор
      28.07.2015 23:50
      +2

      Думаем, что здесь может быть даже несколько тем, обязательно расскажем.


  1. justCxx
    28.07.2015 20:20
    +8

    Тэг «Сделано в России» радует глаз. Молодцы, так держать!


    1. dude1phoenix
      28.07.2015 23:51

      Главное что не «Наш продукт, производить будем на...»


  1. SkidanovAlex
    28.07.2015 20:32
    +5

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

    Перед нами не так давно встала задача совместно написать статью в журнал, с требованием что текст должен быть в две колонки. В Google Docs такой возможности попросту нет, а в Microsoft Office в браузере он позволяет смотреть в две колонки, но чтобы редактировать, он переходит в не-WYSIWYG режим, где колонка одна. Более того, если кто-то редактировал в оффлайновом Word, то изменения синхронизировались только при сохранении, и там было невероятное количество багов.
    Поэтому несколько вопросов:
    1. Позволяет ли МойОфис редактировать в браузере текст в две колонки? Ну и даже более общий вопрос — является ли редактор в браузере WYSIWYG?
    2. Когда я редактирую в клиентах для конктерных ОС, а не в браузере, изменения видны сразу как я печатаю, или как в Word при сохранении?

    И еще два вопроса — когда и на какие языки планируется локализация, и будет ли клиент для Windows Phone (из статьи не совсем очевидно)?


    1. aur
      28.07.2015 20:45

      Судя по последним Release Notes о работе с колонками вообще речи пока нет, недавно маркированные списки появились


    1. myoffice_ru Автор
      29.07.2015 12:29
      +2

      Спасибо, мы стараемся.

      1. Редактирования текста в две колонки пока у нас нет. Ориентируемся на весну 2016. Относительно WYSIWYG – да, в браузере все работает точно так же, как и в версии для desktop’ов.
      2. Все правки отображаются сразу.
      3. Русский/английский есть уже сейчас. Украинский, португальский, немецкий, испанский и другие языки будут появляться со временем, по мере предоставления сервиса в странах, говорящих на этих языках.
      4. Мы следим за развитием Windows Phone и за технологией Windows 10 Continuum. Разработка клиента для новой платформы может быть выполнена достаточно быстро. Но в планах на ближайшее время разработки клиента под эту платформу пока нет.


  1. aur
    28.07.2015 20:36

    Техническая сторона решения интригует — свое ядро, архитектура, синхронизации. Пишите!

    Но я никогда не понимал приложения «для совместной работы с документами». Расскажите, какой бизнес работает с документами? В моем понимании сколь нибудь серьезный бизнес работает с одной из двух систем — это CRM или логистические системы. Работа с клиентами или работа с товарами (или все вместе в случае ERP-решений). Любая из этих систем реализует функции бухгалтерского учёта и документарного сопровождения сделок. Вся остальная движуха цепляется к ним через REST API, SOAP, COM+ и прочие более древние технологии, максимально автоматизируя бизнес-процессы. Эти системы способны генерировать любые документы на основе необходимых данных. Если компания способна освоить хоть какой-нибудь задачник типа мегаплана — необходимость в текстовых документах, таблицах и внутренней переписке исчезает — проверено на своей шкуре.

    Судя по сайту, вам два года. Наверняка вы задавали себе этот вопрос. Было бы здорово почитать об этом на мегамозге, например.


    1. Ag47
      28.07.2015 21:18
      +2

      Если брать разработку, то это может быть ТЗ или руководство, например.


    1. myoffice_ru Автор
      28.07.2015 23:59
      +2

      Примеров такой совместной работы достаточно много:

      • Большое и подробное техническое задание
      • Договор, который готовит команда юристов с привлечением нескольких сторон
      • Описание внутренних процедур и инструкций

      Собственно и эта статья.


      1. aur
        29.07.2015 04:57

        Это всё вспомогательные процессы основной деятельности. И на мой взгляд логично их организовать в там, где идет основная, или тесно связывать. Например, есть система управления проектами worksection, которая очень хорошо интегрирована с Google Docs. Есть формат wiki, который встраивается с переменным успехом в любую систему вообще, потому что OSS.

        Приведенные примеры — это большие, хорошо структурированные документы. И формат отдельного файла для них мало подходит, также как и имеющийся функционал. Поэтому мне интересно почитать конкретные Use Case примеры для конкретной деятельности в виде отдельной статьи.


        1. Komissarov
          30.07.2015 12:49

          Обязательно напишем.


  1. Kanedias
    28.07.2015 21:02

    Здравствуйте.

    Мы сознательно отказались от заимствования у open source аналогов и весь код ядра написали сами

    Какие open source аналоги здесь имеются в виду?


    1. RusSuckOFF
      29.07.2015 00:05
      +1

      Как минимум можно смотреть в исходники LibreOffice и редактора от TeamLab. Может, есть и какие-то другие.


    1. Komissarov
      29.07.2015 13:54
      +1

      OpenOffice/LibreOffice. Прежде всего мы оценивали возможность сделать полноценную совместную работу и возможность работы на мобильных платформах.
      У Calligra хорошее качество кода, но небольшой функционал. Команда Tobias Hintze очень симпатичная.


  1. vlom88
    28.07.2015 21:18
    +1

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


    1. myoffice_ru Автор
      29.07.2015 12:01
      +2

      Мы активно смотрим в сторону Material Design. Но если присмотритесь — все нарисовано с нуля. Мы обязательно напишем, как работали над дизайном, в том числе, отдельных продуктов пакета «МойОфис».


  1. csmile
    28.07.2015 22:53

    Молодцы. Правда, правда. За WYSIWYG редактирование нынче памятники пора ставить.

    Вопрос если позволите: поддерживается ли RTL в редакторах? А TTB?

    Про технологии и общее ядро…

    Десктоп и мобильные use cases редактирования имеют приниципиально разные модели.
    Если в десктоп editing unit это отдельный символ на который можно прицелить cursor, то на телефоне палец накрывает полный параграф (или там ячейку таблицы) — уж очень разные парадигмы редактирования. Да и не нужен на телефонах WYSIWYG в принципе — если пол экрана закрыто клавиатурой — то во второй части можно только plain text input какой разместить…

    Т.е. на разных девайсах — разные потребности в редактировании. Поэтому как-то фраза «редакторы везде работают одинаково» вызывает определенные сомнения. Или я не так понял это всё?


    1. Komissarov
      29.07.2015 13:49

      Use cases конечно разные, они разные и между iPhone и iPad. Даже между iPhone6 и iPhone6+. Мы говорим о том, что ядро работающее с документами одно, оно воспроизводит документы одинаково на всех платформах. А дальше конечно совершенно разные подходы.


  1. monolithed
    28.07.2015 23:44
    +1

    Чем обусловлен выбор писать морду на С++?


    1. AllexIn
      29.07.2015 00:10
      +1

      Полагаю тем, что это высокопроизводительный язык зная который на нем можно писать производительные и компактные приложения.


    1. Komissarov
      29.07.2015 13:31
      +3

      Это не совсем так, у нас кросплатформенное ядро на C++. На веб мы для UI естественно используем JavaScript. Для Windows/Mac/Linux для UI используем QT. На Андроид UI это Java/NDK. На iOS Objective C.


      1. monolithed
        29.07.2015 23:21

        Так, а зачем тогда Emscripten?


        1. Komissarov
          30.07.2015 12:46

          А ядро как в браузере запустить?


  1. makc_de
    29.07.2015 00:58

    В чем преимущества по сравнению с Office 365? Ну и с корпоративным де-факто стандартом SharePoint / Office Web Apps / Exchange?


    1. mifki
      29.07.2015 01:41
      +2

      Импортозамещение же.


      1. myoffice_ru Автор
        29.07.2015 13:48
        +3

        В 2013 году импортозамещение не было трендом. Наше преимущество – возможность размещения в частном облаке. Планируем делать подробные обзоры с сравнением продуктов.


  1. vikarti
    29.07.2015 03:40
    +1

    как оно работает с большими документами?(OnlyOffice от Teamlab умеет,Google Docs — не умеет), вообще веб-версия работает на Canvas (как OnlyOffice) или добавляет текст как элементы DOM?


    1. Komissarov
      29.07.2015 13:14

      Если коротко у нас своя структура DOM, над ней есть Layouter и Renderer и далее на web отрисовка на Canvas, подробно будем писать отдельной статьей. Про большие документы это тоже вопрос для отдельной статьи — мы грузим и редактируем документы в 1000 страниц, которые не открываются в Google Docs.


  1. AlDev
    29.07.2015 09:14
    +1

    А что используете для преобразования операций? Opencoweb/что-то еще/свое решение?


    1. Komissarov
      29.07.2015 13:21

      Это наша любимая тема :) Будем писать.

      Для коллаборации мы используем Operation transformation — это целое семейство алгоритмов. В нашем решении мы
      а) Мы скомбинировали ряд подходов, известных по-отдельности: клиент-серверная модель с подтверждениями, иерархическая организация данных с набором атомарных операций, tombstones.
      б) Добавили некоторые принципиальные новшества, которые не встречали в других алгоритмах. Например: таблица, как узел в иерархичном дереве; возможности сохранения бизнес-логики модели путем изменения операций во время их выполнения.
      Реализовано все самостоятельно.


      1. AlDev
        30.07.2015 12:42

        ну да, operational transformation это и есть преобразование операций) Интересно почему не контекстная теория? Как с оффлайном? Отменой любой операции по истории назад?
        А зачем менять операции во время их выполнения, если они преобразуются до?


        1. Komissarov
          30.07.2015 12:47
          +1

          Скоро будет статья про collaboration.


  1. Suvitruf
    29.07.2015 09:30
    +1

    Хотелось бы про серверную часть почитать, если это возможно )


    1. myoffice_ru Автор
      29.07.2015 13:35

      Подписывайтесь на нас, обязательно расскажем.


  1. darthandrew
    29.07.2015 10:03

    Когда статья «цепляет» электронный документооборот — это интересно, сам нахожусь в этой сфере разработки более 10 лет. Под этим термином и правда сейчас понимают больше «автоматизацию бизнеса», чем классику (автоматизация канцелярии). Но, как только мы ступаем в бизнес-процесс оказывается вот что:

    1) общаясь с клиентами (заказчиком), я понял что рядовые сотрудники часто должны быть связаны по рукам и ногам, чтобы не сделать лишнего. Например, человек может создать документ, и отправить его по маршруту Пете-Васе-Коле-Оле. Но, зачем сотруднику это держать в голове? Раз — и используем жесткий маршрут, который заложил еще администратор, и все 100 сотрудников его используют. Это бюрократично, но это и есть «бизнес» — когда правит порядок а не разгильдяйство. И это разгружает голову людям — например, проще нажать одну кнопку и быть уверенным, что «Договор» пройдет сам нужные этапы, чем думать, кому и как его послать.

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

    3) Какой командой вы создаете свой продукт, если не секрет? Например — «руководитель проекта — 1, программисты- 2, технический писатель -..., дизайнер......?»


    1. Komissarov
      29.07.2015 13:39

      У нас сейчас начался большой проект, в котором кастомизацию с одной из систем документооборота делает интегратор. И в дальнейшем будем придерживаться такого же подхода. С крупными игроками ведем переговоры, как с классическими типа DocsVision, так и с новыми, например с Bitrix24. Тот же принцип — встраиваться в корпоративные решения. SDK планируется, в частности plugin для Chromium.


    1. Komissarov
      29.07.2015 13:45

      Если оставить в сторону эскплуатацию, то:
      — около 80 программистов, включая team leads
      — около 30 QA
      — 6 человек в UX
      — 4 руководителя проектов
      — 6 product owners
      — 7 scrum masters
      — 7 devops


      1. darthandrew
        30.07.2015 12:42

        Оплата труда такой команды за один месяц уже сама по себе впечатляет. А уж за год-два… Уверены что «отобьете» такие вложения?


        1. Komissarov
          30.07.2015 12:48

          Тем более что мы платим «вбелую». Не были бы уверены — не начинали бы.


          1. Alex141
            24.08.2015 17:12

            как вы можете быть уверены в этом? Сейчас это огромные расходы


  1. ghosthope
    29.07.2015 10:47
    +7

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


    1. myoffice_ru Автор
      29.07.2015 13:51

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


  1. Shvedov
    20.08.2015 04:33

    Прикольно, интересно. Только инвайт до сих пор жду…


    1. myoffice_ru Автор
      20.08.2015 18:19

      С вами свяжется команда поддержки, как только будет открыт доступ к тестированию для всех желающих. Пожалуйста, подождите немного :)