Confirmed users
483
edits
(First draft.) |
No edit summary |
||
Line 1: | Line 1: | ||
= Syncto = | |||
Syncto is a layer to provide the Kinto API for Firefox Sync in order to integrate with Firefox OS | Syncto is a layer to provide the Kinto API for Firefox Sync in order to integrate with Firefox OS | ||
== High level architecture == | |||
== Why Syncto? == | |||
We have several use cases where we need to synchronize data on Firefox OS. We have browser/system related data like the one handled by Firefox Sync, but we also have data from Gaia and 3rd party applications with a very long variety of use cases including synchronizing SMS, call history, accounts configuration for Email and Calendar apps, settings, alarms, images, videos and a long etc. | |||
For browser/system related data we considered using Firefox Sync directly, but that involves implementing the Firefox Sync client on Firefox OS. We did an analysis of the [http://ferjm.github.io/fxos-sync-architecture/1-fxos-sync.html#/ potential architecture] of such a client and we even started working on it, but we stopped that work considering that Syncto looks like a better fit for Firefox OS. | |||
Firefox | === Lack of backup reliability === | ||
Firefox Sync is not a backup solution and it does not mean to be one. | |||
On a smartphone, when you lose your mobile, you expect a backup mechanism that restores your new phone to the state it had when it was lost. | |||
Firefox Sync doesn't guarantee that your data will still be there when you restore your new phone. | |||
Firefox Sync | This is one of the main reasons why we don't want to use Firefox Sync to sync new Firefox OS data into Sync. | ||
Kinto is a storage solution to sync and share data that integrates with Firefox Account. Firefox OS can use Syncto which is based on Kinto to backup Firefox OS specific data. | |||
Firefox | |||
=== Client updates === | |||
As mentioned above, we studied the possibility of implementing a [http://ferjm.github.io/fxos-sync-architecture/1-fxos-sync.html#/ Firefox Sync client on Firefox OS] and we decided that the best approach could be to reuse some of the parts that were already implemented on the platform (Firefox Accounts client, HAWK client, Token server client, etc). That would save us some development time, but would also tie us to Gecko, which means potentially less frequent updates (which are specially rare on Firefox OS). Having a content side solution opens the door to easier updates. Moving most part of the Sync client logic to the server side means mostly seamless updates. | |||
=== Client uniformity === | |||
As mentioned above as well, we have a lot of use cases for synchronizing data on Firefox OS. But we'd like to avoid implementing a specific solution for each use case whenever it's possible. We should aim to have a standard and uniform way of synchronizing data on FirefoxOS. And Kinto looks like the best candidate to provide that. We were already planning to use Kinto to synchronize in-app data, which is the biggest set of use cases for FirefoxOS, so having the chance to also synchronize browser/system related data with the same API makes a lot of sense. | |||
There is already a [Kinto client (kinto.js) https://github.com/mozilla-services/cliquetis/] written in JS that empowers synchronization between a server and an local IndexedDB database with offline first support and that's exactly what we need on Firefox OS. Having this client on Firefox OS will allow us to fulfill most part of the use cases we identified so far. | |||
=== | |||
We | |||
=== Push Kinto and Firefox Accounts ecosystem forward === | |||
* The id behind Syncto is to build around the Kinto ecosystem. | * The id behind Syncto is to build around the Kinto ecosystem. | ||
* Concentrate the effort on building the Kinto.js library that will be used for other Firefox OS synchronization and sharing needs. | * Concentrate the effort on building the Kinto.js library that will be used for other Firefox OS synchronization and sharing needs. |