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

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

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

Создание простого и удобного продукта – наш вектор развития. Продукт должен быть легким в использовании для конечного пользователя. И мы надеемся, что скоро вы сможете дать оценку тому, удалось ли нам это. Сегодня «МойОфис» работает на большинстве современных платформ: это полноценный 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.
Вот так просто о сложном. Подробнее об этом и многом другом мы готовы рассказать в следующих статьях.
Что дальше
Для себя мы уже наметили следующие темы:
- Как мы создаем кросс-платформенные приложения.
- Особенности разработки и архитектуры приложений для совместного редактирования документов.
- Как проектировать дизайн интерфейса по принципу Mobile First.
Ваши вопросы и комментарии помогут нам выбрать то, о чем мы расскажем в первую очередь.
До встречи!
Комментарии (46)
 - emreu28.07.2015 19:11+8- Расскажите об архитектуре редактора, какие паттерны применяете, с какими трудностями столкнулись, какие удачные решения использовали. Будет крайне интересно почитать, особенно учитывая что вы разрабатывали с нуля.  - myoffice_ru Автор28.07.2015 23:50+2- Думаем, что здесь может быть даже несколько тем, обязательно расскажем. 
 
- SkidanovAlex28.07.2015 20:32+5- Когда я увидел первый раз заголовок новости на мегамозге, я думал это новый Бабушкин, но чем больше читаю о МоемОфисе, тем болбше понимаю, что это действительно очень крутая вещь. 
 
 Перед нами не так давно встала задача совместно написать статью в журнал, с требованием что текст должен быть в две колонки. В Google Docs такой возможности попросту нет, а в Microsoft Office в браузере он позволяет смотреть в две колонки, но чтобы редактировать, он переходит в не-WYSIWYG режим, где колонка одна. Более того, если кто-то редактировал в оффлайновом Word, то изменения синхронизировались только при сохранении, и там было невероятное количество багов.
 Поэтому несколько вопросов:
 1. Позволяет ли МойОфис редактировать в браузере текст в две колонки? Ну и даже более общий вопрос — является ли редактор в браузере WYSIWYG?
 2. Когда я редактирую в клиентах для конктерных ОС, а не в браузере, изменения видны сразу как я печатаю, или как в Word при сохранении?
 
 И еще два вопроса — когда и на какие языки планируется локализация, и будет ли клиент для Windows Phone (из статьи не совсем очевидно)? - aur28.07.2015 20:45- Судя по последним Release Notes о работе с колонками вообще речи пока нет, недавно маркированные списки появились 
  - myoffice_ru Автор29.07.2015 12:29+2- Спасибо, мы стараемся. 
 
 - Редактирования текста в две колонки пока у нас нет. Ориентируемся на весну 2016. Относительно WYSIWYG – да, в браузере все работает точно так же, как и в версии для desktop’ов.
- Все правки отображаются сразу.
- Русский/английский есть уже сейчас. Украинский, португальский, немецкий, испанский и другие языки будут появляться со временем, по мере предоставления сервиса в странах, говорящих на этих языках.
- Мы следим за развитием Windows Phone и за технологией Windows 10 Continuum. Разработка клиента для новой платформы может быть выполнена достаточно быстро. Но в планах на ближайшее время разработки клиента под эту платформу пока нет.
 
 
 - aur28.07.2015 20:36- Техническая сторона решения интригует — свое ядро, архитектура, синхронизации. Пишите! 
 
 Но я никогда не понимал приложения «для совместной работы с документами». Расскажите, какой бизнес работает с документами? В моем понимании сколь нибудь серьезный бизнес работает с одной из двух систем — это CRM или логистические системы. Работа с клиентами или работа с товарами (или все вместе в случае ERP-решений). Любая из этих систем реализует функции бухгалтерского учёта и документарного сопровождения сделок. Вся остальная движуха цепляется к ним через REST API, SOAP, COM+ и прочие более древние технологии, максимально автоматизируя бизнес-процессы. Эти системы способны генерировать любые документы на основе необходимых данных. Если компания способна освоить хоть какой-нибудь задачник типа мегаплана — необходимость в текстовых документах, таблицах и внутренней переписке исчезает — проверено на своей шкуре.
 
 Судя по сайту, вам два года. Наверняка вы задавали себе этот вопрос. Было бы здорово почитать об этом на мегамозге, например. - myoffice_ru Автор28.07.2015 23:59+2- Примеров такой совместной работы достаточно много: 
 - Большое и подробное техническое задание
- Договор, который готовит команда юристов с привлечением нескольких сторон
- Описание внутренних процедур и инструкций
 
 Собственно и эта статья. - aur29.07.2015 04:57- Это всё вспомогательные процессы основной деятельности. И на мой взгляд логично их организовать в там, где идет основная, или тесно связывать. Например, есть система управления проектами worksection, которая очень хорошо интегрирована с Google Docs. Есть формат wiki, который встраивается с переменным успехом в любую систему вообще, потому что OSS. 
 
 Приведенные примеры — это большие, хорошо структурированные документы. И формат отдельного файла для них мало подходит, также как и имеющийся функционал. Поэтому мне интересно почитать конкретные Use Case примеры для конкретной деятельности в виде отдельной статьи.
 
 
 - Kanedias28.07.2015 21:02- Здравствуйте. 
 - Мы сознательно отказались от заимствования у open source аналогов и весь код ядра написали сами 
 Какие open source аналоги здесь имеются в виду? - RusSuckOFF29.07.2015 00:05+1- Как минимум можно смотреть в исходники LibreOffice и редактора от TeamLab. Может, есть и какие-то другие. 
  - Komissarov29.07.2015 13:54+1- OpenOffice/LibreOffice. Прежде всего мы оценивали возможность сделать полноценную совместную работу и возможность работы на мобильных платформах. 
 У Calligra хорошее качество кода, но небольшой функционал. Команда Tobias Hintze очень симпатичная.
 
 - vlom8828.07.2015 21:18+1- Не пробовал поюзать платформу, но читая статью и глядя на скрины не покидает ощущение что пиктограммы слизаны с гугла и яши, только добавлена яркость. При всем яркость излишняя, глаз съест пока работаешь, хотя большинству нравится эта пестрота как у попугаев, современные тенденции как ни как. 
 А в общем радует что становится все больше хороших проектов от российского сегмента - myoffice_ru Автор29.07.2015 12:01+2- Мы активно смотрим в сторону Material Design. Но если присмотритесь — все нарисовано с нуля. Мы обязательно напишем, как работали над дизайном, в том числе, отдельных продуктов пакета «МойОфис». 
 
 - csmile28.07.2015 22:53- Молодцы. Правда, правда. За WYSIWYG редактирование нынче памятники пора ставить. 
 
 Вопрос если позволите: поддерживается ли RTL в редакторах? А TTB?
 
 Про технологии и общее ядро…
 
 Десктоп и мобильные use cases редактирования имеют приниципиально разные модели.
 Если в десктоп editing unit это отдельный символ на который можно прицелить cursor, то на телефоне палец накрывает полный параграф (или там ячейку таблицы) — уж очень разные парадигмы редактирования. Да и не нужен на телефонах WYSIWYG в принципе — если пол экрана закрыто клавиатурой — то во второй части можно только plain text input какой разместить…
 
 Т.е. на разных девайсах — разные потребности в редактировании. Поэтому как-то фраза «редакторы везде работают одинаково» вызывает определенные сомнения. Или я не так понял это всё? - Komissarov29.07.2015 13:49- Use cases конечно разные, они разные и между iPhone и iPad. Даже между iPhone6 и iPhone6+. Мы говорим о том, что ядро работающее с документами одно, оно воспроизводит документы одинаково на всех платформах. А дальше конечно совершенно разные подходы. 
 
 - monolithed28.07.2015 23:44+1- Чем обусловлен выбор писать морду на С++?  - AllexIn29.07.2015 00:10+1- Полагаю тем, что это высокопроизводительный язык зная который на нем можно писать производительные и компактные приложения. 
  - Komissarov29.07.2015 13:31+3- Это не совсем так, у нас кросплатформенное ядро на C++. На веб мы для UI естественно используем JavaScript. Для Windows/Mac/Linux для UI используем QT. На Андроид UI это Java/NDK. На iOS Objective C. 
 
 - makc_de29.07.2015 00:58- В чем преимущества по сравнению с Office 365? Ну и с корпоративным де-факто стандартом SharePoint / Office Web Apps / Exchange?  - mifki29.07.2015 01:41+2- Импортозамещение же.  - myoffice_ru Автор29.07.2015 13:48+3- В 2013 году импортозамещение не было трендом. Наше преимущество – возможность размещения в частном облаке. Планируем делать подробные обзоры с сравнением продуктов. 
 
 
- vikarti29.07.2015 03:40+1- как оно работает с большими документами?(OnlyOffice от Teamlab умеет,Google Docs — не умеет), вообще веб-версия работает на Canvas (как OnlyOffice) или добавляет текст как элементы DOM?  - Komissarov29.07.2015 13:14- Если коротко у нас своя структура DOM, над ней есть Layouter и Renderer и далее на web отрисовка на Canvas, подробно будем писать отдельной статьей. Про большие документы это тоже вопрос для отдельной статьи — мы грузим и редактируем документы в 1000 страниц, которые не открываются в Google Docs. 
 
 - AlDev29.07.2015 09:14+1- А что используете для преобразования операций? Opencoweb/что-то еще/свое решение?  - Komissarov29.07.2015 13:21- Это наша любимая тема :) Будем писать. 
 
 Для коллаборации мы используем Operation transformation — это целое семейство алгоритмов. В нашем решении мы
 а) Мы скомбинировали ряд подходов, известных по-отдельности: клиент-серверная модель с подтверждениями, иерархическая организация данных с набором атомарных операций, tombstones.
 б) Добавили некоторые принципиальные новшества, которые не встречали в других алгоритмах. Например: таблица, как узел в иерархичном дереве; возможности сохранения бизнес-логики модели путем изменения операций во время их выполнения.
 Реализовано все самостоятельно. - AlDev30.07.2015 12:42- ну да, operational transformation это и есть преобразование операций) Интересно почему не контекстная теория? Как с оффлайном? Отменой любой операции по истории назад? 
 А зачем менять операции во время их выполнения, если они преобразуются до?
 
 
 - darthandrew29.07.2015 10:03- Когда статья «цепляет» электронный документооборот — это интересно, сам нахожусь в этой сфере разработки более 10 лет. Под этим термином и правда сейчас понимают больше «автоматизацию бизнеса», чем классику (автоматизация канцелярии). Но, как только мы ступаем в бизнес-процесс оказывается вот что: 
 
 1) общаясь с клиентами (заказчиком), я понял что рядовые сотрудники часто должны быть связаны по рукам и ногам, чтобы не сделать лишнего. Например, человек может создать документ, и отправить его по маршруту Пете-Васе-Коле-Оле. Но, зачем сотруднику это держать в голове? Раз — и используем жесткий маршрут, который заложил еще администратор, и все 100 сотрудников его используют. Это бюрократично, но это и есть «бизнес» — когда правит порядок а не разгильдяйство. И это разгружает голову людям — например, проще нажать одну кнопку и быть уверенным, что «Договор» пройдет сам нужные этапы, чем думать, кому и как его послать.
 
 2) разработка систем такого рода на общей платформе — хорошо, но нужно сразу закладывать возможности по расширяемости. К вам придет крупный клиент, попросит доработать модуль, и т.п. Такие возможности серьезно удорожают разработку для вас, одно дело — законченный продукт «в коробке», который предоставляется как облако и никто не будет никому подключать ничего нового.
 
 3) Какой командой вы создаете свой продукт, если не секрет? Например — «руководитель проекта — 1, программисты- 2, технический писатель -..., дизайнер......?»
  - Komissarov29.07.2015 13:39- У нас сейчас начался большой проект, в котором кастомизацию с одной из систем документооборота делает интегратор. И в дальнейшем будем придерживаться такого же подхода. С крупными игроками ведем переговоры, как с классическими типа DocsVision, так и с новыми, например с Bitrix24. Тот же принцип — встраиваться в корпоративные решения. SDK планируется, в частности plugin для Chromium. 
  - Komissarov29.07.2015 13:45- Если оставить в сторону эскплуатацию, то: 
 — около 80 программистов, включая team leads
 — около 30 QA
 — 6 человек в UX
 — 4 руководителя проектов
 — 6 product owners
 — 7 scrum masters
 — 7 devops - darthandrew30.07.2015 12:42- Оплата труда такой команды за один месяц уже сама по себе впечатляет. А уж за год-два… Уверены что «отобьете» такие вложения? 
 
 
 - ghosthope29.07.2015 10:47+7- Когда можно будет увидеть рабочую версию, чтобы посмотреть и сравнить с имеющимися аналогами? 
 После того как вы пиаритесь на tv и cnews, хочется уже щупать, чего не получается. Пока больше это похоже на пустой звон, с постоянными переносами и на классическое российское шапкозакидательство. - myoffice_ru Автор29.07.2015 13:51- Планируем до конца года предоставить доступ всем желающим. Переприотизация была связана с тем, что с начала года мы ускоренными темпами делаем десктоп-версии. 
 
 - Shvedov20.08.2015 04:33- Прикольно, интересно. Только инвайт до сих пор жду…  - myoffice_ru Автор20.08.2015 18:19- С вами свяжется команда поддержки, как только будет открыт доступ к тестированию для всех желающих. Пожалуйста, подождите немного :) 
 
 
           
 


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