<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hello everyone,<br>
    <br>
    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.<br>
    <br>
    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.<br>
    <br>
    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.<br>
    <br>
    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.<br>
    <br>
    We wanted to make sure that if one lose their phone, their data were
    still backup-ed somewhere.<br>
    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.<br>
    <br>
    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.<br>
    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.<br>
    <br>
    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.<br>
    <br>
    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.<br>
    <br>
    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.<br>
    <br>
    The benefit of this is that Kinto.js is now able to encrypt user
    data as it was the case for Sync.<br>
    <br>
    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.<br>
    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.<br>
    <br>
    As soon as Firefox Sync will support FxA Bearer tokens it could be
    interesting to add this feature in Syncto.<br>
    <br>
    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]<br>
    <br>
    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.<br>
    <br>
    If you have any questions do not hesitate to send us an email at
    <a class="moz-txt-link-abbreviated" href="mailto:storage-team@mozilla.com">storage-team@mozilla.com</a><br>
    <br>
    Best regards,<br>
    <br>
    Rémy<br>
    <br>
    <br>
    [0] <a class="moz-txt-link-freetext" href="https://wiki.mozilla.org/Firefox_OS/Syncto">https://wiki.mozilla.org/Firefox_OS/Syncto</a><br>
    [1] <a class="moz-txt-link-freetext" href="https://github.com/mozilla-services/syncto">https://github.com/mozilla-services/syncto</a><br>
    [2] <a class="moz-txt-link-freetext" href="https://syncto.services.mozilla.com/v1/">https://syncto.services.mozilla.com/v1/</a><br>
    [3] <a class="moz-txt-link-freetext" href="http://kinto.readthedocs.io/en/stable/">http://kinto.readthedocs.io/en/stable/</a><br>
    [4]
<a class="moz-txt-link-freetext" href="http://syncto.readthedocs.io/en/latest/api/resource.html#get--buckets-syncto-collections-(collection_id)-records">http://syncto.readthedocs.io/en/latest/api/resource.html#get--buckets-syncto-collections-(collection_id)-records</a><br>
    [5] <a class="moz-txt-link-freetext" href="https://wiki.mozilla.org/WebExtensions/chrome.storage.sync">https://wiki.mozilla.org/WebExtensions/chrome.storage.sync</a><br>
    <br>
    <br>
    <b>Demos</b><br>
    <br>
    If you want to see nice demos of web apps that are using Kinto, you
    can have a look at: <a class="moz-txt-link-freetext" href="https://github.com/Kinto/kinto/wiki/App-examples">https://github.com/Kinto/kinto/wiki/App-examples</a><br>
    My favorite ones are probably: <br>
    <ul>
      <li><a class="moz-txt-link-freetext" href="http://almet.github.io/kinto-geophotos/">http://almet.github.io/kinto-geophotos/</a> and
        <a class="moz-txt-link-freetext" href="http://almet.github.io/kinto-geophotos/admin">http://almet.github.io/kinto-geophotos/admin</a></li>
      <li><a class="moz-txt-link-freetext" href="https://www.fourmilieres.net/">https://www.fourmilieres.net/</a><br>
      </li>
    </ul>
    You may also want to start playing around with the Kinto Admin:
    <a class="moz-txt-link-freetext" href="http://kinto.github.io/kinto-admin/">http://kinto.github.io/kinto-admin/</a><br>
    The community around Kinto is starting off and more than one Android
    Game developers are slowly moving from Parse to Kinto.<br>
  </body>
</html>