Firefox/SHIELD/DevelopmentPlan
Contents
Terminology
- Action
- A semantic thing that can be done by the browser, like "Display a survey" or "Highlight this menu item". Actions may be paired with executable code for self-repair, but other services may read the actions and implement them differently. Actions can be configured with arguments in the form of a JSON object.
- Recipe
- A set of eligibility rules determining who the recipe is sent to, and the action/arguments to execute if those rules match. For example, a recipe may check to see if a preference is set to a known-bad value, and offer to reset it for the user.
- Eligibility Rule
- A rule describing who a recipe should be sent to. For example, a survey may only be relevant to users in India, so the eligibility rules for that survey recipe will limit it to users located in India only. Other filters available include locale, sampling rate, and start/end dates.
- Bundle
- A bundle is a collection of recipes that are sent to Firefox. Bundles are built based on eligibility rules.
Phase 1
Summary
Phase 1 will consist of writing a server to replace the current statically-generated self-repair scripts. The server will be capable of sampling, timed releases of recipes, localized recipes, and geolocation.
Requirements
- Serve bundles of recipes to all Firefox instances, once per day, filtered by eligibility rules.
- Present webpage for creating and managing recipes and the rules determining who sees them.
- Control rollout of recipes with composable rules:
- Distribute recipe starting on X date/time and/or ending on Y date/time.
- Distribute recipe to X% of users.
- Distribute recipe to users in a particular country.
- Distribute recipe to users based on the locale of Firefox (Ex: ru, de, en-GB).
- Distribute recipe to users on a specific release channel (including non-standard channels like funnelcake).
- Expose debugging view for previewing the set of recipes being sent to a specific browser/location configuration.
Measuring success
Without much of an existing system to measure against, our main success metric is shipping a survey via the Recipe Server that is restricted to a specific country via geolocation.
Bugs
- Firefox user stories:
32 Total; 0 Open (0%); 32 Resolved (100%); 0 Verified (0%);
Phase 2
Phase 2 (planned for 2016q2) will focus on developing and shipping the system addon that will pull from the recipe server and eventually replace self-repair within Firefox, as well as server-side improvements.
Bugs
ID | Summary | Priority | Status | Resolution |
---|---|---|---|---|
1248666 | Action peer review | P2 | RESOLVED | WONTFIX |
1257267 | [Tracker] Implement custom recipe management interface | -- | RESOLVED | FIXED |
1257724 | Support for SHIELD studies before SHIELD add-on lands | -- | RESOLVED | FIXED |
1261975 | Do not show surveys to users who have cleared localStorage | -- | RESOLVED | WONTFIX |
1266885 | Replace server-side filtering with client-side filter expressions | -- | RESOLVED | FIXED |
1268220 | [Tracker] SHIELD post-launch fixes | -- | RESOLVED | FIXED |
1277994 | Make hot-path APIs fast | P2 | RESOLVED | FIXED |
7 Total; 0 Open (0%); 7 Resolved (100%); 0 Verified (0%);
Future phases
Possible future improvements may include:
- Distributing recipes to X users, then disabling it.
- A debugging view for previewing a specific recipe's functionality.
- Automatically modify sample rates to reach a certain minimum amount of users over time. For example, "Reach 500 users per day, spread out over the entire day".
- Chain recipes with auto-disable rules, such that when one is disabled the next one is enabled.