Remote Settings is a Mozilla service that makes it easy to manage evergreen settings data in Firefox.
When enabled on the Normandy server, the enabled recipes are published as Remote Settings records.
When enabled on the client side, instead of polling regularly the Normandy API to obtain the list of recipes, the recipes are read from the Remote Settings synchronized data locally.
Delivering Normandy recipes via Remote Settings allows us:
Unify the way we obtain fresh data from our services in Firefox
Get rid of the specific data channel of Normandy
Get rid of the specific content signature integration
Get rid of specific client code that fetches recipes from the server
Unify the way we track uptake telemetry, network errors
Speed up uptake
Benefit from Remote Settings push notifications (live update)
Reduce bandwidth using diff-based updates
Server to Server Integration¶
When a recipe is enabled, it is published and becomes visible on the Remote Settings server:
When a recipe is disabled, its related record gets deleted.
A command allows to synchronize the enabled recipes with the records on the Remote Settings server.
python manage.py sync_remote_settings
--dry-run to only print out the result of the synchronization.
In order to populate the list of recipes to be picked up by the Recipe Runner, trigger a manual synchronization in the Browser console:
ChromeUtils.import("resource://normandy/lib/RecipeRunner.jsm", this); await RecipeRunner.loadRecipes();
The Normandy recipe runner will now be able to read the list of recipes to execute from the local Remote Settings database.