Identity/AttachedServices
Contents
NOTE: This page is defunct and archived for historical purposes.
Overview
We want users to have access to their data, in particular the data that forms their web-browsing context (bookmarks, tabs, web apps, passwords, etc.) from all of their devices. This data should be tied to their identity, so that logging into a device is sufficient to connect to all the services the user has previously set up, whether those services are provided by Mozilla or third parties. These are Identity-Attached Services, which, as a whole, we're code-naming PICL (Profile In the Cloud).
Some early explorations of the issues surrounding this effort are available in this public Mozilla tech talk: http://vid.ly/5x1u5r
As of the second quarter of 2013, PICL is no longer an experiment. Check out the roadmap.
If you're interested in the user flows, take a look at the UX mockup.
Use Cases
The user stories listed below are in order of priority.
User Story | Data Type | Theme | Notes |
---|---|---|---|
As a user, I want to be able to pick up any new device and quickly & easily replicate my core Firefox experience so I don't have repeat a bunch of work I've already done on another device. | All | Portability | FX Desktop; FX Android |
As a user with several devices, I want my core Firefox experience to be available on all devices, so I don't have to spend a lot of time rebuilding my awesomebar experience or other personalizations on each. | All | Portability | FX Desktop; FX Android |
As a user, when I install Firefox on a new device, I want my full and personalized Firefox experience to be available as quickly and easily as possible. I don't want to have to think about how to get my data beyond signing in to my Firefox Account, and that process should be as simple and intuitive as possible. | N/A | Portability | FX Desktop; FX Android |
As a user, if I have typed in and stored a password in Firefox on one device, I don't want to have to type and store that password again on any of my other devices so my web accounts & passwords are magically available on all of my devices (especially important so I don't make typing mistakes on my mobile and become frustrated!). | Password | Password | FX Desktop; FX Android |
As a user, I want to be able to stop using Account altogether, disconnecting all of my clients, deleting all of my data, and deleting all traces of the account in its entirety so I can be assured that no one has any way to know I ever had an account at all. | N/A | Backup | FX Desktop; FX Android |
Users can set up their Account on any device or machine from the menu | N/A | Setup | FX Desktop; FX Android |
As a user who has ignored the prompts to create an Acccount, I can create an Account on my own schedule. | N/A | Setup | FX Desktop; FX Android |
As a user, I want the option to more fully secure my non-personally identifiable data. I would rather have my tabs and history be unrecoverable if I lose my password than risk having them readable in case of a security breach. | N/A | Security | Security |
As a user, I don't want to be forced to create a Account when I first start using Firefox, so I can start using the browser as quickly as possible once I've downloaded and installed it. | N/A | Setup | FX Desktop; FX Android |
As a user, I want all of my data to be saved on my local machine if I haven't set up a Account, so I am still able to build up a collection of data and personalize my Firefox experience over time. | N/A | Backup | FX Desktop; FX Android |
As a user, I want all of my data to be moved and stored somewhere on my behalf once I create a Account so I do not have to start over if I create a Account after using Firefox for a time without one. | N/A | Portability | FX Desktop; FX Android |
As a user, if I explicitly log out of my Account, my Firefox reverts to the 'default' profile that still behaves as typical Firefox. | N/A | Multi-user | FX Desktop; FX Android |
As a user signing into my Account on a device I use relatively frequently, I want my data available instantly so I do not have to wait for it to be synced. | N/A | Multi-user | FX Desktop; FX Android |
As a user of a shared device, I would like all my local data to be safely encrypted when I log out so that it cannot be accessed until I securely log in again. | N/A | Security | Security |
As a user, I'm more interested in syncing bookmarks, passwords and 'my' awesome bar when I first start playing with this feature, and I'm not interested in syncing themes or add-ons which may not be relevant from one device type to the next, so I can have a simple way forward in using this new feature. | Bookmarks, Passwords, History (incl frecency & etc) | Portability | FX Desktop; FX Android |
As Mozilla, I want data about how the feature is working so I can measure and improve. | Telemetry | Metrics | Persona |
As a user, I want to be able to quickly change the password for my Account data, so if someone does steal my laptop they won't be able to access my data even if my browser is still logged in to my Account. | Password | Backup | FX Desktop; FX Android |
As a user signing into my Account on a shared (or non shared) device, I want to have a specific option to permanently delete my data on a device in preparation for giving it to someone else / throwing it away. | N/A | Multi-user | FX Desktop; FX Android |
As a paranoid user, I would not like anyone at all to be able to look at the data synced between my devices under any circumstances. | N/A | Security | Security |
Code
- Desktop: https://github.com/mozilla/picl-desktop-client
- Contacts: https://github.com/mozilla/picl-contacts
- Backend Server: https://github.com/mozilla/picl-server
- Android: https://github.com/seanmonstar/android-sync/tree/picl
Rough Working Documents
- https://id.etherpad.mozilla.org/picl
- Storage API Proposal v0: https://docs.google.com/document/d/1aU0Gdga-JBr6f4eqPF5YHkXyGYXtWCP7lTLJThjG3KE/edit?usp=sharing
- Identity/CryptoIdeas/01-PBKDF-scrypt
- Identity/CryptoIdeas/02-Recoverable-Keywrapping
- Identity/CryptoIdeas/03-ID-Attached-Data
- Identity/CryptoIdeas/04-Delta-Sync
- Identity/CryptoIdeas/05-Queue-Sync
- Identity/NullSecurityProtocol
- Identity/AttachedServices/StorageProtocolZero
- User:Rnewman/TreeSync
- https://id.etherpad.mozilla.org/picl-android-sync
Demos
We regularly build demos of working code.
Week ending | Description | Link | Contact |
---|---|---|---|
2013-01-25 | Tabs: Demo of an experimental tab-synchronization addon, using Persona for login and Firebase for realtime data storage. NOTE: the bug mentioned in the video has been fixed. | https://vimeo.com/58167504 | Brian Warner |
2013-02-01 | Contacts: Proof of concept - Detecting and publishing changes to Contacts in PICL. Github code and documentation. | http://vimeo.com/58592827 | Jed Parsons |
2013-02-08 | Server: Simple Loadtest Automation with AWS and FunkLoad. Github code and documentation. | https://vimeo.com/59229203 | Ryan Kelly |
2013-02-15 | Social tabs provider demo. Github code. | https://vimeo.com/59761447 | Nick Alexander |
2013-02-22 | Persona dialog hosted in native firefox chrome - wip. The persona login dialog is hosted in a hidden iframe that can be attached to the native interface (the "doorhanger" off the url bar) when user interaction is needed. Privileged code is injected into the iframe that hosts the persona dialog, which enables us to message to and from the dialog from within native DOM functions. | http://vimeo.com/60136485 | Jed Parsons |
2013-03-01 | This is a demonstration of a simple PICL sync prototype that uses native Persona in a special Firefox build, a Jetpack add-on, and a storage backend written in Node.js. This prototype will sync passwords and the contents of the bookmarks toolbar. | http://vimeo.com/60875785 | Chris Karlof |
2013-03-01 | PICL Experiment - DB Triggers for Places DB Changelog | http://vimeo.com/60851334 | Ben Adida |
2013-03-01 | Triggering the native Persona interface from Firefox chrome code | http://vimeo.com/60873370 | Jed Parsons |
2013-03-07 | PICL Live Functional Tests | https://vimeo.com/61238051 | Ryan Kelly |
2013-03-15 | PiCL Android Bookmarks Sync Demo | https://vimeo.com/61935511 | Nick Alexander |
2013-03-22 | PiCL Desktop Client Update Demo | https://vimeo.com/62470770 | Chris Karlof |
2013-03-29 | Sign In to Browser and API with native Persona | https://vimeo.com/62828580 | Jed Parsons |
2013-03-29 | Delta-sync demo 2 | https://vimeo.com/62973238 | Brian Warner |
2013-04-04 | Firefox Profile in the Cloud Prototype Q1 Demo | https://vimeo.com/63348018 | Chris Karlof |
2013-04-12 | PICL History Syncing demo | https://vimeo.com/63921748 | Chris Karlof |
2013-04-15 | Video demo of awsboxen deployment | https://vimeo.com/64053049 | Ryan Kelly |
2013-06-13 | PiCL Third-party Part 1: Intro | https://vimeo.com/68317828 | Vlad Filippov |
2013-06-19 | PiCL Third-party Part 2: Mobile to Desktop | https://vimeo.com/68674588 | Vlad Filippov |
2013-07-03 | PiCL Third-party Sync Part 3: Google Drive and Snippets | https://vimeo.com/69644868 | Vlad Filippov |