Autonomy in the first place

Original author: Dan Lash
  • Transfer

Here is a translation of the “Meet Offline First” note . Some of the thoughts from it seemed interesting to me, and in general the trend is positive - in short, a group of enthusiasts decided to hold a colloquium dedicated to the problems of optimizing mobile applications for working offline (that is, offline, without network coverage).

Registration form -

At the moment, some members of our teamTravel: organize conferences, participate in various events, conduct master classes, moving from country to country. In this regard, we not only experienced all the charms of poor quality of communication and the Internet, but also talked with other people from different parts of the world - each had its own stories and problems.

Observing the frequent breakdowns of mobile Internet, even in the most civilized and most developed cities, we came to the conclusion that no, the problems with coverage / speed will not be solved by themselves anywhere in the near future.


Usually, we are quite optimistic about this problem, believing that in the future coverage and network bandwidth will gradually increase. However, our recent experience has shown that such judgments are simply naive. Problems of network load, variable coverage quality, the presence of zones with lack of coverage, weak signals (wi-fi, for example) and other problems that manifest themselves during travel - all this will almost always exist.

You can’t alter geography, just like architecture. Travelers come under a double blow: not only can you not find successful coverage in transport (metro, high-speed trains, airplanes), but also extortion prices for roaming from OpSoSov - you have to carry a collection of SIM cards with you, as if you were Agent 007. And that’s all from the West European point of view.

ComradeGregor spent the last 6 weeks traveling across Africa on AfricaHackTrip , and we, in turn, had the opportunity to talk with people from all over the world at the Mozfest event in London. Here, as in many other cases, we noticed a serious concern about the use of mobile applications without network coverage - people were eager to have better support for offline mode, both in web applications and native ones.


Mobile networks simply cannot provide the same level of quality and stability; it was high time to start adapting to such a reality. It is as if to develop an application “primarily for mobile devices”, but taking into account this state of affairs, there is a place to be developing “primarily for autonomy”. By autonomous mode we mean not only a special action plan in case of errors, but also a fundamentally more flexible and fault-tolerant way of application design.

Together with our team, we have developed an architecture that allows you to create stand-alone applications with relative ease. We do not keep this a secret, but we respect confidentiality about the technical aspects regarding our synchronization engine and how it provides autonomy. Suddenly, we were faced with an abundance of new, still unknown and unexplored use cases, which have become available to most developers just now.


This is literally a new frontier, beyond which lies the unknown, full of interesting problems and unimaginable special cases. In other areas of application design, we have a legacy of UX / UI patterns that we can easily apply. But the “application autonomy” described by us is the real terra incognita .

Autonomy has become a reality

So suddenly, autonomy becomes more than just error handling. Autonomy has become an impending reality in which, huh, some parts of your application will stop working - regardless of whether they need a network or not. In this regard, many fundamental questions arise:

  • Should the application notify the person of the current connection status? Does this information concern him? If so, what is the best way?
  • Can we give users hope that the application correctly remembers its state and that no data will be lost, regardless of the state of the network?
  • How to tell the user that he can continue to work with the application offline, and that the data entered by the user at this stage will be correctly sent / processed in the future?
  • How should the interface display all the changes that have occurred since the last time I went online? What to do with remote objects and so on
  • How to make the inevitable resolution of the conflict as painless and intuitive for the user as possible?
  • What about the premature download of some data that, according to the program, can be useful to the user offline?
  • What metrics should I use to make decisions about the premature loading mechanism?

Of course, in fact, there are many more questions. We had to start somewhere and after we had our seminar at Mozfest - “Offline First Application Design” , it became clear in which direction to continue moving. We faced a whole new paradigm, which we are ready to saddle. We want to help users to create reliable, anywhere-working applications, not only from a technical point of view, but also with new UX and UI patterns and methods. You can join the discussion at .


In my opinion, topics are more relevant not to find. A week ago I bought a smartphone and went out of town - only EDGE remained 20km from Moscow, and upon arrival at the place (40km) the channel was completely closed. I have been there for 5 years in a row and during this period nothing has changed for MTS with coverage in that area, despite my questions to the support service. There is a network, no Internet, even if you pay (or cry). In principle, I was not going to do anything with the phone when there is a laptop and a megaphone-modem with perfect 3G nearby, but there is one thing. MTS-EDGE has speed - it is about 3-5kb / s, it is enough for checking mail and so on. But through such a channel, sending a photo to the same Instagram is impossible. The program does not know that I am ready to wait all day. It sends the first 50kb at 3kb / s and then issues “Upload Failed”. The most interesting things were with the support of Twitter in the WP7.5 OS a year ago - there was no error there, but the system was not going to continue loading when the connection appeared, endlessly showing the imaginary progress-bar. Returning to perfect 3G from Megaphone, I note that in the area of ​​Semenovskaya metro station the network is so congested during the day that the Internet can only be waited at night, despite the coverage and the fact of 3G availability.

And what are your sad stories? Write in the comments, collect the Russian kit.
Comments on the transfer are accepted in PM.

Also popular now: