When it comes to files we are beginning to take synchronization as a given. You work on a file at work and through the magic of Dropbox or similar services the copy of that file on your personal laptop winds up reflecting the changes. Increasingly we are expecting the same for applications. For example, when you have read a Direct Message on a Twitter App and then notice that it is still shown as unread in the web applications we experience that as a bug.
This enduser expectation of data and state to be instantly synchronized across applications and/or one or more browser sessions has created a new set of demands for engineering teams. Thankfully a new set of services is emerging that make this easier. These seem to come broadly in two categories: first, realtime notification services such as Pusher and PubNub and second, data synchronization services such as Simperium and Firebase.
The former let you get messages quickly between places and you can use those to synchronize state. The latter abstract the messaging away and give you synchronized data directly. Using these services it turns out to be surprisingly easy to do things that would have taken quite a bit of work previously (and required operating one’s own servers).
For instance, I recently wrote a post on HTML5 as we have been seeing more and more activity. The weekend before, my son and I had created a simple and rather incomplete Snake game drawing on the canvas. At the time we talked about how easy or hard it would be to make it multiplayer. To my surprise, using Firebase it took me less than an hour to have a simple version for two players (player 1 and player 2).
I would love to hear from others who are working on data synchronization for apps. Are you building it yourself? Using one of the services from above or some other service? Using an open source framework (if so which one)?