Services/Sync/Features/Addon Sync: Difference between revisions

Jump to navigation Jump to search
documenting possible record choices
m (add specs)
(documenting possible record choices)
Line 20: Line 20:
|Feature overview=Add-ons are synchronized between sync clients.
|Feature overview=Add-ons are synchronized between sync clients.
|Feature users and use cases=User installs an add-on on one browser. When a sync occurs, the add-on is automagically installed on other sync clients.
|Feature users and use cases=User installs an add-on on one browser. When a sync occurs, the add-on is automagically installed on other sync clients.
|Feature functional spec=Add-ons are only synchronized between similar client types (e.g. desktop and mobile). In other words, the add-on set for desktop clients is independent of of that of mobile. The reason for this is add-on compatibility. At the time this was written, most add-ons did not function properly on desktop.
|Feature functional spec=Let's assume the following feature set:
 
* Add-ons are only synchronized between clients of the same application ID (e.g. Firefox desktop, mobile, or Thunderbird). The reason is compatibility. Most add-ons simply don't work across multiple application types.
* Given the above, we still need to support syncing add-ons installed on multiple application types.
 
This leads to some interesting choices with regards to the add-on data record. We have the following approaches for record modeling:
 
# Per add-on records
# Per { add-on, application type } pair
# Per client records
 
Per per add-on records would likely resemble the following:
 
ADDON_GUID = {
  clients: {
    A: {
      install_state: "INSTALLED",
      enabled: true,
      type: "desktop",
    },
    B: {
      install_state: "UNINSTALLED",
      type: "mobile"
    }
  }
}
 
For per add-on/application type, we would have:
 
ADDON_GUID-DESKTOP = {
  addons: {
    A: {
      install_state: "INSTALLED",
      enabled: true
    },
    B: {
      install_state: "UNINSTALLED",
      type: "mobile"
    }
  },
  other_prefs: undefined
}
 
And for per-client records, we would have:
 
  CLIENT_ID = {
    app_type: "desktop",
    addons: {
      ADDON1: {
        install_state: "installed",
        enabled: true,
      },
      ADDON2: {
        install_state: "uninstalled",
      },
      ADDON3: {
        install_state: "installed",
        enabled: false
      }
    },
    other_prefs: undefined
  }
}}
}}
{{FeatureInfo
{{FeatureInfo
canmove, Confirmed users
409

edits

Navigation menu