Firefox Core Engineering
- 1 Function
- 2 Personnel
- 3 Goals
- 4 Enabling stabilityIn general, things we do should be tied to enabling stability – so, making it measurable and/or addressing issues.
- 5 Supporting performance improvementsImproving performance is certainly everyone's job—not just our team—but we hold the keys for some distinct historical pieces of the analysis that allow people to understand what needs to be improved. This is primarily, but not limited to, telemetry and data analysis.
- 6 Improving the user/contributor experienceThis one is the weirdest: it covers things that we can do to further the web, and improve the experience for our users – both end users and code contributors (some examples: Flash blocking, XUL performance analysis). This category is the most open-ended for future expansion.
- 6.1 Communication
- 6.2 Process and Queuing
- 6.3 Owned Infrastructure (needs updating per 1298080)
- 6.4 Historical knowledge areas
- 6.5 Pipeline
- 6.6 Current projects
- 6.7 Potential future projects
- 6.8 (partial) Active Bug List
The purpose of this team is to address needs that fall between Toolkit and Platform, with an emphasis (currently) on improving stability, quality, and performance – supported by empirical data. As such, we overlap a bit with everyone from Gecko, Desktop, Data, and more.
This team grew out of, in part, the Performance Engineering team, and owns some of that team's infrastructure – some performance-related dashboards on telemetry.mozilla.org, crash analysis, hang visualization, etc. It also includes the installer & updater applications.
- Neil Deakin (:enn)
- Adam Gashlin (:agashlin)
- Felipe Gomes (:felipe)
- Matt Howell (:mhowell)
- Chris HC (:chutten) -- honorary
- Kirk Steuber (:bytesized)
- Robert Strong (:rstrong)
- Gabriele Svelto (:gsvelto)
- Doug Thayer (:dthayer)
- David Durst (:ddurst)
In general, things we do should be tied to enabling stability – so, making it measurable and/or addressing issues.
Supporting performance improvements
Improving performance is certainly everyone's job—not just our team—but we hold the keys for some distinct historical pieces of the analysis that allow people to understand what needs to be improved. This is primarily, but not limited to, telemetry and data analysis.
Improving the user/contributor experience
This one is the weirdest: it covers things that we can do to further the web, and improve the experience for our users – both end users and code contributors (some examples: Flash blocking, XUL performance analysis). This category is the most open-ended for future expansion.
You can typically find us in:
- #fce (primary)
Process and Queuing
There is currently no regimented process for regular triage of candidate work. Needs usually filter down through performance analysis and experimentation.
All actively tracked work is marked with the whiteboard "[fce-active]" (for now). Or look at the #Active Bug List on this page.
Major initiatives are listed on this page.
Owned Infrastructure (needs updating per 1298080)
- Update Orphaning: functional
This is the symbolication server (aka "Snappy Symbolication Server") used by platform developers and performance dashboards. It is not used for the analogous process on Socorro. This is currently slated to be replaced by the owner of symbols, peterbe. See Tecken.
Historical knowledge areas
- back-end of the user interface/XUL, et al (enn)
- e10s system add-ons & system add-ons for feature rollout (felipe)
- e10s data analysis (chutten)
- install and update (rstrong, mhowell)
- telemetry, histograms, pings, and data reporting (chutten)
- stack-walking, breakpad, and crash pings (gsvelto, ccorcoran)
- flash plugin-related (bytesized, felipe, dthayer)
Get More Data Faster
We need to reduce known blind spots and barriers to getting data AND commit to non-ADI based metrics. For this, our goals are to:
enable client-side stackwalking and send basic stack traces with crash pings (beginning in Nightly/Aurora, see 1280484) enable content process crash reports (1293656) differentiate between process types in crash pings (1310664)
- process stack data in crash pings into a queryable result (1310695)
create pingSender to handle crash pings instead of Gecko (1310703)
- enable client-side stackwalking and send basic stack traces with crash pings on all channels
See the roadmap here.
Set Flash to CTA by default
- prefer fallback content to Flash (1277346)
establish allowedlists and deniedlists (1307604, 1307605) use heuristics to control when Flash is set to Click To Activate (1307606) geography-specific SHIELD study in FF53 release to understand user response and impact (1335232)
See the details here.
App Updater and Installers
Update Orphan remediation
Remediation efforts have been tested for both system add-on capable and non (44.x and 43.0.1, respectively). Efforts are identified by ongoing analysis, including the update orphaning dashboard. This has yielded such things as:
- continue the download instead of starting over after other networking errors occur (1309124)
- create an Update Agent, responsible for running independently, daily, and downloading an update if found (1343669)
continue the download instead of starting over after NS_ERROR_DOCUMENT_NOT_CACHED occurs (1272585)(FF49) download the update MAR file unthrottled (already landed) (1309125, 1309668) serve a partial MAR file to Firefox 43.0.1 clients (1309130) push either a system or hotfix add-on that changed the download throttle preference to 0 for FF 50+ run another method (non sysaddon, non SHIELD?, etc) to urge 43.0.1 users to upgrade Updater UI is outdated, too big, and needs to be updated (893505) (FF55) change compression to LZMA for updates (641212) (FF56) move to SHA-384 for MAR signing (1324498) (FF56)
Streamlined installer testing in QX onboarding funnelcake (1328445)
We want to start moving users to 64-bit when appropriate:
stub installer should automatically select 32-bit or 64-bit (797208)
2017 Q3 goals
- APP UPDATE (see roadmap):
- improve update security and performance via LZMA for MAR file compression and SHA384 certificates for MAR file signing
- Increase visibility for update telemetry
- Allow update download to continue in the background (beyond Firefox session)
- INSTALLER (see roadmap):
- Support onboarding
- CRASH MACHINERY (see roadmap):
- Optimize crash data that we send
- Implement crash ping signatures
- Start querying stacks received from crash pings for stability monitoring
- Assist with measuring (and identifying) jank and hang via BHR
- Assist with Quantum Flow and Photon Performance efforts for FF57 and FF58
Potential future projects
This list should be considered a work in progress. Decisions will be reflected for a particular quarter.
- cmore is pitching that Firefox optimizes the user paths that support retention -- which could also include fixing paths where retention drops. This work probably involves a system add-on that initiates event-based recordation, as well as the analysis and remediation of the root cause (this is pending dcamp approval).
- Firefox needs a "policy engine" (with API) to facilitate enterprise admins using Group Policies to ease deployment of Firefox in enterprise settings.
- Update (rstrong) needs help with https://bugzilla.mozilla.org/show_bug.cgi?id=1112937 -- ideally for FF58.
- DLL injection (see https://bugzilla.mozilla.org/show_bug.cgi?id=1306406) needs investigation/implementation of a dynamically updateable DLL blocklist (possibly using Kinto?).
- On a personal note, if anyone experiences sluggishness in FF (on any channel) when you don’t restart it for a few days (maybe with several tabs open?), especially on Windows, please let me know (1398652).
- Mossop (& browser arch) has begun the de-XBL. Overall browser architecture (& UI architecture) could be game in the near future.
(partial) Active Bug List
0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);