Privacy/Reviews/Firefox Home: Difference between revisions

 
(13 intermediate revisions by 2 users not shown)
Line 4: Line 4:
|'''Feature/Product:''' || Firefox Home
|'''Feature/Product:''' || Firefox Home
|-
|-
|'''Projected Feature Freeze Date:''' || <section begin='eta' />(tbd)<section end='eta' />
|'''Projected Feature Freeze Date:''' || <section begin='eta' /> Cancelled <section end='eta' />
|-
|-
|'''Product Champions:''' || (your name here)
|'''Product Champions:''' || -
|-
|-
|'''Privacy Champions:''' || [[User:Sidstamm|Sid Stamm]]
|'''Privacy Champions:''' || [[User:Sidstamm|Sid Stamm]]
Line 12: Line 12:
|'''Security Contact:''' || Michael Coates
|'''Security Contact:''' || Michael Coates
|-
|-
|'''Document State:''' || <section begin='status'/>{{new|}}<section end='status'/>
|'''Document State:''' || <section begin='status'/>{{Resolved|Obsolete -- project with this design dropped}}<section end='status'/>
|}
|}


Line 21: Line 21:
|'''Architectural Overview:''' || 27-April-2011 (crypto proxy) TBD (home server)
|'''Architectural Overview:''' || 27-April-2011 (crypto proxy) TBD (home server)
|-
|-
|'''Recommendation Meeting:''' || (date TBD)
|'''Recommendation Meeting:''' || cancelled
|-
|-
|'''Wrap-up Meeting:''' || (if necessary)
|'''Wrap-up Meeting:''' || cancelled
|}
|}


Line 31: Line 31:


'''The main objective of this feature/product is:''' (describe the goals of the feature/product here)
'''The main objective of this feature/product is:''' (describe the goals of the feature/product here)
* [[Home/Roadmap]]


'''Design Documents''':  
'''Design Documents''':  
Link to any design or architectural documents here.
Link to any design or architectural documents here.
* [[Firefox_Home_Options|Pros and Cons of different architectures]]
* [[Firefox_Home_Components]]
* [[Firefox_Home_Server_Architecture]]


'''Feature Pages''':
'''Feature Pages''':
[[Home/Features/crypto/proxy]]
* [[Home/Features/crypto/proxy]]


== Components  ==
== Components  ==


Describe any major components in the system and how they interact.  Also include any third-party APIs (those Mozilla does not control) and what type of data is sent or received via those APIs.
Describe any major components in the system and how they interact.  Also include any third-party APIs (those Mozilla does not control) and what type of data is sent or received via those APIs.
[[File:HomeDigraph.png]]


=== Crypto Proxy  ===
=== Crypto Proxy  ===
Line 134: Line 142:
'''Stored Data:'''  
'''Stored Data:'''  


{| class="wikitable"
None. Except probably configuration data.
|-
! What
! Where
|-
| data type
| where stored
|}


'''Communication with Crypto Proxy'''  
'''Communication with MemCache Server'''  


{| class="wikitable"
{| class="wikitable"
Line 153: Line 154:
|-
|-
| ''In:''  
| ''In:''  
| message 1
| Get Web Session
| types of data received from component Y with the message
| The Web Session object.
|  
|  
|-
|-
| ''Out:''  
| ''Out:''  
| message 2
| Put Web Session
| types of data sent to component Y with the message
| The Web Session object.
|  
|  
|}
|}


'''Communication with [[Services/Sync|Sync Server]]'''  
'''Communication with Home Database Servers'''  


{| class="wikitable"
{| class="wikitable"
Line 172: Line 173:
! Notes
! Notes
|-
|-
| ''In:''  
| ''Select''  
| message 1
| Get the user's (summarized) sync data
| types of data received from component Y with the message
| -|  
|  
|-
|-
| ''Out:''  
| ''Out:''  
| message 2
| Insert/Update User's Web App Settings/Prefs
| types of data sent to component Y with the message
| -
|  
|  
|}
|}
Line 204: Line 204:
! Where
! Where
|-
|-
| User's Bookmarks
| User's Bookmarks (Sync Data)
| MySQL Database
| MySQL Database
|-
|-
| User's History
| User's History (Sync Data)
| MySQL Database
| MySQL Database
|-
|-
| User's Tabs
| User's Tabs (Sync Data)
| MySQL Database
|-
| User specific settings/prefs for Firefox Home
| MySQL Database
|-
| User access token for the Crypto Proxy
| MySQL Database
| MySQL Database
|}
|}
Line 216: Line 222:
'''Communication with other components or services'''  
'''Communication with other components or services'''  


None.
The database servers will periodically run a job to schedule a Sync operation for those users that are active users of Firefox Home. These jobs are submitted to a RabbitMQ server and picked up by the 'Syncer' component. These tasks only contain the username to be synced.
 
(Idea: Many users try out a new service and then forget about it. We could proactively delete user's data when they do not use Firefox Home for a certain period of time. Note that in the first couple of releases of Home there will not be any user generated data, just a copy of your existing Sync Data. So this is less scary than it sounds.)


=== Home Memcache Servers ===
=== Home Memcache Servers ===


The memcache servers are used to cache frequently used data to make the web app as responsive as possible. Initially just Web Application session objects are stored in memcache. These sessions are user specific Python objects that contain user specific cached data. (Not sure what will actually be in there)
The memcache servers are used to cache frequently used data to make the web app as responsive as possible. Initially just Web Application session objects are stored in memcache. These sessions are Python objects that contain user specific cached data.
 
(Not sure what will actually be in there. Possibly fragments of JSON or HTML or lists of things that we generate from your bokomarks & history)


'''Stored Data:'''  
'''Stored Data:'''  
Line 231: Line 241:
| Web Application Session
| Web Application Session
| MemCache Server
| MemCache Server
|}
=== Home Syncer ===
The 'Syncer' is a component that implements a sync client. It listens to a RabbitMQ queue to grab sync tasks and runs sync sessions.
The task that it gets from RabbitMQ contain just the username. This means that the Syncer will have to access the Home Database Servers to obtain the access token for the Crypto Proxy.
It will then run a sync session for the specific user against the Sync Proxy and store the synced data (bookmarks, tabs, history) in the Home Database Servers,
'''Stored Data:'''
None
'''Communication with Home Database Servers'''
{| class="wikitable"
|-
! Direction
! Message
! Data
! Notes
|-
| ''Select''
| Get User's Proxy Access Token
| (Access Token)
|
|-
| ''Insert/Update''
| Update the Sync Data
| (Bookmarks, History, Tabs)
|
|}
'''Communication with Crypto Proxy'''
{| class="wikitable"
|-
! Direction
! Message
! Data
! Notes
|-
| ''In:''
| sync() return
| unencrypted tabs/bookmarks/history
| Called to get access to user's sync data
|-
| ''Out:''
| sync() call
| access token + username
| Called to obtain access to sync data
|}
|}


canmove, Confirmed users
1,537

edits