Firefox/Features/Instant Sync

From MozillaWiki
Jump to: navigation, search
Please use "Edit with form" above to edit this page.

Status

Instant Sync
Stage Shipped
Status Complete
Release target Firefox 7
Health OK
Status note Landed in Firefox 7.

Team

Product manager Jennifer Arguello
Directly Responsible Individual Jennifer Arguello
Lead engineer Philip von Weitershausen, Marina Samuel
Security lead `
Privacy lead `
Localization lead `
Accessibility lead `
QA lead Tracy Walker
UX lead Alex Faaborg
Product marketing lead `
Operations lead `
Additional members `

Open issues/risks

`

Stage 1: Definition

1. Feature overview

Sync is supposed to be a transparent service running in the background. The user can browse on one device, then switch to another device and seamlessly have his or her data already sync'ed to that device. Today sync is not working in a way which guarantees the perception of instant sync. This creates mistrust in the functionality of Sync and may cause a user to resort to manual syncing, which is not the goal of the Sync service.

This feature is meant to modify the engine specific sync heuristics via much more aggressive syncing of certain data types and smarter sync on return from idle behavior.

Goals

  • Improve users' confidence in Sync, specifically on frequency, automatic nature. This can be measured by a decrease in feedback of "unknown error" showing up in either SUMO or the Input channels.
  • Reduce users' desire to continuously check if they are in sync.
    • JA- Not sure how to measure this one. Thoughts?

2. Users & use cases

  • Bookmarks
    • 1a. User is browsing on one desktop and saves a bookmark
    • 1b. User opens the FF on a mobile device and the new bookmark is in the bookmark list
    • 2a. User is browsing on FF mobile and saves a new bookmark.
    • 2b. User opens up FF on a desktop or starts using an idle desktop browser. the new bookmark can be found in the bookmark list.
    • 3a. User is browsing on one desktop and saves a new bookmark.
    • 3b. User goes to another desktop and opens or starts using an idle browser. The new bookmark can be found in the bookmark list.
  • Passwords
    • 1a. User is browsing on one desktop and logs into a website, where the password is saved.
    • 1b. User opens the FF on a mobile device and goes to the same website to login. The password is available for logging in.
    • 2a. User is browsing on FF mobile and logs into a website, where the password is saved.
    • 2b. User opens up FF on a desktop or starts using an idle desktop browser and goes to the same website to login. The password is available for logging in.
    • 3a. User is browsing on one desktop and logs into a website, where the password is saved.
    • 3b. User goes to another desktop and opens or starts using an idle browser. Goes to the same website to login. The password is available for logging in.

3. Dependencies

`

4. Requirements

  • (must-have) New bookmarks will instantly sync to sync server.
  • (must-have) New passwords will instantly sync to sync server
  • (must-have) Sync from sync server when a client starts or comes back from being idle.
  • (must-have) User experience will remain the same or better (IOW, no increase in error messages than those that come up today)
  • (nice-to-have) More informative error messages for the user.
  • (???) Do we need to enforce a sync on shutdown of a client?
    • it's pretty much impossible to do without impacting shutdown time which is not an option --philikon

Non-goals

`

Stage 2: Design

5. Functional specification

Behaviour:

  • we have an idle polling interval O(hours)
  • a not-idle (active user) polling interval O(minutes)
  • sync on "back", but only if that's past a certain threshold which is also O(minutes)
  • the not-idle polling interval is adaptive. it gets shorter if we got changes on the last sync and longer if we didn't

Implementation:

  • on "back" observer with threshold (suggested 5 mins)
    • sync
    • change sync interval to non-idle one
  • on "idle" observer with threshold (5 mins)
    • change sync interval to idle one
  • after sync while non-idle
    • decreases sync interval if items were downloaded
    • increase sync interval if no items were downloaded
  • on score update
    • sync once score hasn't changed for X ms (X = 100?)

6. User experience design

`

Stage 3: Planning

7. Implementation plan

`

8. Reviews

Security review

`

Privacy review

`

Localization review

`

Accessibility

`

Quality Assurance review

`

Operations review

`

Stage 4: Development

9. Implementation

Stage 5: Release

10. Landing criteria

  • Does not affect browsing performance in production/beta channel builds for desktop.
  • Does not affect browsing performance in production/beta channel builds for mobile.


Feature details

Priority P1
Rank 999
Theme / Goal `
Roadmap Sync
Secondary roadmap `
Feature list Services
Project `
Engineering team Services

Team status notes

  status notes
Products ` `
Engineering ` `
Security pass `
Privacy ` `
Localization ` `
Accessibility ` `
Quality assurance pass `
User experience ` `
Product marketing ` `
Operations ` `