Syncto — Firefox Sync synchronization using the Kinto API

Rémy Hubscher rhubscher at mozilla.com
Wed Jun 22 14:46:35 UTC 2016


Hello everyone,

I realized that Ryan Kelly suggested me to send an email to talk about
that a while ago just after the Orlando All Hands but with the focus
change on the Firefox OS project to Connected Devices, the deployment
were delayed and the future of this project was quite uncertain.

I wanted to tell you about Syncto, which is a little project [0] [1] we
have been working on for the Firefox OS Sync client, which is now
deployed in production [2] and used by the Panasonic CX700 Firefox OS 4K TV.

As you know Firefox Sync have been built with the idea of
synchronization between multiple instances of Firefox so that at least
one of your Firefox have got the data at any time.

For the mobile, the problem was that users needed to backup some data
(contacts, images) and it was unlikely that they would have another
phone to sync them with.

We wanted to make sure that if one lose their phone, their data were
still backup-ed somewhere.
There were also the idea of sharing some of one's data with one's
family/friends or having web apps that would share part of the app data
to part of the app users.

That's why we started working on Kinto [3] to propose something quite
similar to Sync but with storage, sharing and fined-grained permissions
with the Readinglist as our first usecase.
As you have probably noticed the Kinto protocol is quite similar to the
Sync protocol and we used what Mozilla learned while building Sync to
build Kinto.

With that in mind, the first synchronization use case for Firefox OS was
Sync so we wanted to build a sync client for Firefox OS knowing that we
would have to also build a Kinto client for other apps.

We decided to build an experiment to see if it was possible to have the
same Firefox OS client to sync data with Firefox Sync as well as with
Kinto using the Kinto.js client that had landed in Gecko all of that
encrypted using Firefox Account wrap-kB.

Because the Sync protocol and the Kinto protocol are quite similar it
was possible and the Firefox OS team ended up using Syncto and Kinto.js
to sync encrypted user history and passwords between Firefox and Firefox OS.

The benefit of this is that Kinto.js is now able to encrypt user data as
it was the case for Sync.

Today Syncto is using a BrowserID assertion toward the token server and
will cache the hawk credentials as well as sync endpoint for a given
user for the life of the assertion.
The client only talk to Syncto which act as a proxy between the Firefox
Sync and the Kinto protocol. It is easy to scale because Sync already
does scale and Syncto being stateless it is easy to deploy as many nodes
as needed.

As soon as Firefox Sync will support FxA Bearer tokens it could be
interesting to add this feature in Syncto.

If you want to play a bit with Syncto, you can use HTTPie with PyFxA to
build the assertion and call the Syncto API. [4]

Today our biggest plan for Kinto are to add the storage.sync [5] feature
for Web Extension add-ons that would use the Firefox Account and kB to
store and sync user add-ons preferences.

If you have any questions do not hesitate to send us an email at
storage-team at mozilla.com

Best regards,

Rémy


[0] https://wiki.mozilla.org/Firefox_OS/Syncto
[1] https://github.com/mozilla-services/syncto
[2] https://syncto.services.mozilla.com/v1/
[3] http://kinto.readthedocs.io/en/stable/
[4]
http://syncto.readthedocs.io/en/latest/api/resource.html#get--buckets-syncto-collections-(collection_id)-records
[5] https://wiki.mozilla.org/WebExtensions/chrome.storage.sync


*Demos*

If you want to see nice demos of web apps that are using Kinto, you can
have a look at: https://github.com/Kinto/kinto/wiki/App-examples
My favorite ones are probably:

  * http://almet.github.io/kinto-geophotos/ and
    http://almet.github.io/kinto-geophotos/admin
  * https://www.fourmilieres.net/

You may also want to start playing around with the Kinto Admin:
http://kinto.github.io/kinto-admin/
The community around Kinto is starting off and more than one Android
Game developers are slowly moving from Parse to Kinto.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/sync-dev/attachments/20160622/03b2fe83/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://mail.mozilla.org/pipermail/sync-dev/attachments/20160622/03b2fe83/attachment.sig>


More information about the Sync-dev mailing list