|Feature dependencies=; Sync GUID added to XPI Provider : Sync requires non-deterministic IDs to be affiliated with synchronized records. XPI add-ons currently don't have a suitable ID so once will need to be created.
|Feature requirements=*When a user installs an add-on, the add-on will be installed on all the user's devices connected with Sync.
*When a user uninstalls an add-on, the add-on will be uninstalled on all the user's devices connected with Sync*When a user disables an add-on, the add-on will be disabled on all the user's devices connected with Sync
*When a user enables an add-on, the add-on will be enabled on all the user's devices connected with Sync
*Not sure about the update version requirement.
|Feature functional spec=A syncGUID field has been added to the extensions SQLite database ({{bug|682027}}). All extensions now have a randomly-generated ID suitable for syncing.
To track changes, Sync has written a component outside of the add-ons engine called the "Add-ons Reconciler." This provides what the Add-on Manager does not: a persisted state of add-on changes. It installs itself as a listener for Add-on Manager events. When things changed, it records that change and updates it's its own minimal copy of the global state. These changes are persisted to disk in a JSON file in the profile directory, alongside other persistent Sync metadata. Periodically (at the top of a sync) the reconciler examines the state of the world and ensures that it agrees with the Add-on Manager.
The add-ons engine subscribes to changes in the Add-on Reconciler to trigger instant sync.
At the end of every sync, the sync engine requests the reconciler to delete data older than 7 days. This is for privacy reasons as well as to ensure the change log doesn't grow without bound. Even if the change log would grow unbounded, it is doubtful it would ever get so large to become unwieldy because the number of add-on change events (install, uninstall, enable, disable) isn't very high (maybe a few a week).
|Feature ux design=UX has stated that there will be no new UX for this feature. Individual add-ons may trigger UX when they are modified, but there is nothing we can do about that.
|Feature security review=The feature follows the same security model as other sync engines: add-on records are encrypted using Sync's bulk keys (themselves encrypted with the user's Sync Key ), and the IDs for each add-on are randomly generated.
The entire feature is implemented in JavaScript and runs in the chrome process - the same process as Sync.
When add-ons are synced across devices, the receiving device installs the add-on from addons.mozilla.org, not from Sync. For every add-on to be installed on receiving devices, AMO will see traffic. It will first see a search for this add-on by its ID. If that returns something, the XPI will be downloaded as part of the install process.
When this feature launches and add-ons are synchronized across devices, AMO could see a small amount of increased activity, proportional to the number of multi-device Sync users with the feature enabled and the frequency of add-on changes on those devices. We should keep an eye on this for launch day.
}}
{{FeatureInfo