Let me introduce myself, we are
“New Cloud Technologies” , the development team of the project
“MyOffice” . The team consists of engineers who participated in the creation of office packages "Lexicon" and mobile QuickOffice. Not so long ago, we were already told about
CNews ,
Mega Brain and even a small
user review .
It's time for first-person narration. This article opens our blog on Habrahabr, in which we will write about who we are and what we do. Let's get acquainted!

Users
MoiOffice is a platform for the full-fledged work of office employees, which allows you to exchange e-mails, maintain a list of contacts, manage joint meetings on the calendar and - most importantly - work together, creating and editing a lot of documents.

')
For us, working together with documents, for example with complex text files, spreadsheets and presentations, is primarily the possibility of simultaneous work of all participants. We left the script of work, when each document has one author, a lot of versions sent by mail, and endless alternate edits and comments. Working together, we must get the result of this work immediately, it greatly increases productivity. In other words, we implement the transition from sequential editing to parallel editing.

Creating a simple and convenient product is our development vector. The product should be user friendly for the end user. And we hope that soon you will be able to assess whether we have succeeded. Today, MyOffice works on most modern platforms: it is a full-fledged Web client, desktop versions of the application for Windows, Mac OS and Linux, as well as mobile applications for iOS and Android. We are also working on a version for Tizen.
In our plans to provide "MoiOfis" to a wide audience at the end of this year. A little earlier, in the fall, access will get corporate users.
We have made MoiOffice as flexible as possible, ensuring its operation both in public clouds and on open platforms, and on the customer’s equipment. We meet corporate-class security requirements: we certify for the absence of undeclared capabilities. In the near future we plan to support the standards and encryption algorithms adopted in different countries.
About technology
You can start with the most important - a single core system. Thanks to him, “MyOffice” applications identically display documents on any devices and support all the possibilities of collaboration. As it seems to us, we have done a good job and can now adapt it to any platform, while maintaining high performance and a full range of functions for both the smartphone and the web client.

The kernel of the “Moiofis” editor is completely written in C ++ and is built for the required platform depending on the set of available tools (SDK, NDK, etc.) or using a cross-platform solution. In the case of a web client, this is
Emscripten .
Thus, we have ensured that editors work the same everywhere. The differences are only in the interface and platform-specific subsystems.
We deliberately refused to borrow from open source counterparts and wrote all the kernel code ourselves. For us, the important point was the internal file format, which has a common hierarchical structure for text documents and tables, more complex than standard formats. For this reason, the existing OSS did not suit us.
Further server part. Java and C ++ are mainly used for it. This gives us the advantages of both worlds in terms of design flexibility and high performance. And the architectural division into independent services provides us with opportunities for simple horizontal scaling and provides fault tolerance.
Java is used in server components that serve client REST APIs, requests to document editing modules, start converting operations, client notifications, and other similar operations. It was chosen as a language convenient for server development and support, which is in fact a standard for corporate services. C ++ is also used in modules for converting and co-editing, which require high speed and economical use of memory.
Requirements for scaling and fault tolerance dictate the appropriate infrastructure, which we built on the basis of etcd /
fleet . They manage the life cycle of individual service modules and cluster components of the system, start and stop containers and system services. Backend balancing is implemented on the basis of nginx /
openresty .
Following the latest technologies for deploying high-load systems, for virtualization we use lightweight
Docker containers.
So just about the difficult. We are ready to tell more about this and many other things in the following articles.
What's next
For ourselves, we have already outlined the following topics:
- How we create cross-platform applications.
- Features of the development and architecture of applications for collaborative editing of documents.
- How to design interface design on the principle of Mobile First.
Your questions and comments will help us choose what we’ll tell you first.
See you!