14
edits
(Created page with "= Firefox Remote Settings = - [https://mana.mozilla.org/wiki/pages/viewpage.action?pageId=66655528 OPs and staff documentation] (How to create new collections etc.) = Key...") |
No edit summary |
||
| Line 1: | Line 1: | ||
= Firefox Remote Settings = | = Firefox Remote Settings = | ||
- [https://mana.mozilla.org/wiki/pages/viewpage.action?pageId=66655528 OPs and staff documentation] (How to create new collections etc.) | '''Remote Settings''' is a Mozilla service that makes it easy to manage evergreen settings data in Firefox. [[Firefox/Kinto]] is used for syncing of data. A simple API is available in Firefox for accessing the synchronized data. | ||
<pre> | |||
const { RemoteSettings } = ChromeUtils.import("resource://services-common/remote-settings.js", {}); | |||
RemoteSettings("my-key") | |||
.on("sync", (e) => { | |||
// e.data.current = [ Record, Record, ... ] | |||
}); | |||
</pre> | |||
= Resources = | |||
* [https://firefox-source-docs.mozilla.org/services/common/services/RemoteSettings.html API client docs] (How to use RemoteSettings in Gecko) | |||
* [https://mana.mozilla.org/wiki/pages/viewpage.action?pageId=66655528 OPs and staff documentation] (How to create new collections etc.) | |||
* [https://bugzilla.mozilla.org/buglist.cgi?product=Cloud%20Services&component=Server%3A%20Remote%20Settings&resolution=---&list_id=14124423 RemoteSettings server bugs list] | |||
* [https://bugzilla.mozilla.org/buglist.cgi?product=Firefox&component=Remote%20Settings%20Client&resolution=---&list_id=14124425 RemoteSettings client bugs list] | |||
* [https://github.com/mozilla/remote-settings Project milestones] | |||
== about:remotesettings == | |||
A tool is available to diagnose remote settings synchronization and state. See https://github.com/leplatrem/aboutremotesettings | |||
= Key Features = | = Key Features = | ||
- | * Admin UI (generated from data schema) | ||
* Data history | |||
* Preview data (QA) | |||
* Sign-off (review) | |||
* File attachments | |||
* Email notifications | |||
* Content signature (Autograph integration) | |||
* Single endpoint for polling for changes | |||
* Client synchronization (diff based, local db) | |||
* Client Telemetry | |||
== | = Use Cases = | ||
== Main bucket == | |||
{|class="wikitable" | |||
! List | |||
! Collection | |||
! Description | |||
|- | |||
|Activity Stream Tippytop | |||
|<code>tippytop</code> | |||
|Hi-res icons for Topsites in Activity Stream | |||
|- | |||
|Focus experiments | |||
|<code>focus-experiments</code> | |||
|A/B testing of Focus features | |||
|} | |||
== Fennec == | |||
{|class="wikitable" | {|class="wikitable" | ||
| Line 15: | Line 62: | ||
! Bucket | ! Bucket | ||
! Collection | ! Collection | ||
! Description | |||
|- | |- | ||
| | |Assets catalog | ||
|<code>fennec</code> | |<code>fennec</code> | ||
|<code>catalog</code> | |<code>catalog</code> | ||
|The goal is to remove the static assets (fonts, hyphenation dicts, etc.) from the distribution package and download them asynchronously using a remote catalog | |||
|- | |||
|Experiments | |||
|<code>fennec</code> | |||
|<code>experiments</code> | |||
|A/B testing of Fennec features | |||
|} | |} | ||
| Line 29: | Line 83: | ||
! Bucket | ! Bucket | ||
! Collection | ! Collection | ||
! Description | |||
|- | |- | ||
|Cert intermediates constraints | |Cert intermediates constraints | ||
|<code>security-state</code> | |<code>security-state</code> | ||
|<code>intermediates</code> | |<code>intermediates</code> | ||
|https://bugzilla.mozilla.org/show_bug.cgi?id=1361118 | |||
|} | |} | ||
| Line 41: | Line 97: | ||
! Bucket | ! Bucket | ||
! Collection | ! Collection | ||
! Description | |||
|- | |- | ||
|Certificates pinning | |Certificates pinning (HPKP) | ||
|<code>pinning</code> | |<code>pinning</code> | ||
|<code>pins</code> | |<code>pins</code> | ||
|https://bugzilla.mozilla.org/show_bug.cgi?id=787133 | |||
|} | |} | ||
| Line 50: | Line 108: | ||
== Blocklists == | == Blocklists == | ||
The goal is to replace the current system — based on a single XML file downloaded everyday — by several | The goal is to replace the current system — based on a single XML file downloaded everyday — by several collections. | ||
{|class="wikitable" | {|class="wikitable" | ||
| Line 57: | Line 114: | ||
! Bucket | ! Bucket | ||
! Collection | ! Collection | ||
! Description | |||
|- | |- | ||
|OneCRL | |OneCRL | ||
|<code>blocklists</code> | |<code>blocklists</code> | ||
|<code>certificates</code> | |<code>certificates</code> | ||
|SSL certificates blocking / invalidation | |||
|- | |- | ||
|Add-ons | |Add-ons | ||
|<code>blocklists</code> | |<code>blocklists</code> | ||
|<code>addons</code> | |<code>addons</code> | ||
|Malicious blocked extensions | |||
|- | |- | ||
|Plugins | |Plugins | ||
|<code>blocklists</code> | |<code>blocklists</code> | ||
|<code>plugins</code> | |<code>plugins</code> | ||
|Unstable/malicious plugins | |||
|- | |- | ||
|Gfx | |Gfx | ||
|<code>blocklists</code> | |<code>blocklists</code> | ||
|<code>gfx</code> | |<code>gfx</code> | ||
| | |Unstable graphical drivers | ||
|} | |} | ||
=== Transition from XML to RemoteSettings === | |||
Currently the blocklist system relies on a big XML file that is downloaded every day. It contains block entries for certificates to be revoked, addons and plugins to be disabled, and gfx environments that cause problems or crashes. | |||
Currently the blocklist system relies on a big XML file that is downloaded every day. It contains block entries for certificates to be revoked, addons and plugins to be disabled, and gfx environments that cause problems or crashes | |||
Firefox (and derivatives like Thunderbird, Seamonkey, ...) downloads it on an URL that contains client information (eg. https://blocklist.addons.mozilla.org/blocklist/3/%7Bec8030f7-c20a-464f-9b0e-13a3a9e97384%7D/44.0a1/) | Firefox (and derivatives like Thunderbird, Seamonkey, ...) downloads it on an URL that contains client information (eg. https://blocklist.addons.mozilla.org/blocklist/3/%7Bec8030f7-c20a-464f-9b0e-13a3a9e97384%7D/44.0a1/) | ||
* '''phase 1: DONE''': Both mechanisms run in parallel but only the legacy one will be used. | * '''phase 1: DONE''': Both mechanisms run in parallel but only the legacy one will be used. | ||
* '''phase 2: DONE''': The source of truth for blocklist is Kinto but produces the same XML as the legacy one. | * '''phase 2: DONE''': The source of truth for blocklist is Kinto but produces the same XML as the legacy one. | ||
* '''phase 3''': Eventually, [https://bugzilla.mozilla.org/show_bug.cgi?id=1257565 blocking mechanism will rely on | * '''phase 3''': The nsBlocklistService should become asynchronous in order to be able to fetch info from remote settings local database | ||
* '''phase 4''': Eventually, [https://bugzilla.mozilla.org/show_bug.cgi?id=1257565 blocking mechanism will rely on RemoteSettings] entirely and the old XML client will be decommissioned. | |||
edits