Services/AndroidSyncClient: Difference between revisions

(Created page with "==Overview== This page is the home of the Fennec Sync Client project. This project is part of the re-writing of the Fennec UI using native Java rather than XUL ([https://wiki.moz...")
 
 
(21 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Overview==
==Overview==
This page is the home of the Fennec Sync Client project. This project is part of the re-writing of the Fennec UI using native Java rather than XUL ([https://wiki.mozilla.org/Fennec/NativeUI Fennec Native UI]).
This page is the home of the Android Sync Client project. This project is part of the re-writing of the Fennec UI using native Java rather than XUL ([https://wiki.mozilla.org/Fennec/NativeUI Fennec Native UI]).


==Engineers==
==Engineers==
Line 20: Line 20:
* [http://docs.services.mozilla.com/storage/ Storage API] (using version 1.1)
* [http://docs.services.mozilla.com/storage/ Storage API] (using version 1.1)


==Implementation Details==
== Implementation Details ==
* Utilize a repository pattern for writing to local database on device and talking to the sync server
 
* Add crypto as a wrapping layer to the repository so it appears as if other code is just communicating with the repository object
*Utilize a repository pattern for writing to local database on device and talking to the sync server  
* Run as a lightweight Android service so that sync data is available as soon as Fennec starts
*Add crypto as a middle-ware layer to the repository so it appears as if other code is just communicating with the repository object
** Perhaps run service more aggressively when Fennec is actually running, back down when Fennec isn't running to avoid using too large of a memory footprint (Android kills background services when it is in need of more memory)
*Here is the beginning of a [[Media:ClassDiagram.png|class diagram]] for the Sync Client. Details will be filled in as the client is designed
*Run as a lightweight Android service so that sync data is available as soon as Fennec starts
**Perhaps run service more aggressively when Fennec is actually running, back down when Fennec isn't running to avoid using too large of a memory footprint (Android kills background services when it is in need of more memory)  
**Ideally we'd like to write this as an [http://developer.android.com/resources/samples/SampleSyncAdapter/index.html Android Sync Service] so that it shows up in the user's sync accounts screen and that is how they interact with it
** Screenshots: [[Media:AddAcountPage.jpg|Add Sync Account Page]], [[Media:SyncedAccountsPage.jpg|Synced Accounts Page]]


==Milestones==
==Milestones==
* October 2011: Crypto Libraries
* October 2011: Crypto Libraries
* November 2011
* November 2011
** Week 1 - Repository framework?
** Week 1 - Repository framework
** Week 2 -
** Week 2 - Communication with sync server
** Week 3 -
** Week 3 - Setup of storage and accessing it on the client side
** week 4 -
** Week 4 - Work of actually syncing (make this more granular)
* December 2011
* December 2011
** Week 1 -
** Week 1 - Work of actually syncing (make this more granular)
** Week 2 -  
** Week 2 - Wrap up and hand-off
* December 16, 2011 - Last day of Jason's internship
* December 16, 2011 - Last day of Jason's internship


Line 52: Line 56:
* Project page for [https://wiki.mozilla.org/Fennec/NativeUI Fennec Native UI]
* Project page for [https://wiki.mozilla.org/Fennec/NativeUI Fennec Native UI]
* Native Clojure client for [http://docs.services.mozilla.com/storage/ Weave 1.0 Sync API]: [https://github.com/rnewman/clj-weave clj-weave]
* Native Clojure client for [http://docs.services.mozilla.com/storage/ Weave 1.0 Sync API]: [https://github.com/rnewman/clj-weave clj-weave]
; Crypto Notes
* HKDF:
** [http://tools.ietf.org/html/rfc5869 HKDF Standard (RFC 5869)]
** [https://mxr.mozilla.org/services-central/source/services-central/services/sync/modules/util.js#444 RFC Compliant Code]
** [https://mxr.mozilla.org/services-central/source/fx-sync/services/sync/tests/unit/test_utils_hkdfExpand.js#75 Tests]

Latest revision as of 21:03, 27 October 2011

Overview

This page is the home of the Android Sync Client project. This project is part of the re-writing of the Fennec UI using native Java rather than XUL (Fennec Native UI).

Engineers

  • Jason Voll

Requirements

  • Integrate correctly with existing sync clients
  • Use existing Sync API's to communicate with Sync server via HTTP
  • Reliable
  • Behave as existing Fennec sync client does (i.e. no regression)

Specifications

Cryptography
  • AES 256 CBC
  • HMAC SHA 256
  • SHA1 for converting email to a username
APIs for communicating with Mozilla Sync Server

Implementation Details

  • Utilize a repository pattern for writing to local database on device and talking to the sync server
  • Add crypto as a middle-ware layer to the repository so it appears as if other code is just communicating with the repository object
  • Here is the beginning of a class diagram for the Sync Client. Details will be filled in as the client is designed
  • Run as a lightweight Android service so that sync data is available as soon as Fennec starts
    • Perhaps run service more aggressively when Fennec is actually running, back down when Fennec isn't running to avoid using too large of a memory footprint (Android kills background services when it is in need of more memory)
    • Ideally we'd like to write this as an Android Sync Service so that it shows up in the user's sync accounts screen and that is how they interact with it
    • Screenshots: Add Sync Account Page, Synced Accounts Page

Milestones

  • October 2011: Crypto Libraries
  • November 2011
    • Week 1 - Repository framework
    • Week 2 - Communication with sync server
    • Week 3 - Setup of storage and accessing it on the client side
    • Week 4 - Work of actually syncing (make this more granular)
  • December 2011
    • Week 1 - Work of actually syncing (make this more granular)
    • Week 2 - Wrap up and hand-off
  • December 16, 2011 - Last day of Jason's internship

Repository

Initial development will be stored on github in the following repository: https://github.com/mozilla-services/android-sync

Related Bugs

Feature bug: 695463

Resources

Crypto Notes