MyOffice: First Steps

    Let me introduce myself, we are “New Cloud Technologies” , the team of developers of the “MyOffice” project . The team consists of engineers who participated in the creation of the office suites of the Lexicon and the mobile QuickOffice. Not so long ago we were already told about us on CNews , MegaMozge, and even a small user review was released .

    It's time for a 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!



    To users


    “MyOffice” is a platform for full-fledged work of office employees, which allows you to exchange e-mail messages, 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, tables and presentations, is first of all an opportunity for all participants to work simultaneously. We left the script of work when each document has one author, a mass of versions sent by mail, and endless successive edits and comments. Working together, we must get the result of this work right away, this greatly increases productivity. In other words, we are moving from sequential editing to parallel editing.


    Creating a simple and convenient product is our development vector. The product should be easy to use for the end user. And we hope that soon you will be able to evaluate whether we 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.

    Our plans are to provide “MyOffice” to a wide audience at the end of this year. A little earlier, in the fall, corporate users will get access.

    We have made MyOffice as flexible as possible, ensuring its operation both in public clouds and on open platforms, as well as on customer’s equipment. We satisfy enterprise-class security requirements: we carry out certification 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 thing - a single core system. Thanks to him, the MyOffice applications identically display documents on any devices and support all the possibilities of collaboration. It seems to us that we did a good job and now we can adapt it to any platform, while maintaining high performance and a full range of functions for both the smartphone and the Web client.


    The core of the MyOffice editor is completely written in C ++ and is built for the necessary platform depending on the set of available tools (SDK, NDK, etc.) or using a cross-platform solution. In the case of the 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 analogs from open source and wrote all the kernel code ourselves. For us, an 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.

    Next is the server part. For it, mainly Java and C ++ are used. This gives us the advantages of both worlds in terms of development flexibility and high productivity. 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, starting conversion operations, client notifications, and other similar operations. It was chosen as a language convenient for server development and support, which is actually the standard for enterprise services. C ++ is used in conversion and co-editing modules, which require high speed and economical memory consumption.

    The requirements for scaling and fault tolerance dictate the corresponding infrastructure that we built on the basis of etcd / fleet. They manage the life cycle of individual service modules and cluster system components, start and stop containers and system services. The backend balancing is implemented on the basis of nginx / openresty .

    Following the latest technologies for deploying highly loaded systems, for virtualization we use lightweight Docker containers .

    That's just so complicated. We are ready to tell more about this and much more in the following articles.

    What's next


    For ourselves, we have already outlined the following topics:
    1. How we create cross-platform applications.
    2. Features of the development and architecture of applications for co-editing documents.
    3. How to design an interface design on the principle of Mobile First.

    Your questions and comments will help us choose what we will talk about first.

    See you!

    Also popular now: