Welcome to the August edition of the Engineering Effectiveness Newsletter! The Engineering Effectiveness org makes it easy to develop, test and release Mozilla software at scale. See below for some highlights, then read on for more detailed info!
Highlights
- We will have an all hands for the org on Wednesday, October 6th.
- WASM sandboxing has been improved for Linux-x64, macOS-x64, and is enabled for Android-x64, Windows-x64 and macOS-arm64 in the next couple Firefox releases.
- Significant bumps to our CI worker OSes (Debian 10 -> 11, Windows 1803 -> 2004)
- Tab Unloading (as seen on TV our All Hands meeting) has been re-enabled in Nightly
- A 12 year old bug guiding correct installation on macOS has been resolved!
Contributors
- Masterwayz continues to make contributions daily to many areas around Mozilla, most recently she has been focused on migrating Windows tests from AWS -> Azure and upgrading Windows 10.
- Shubham Yadav.
Detailed Project Updates
Build System and Mach Environment
- Many docker images have been updated by Mike Hommey to run with the new Debian release (11 aka Bullseye).
CI and Treeherder
- OSX 11 (arm64) tests are running properly now thanks to bhearsum.
- Windows 10 upgrade (from 1803 -> 2004) is 98% complete thanks to masterwayz.
- bhearsum improved “toolchain” tasks for Android products a bit, and started work to make them even less painful in the future.
- ahal made it easier to generate diffs of CI configuration changes.
- Did you want to annotate mochitests or reftests to skip them or set them as fuzzy in a specific configuration but didn’t know the variables to use?
Stop guessing. Each log of a mochitest contains a list of available variables now (example). Reftest logs have the information as a formatted list instead of a JSON object going forward (example). Added by Aryx.
Crash Management
Fuzzing and Sanitizers
- Added a Bugmon hook to routinely check if previously filed bugs still reproduce. If not, bugmon will try to identify the changeset that fixed it.
- decoder is working on IPC fuzzing based on a research prototype provided to us that utilizes fast VM snapshots.
Lint, Static Analysis and Code Coverage
- In Bug 1725125 Andi added the possibility to build in a partial non-unified environment.
This move adds better support for clang based tooling, like static-analysis, build time issue reporting and IDE integration through clangd in VS Code. For more information on how this works and how to enable it, see the documentation. - Shubham Yadav improved the code coverage service performance by making it use json-automationrelevance instead of json-rev.
OS Integration and Security
- In Bug 516362, jwatt, spohl, and mstange added the ability to detect when a user is running Firefox from a disk image file (.dmg) which is known to result in poor user experience. The user is presented with an opportunity to install Firefox to the /Applications folder, which will also pin the Firefox icon to the macOS Dock.
- We now skip file preallocation on virtual shared memory files. This is a small optimization that still provides measurable benefits for example on WebGL performance tests.
- Windows 11 will ship early October. We’re looking at getting critical fixes into Firefox 93.
- In Bug 1651133 we added an extra check to avoid showing
about:restartrequired
when running libxul’s BuildID would not differ from the on-disk BuildID. Users are now reporting improvements on the bug. Mixing X11/Wayland apps, having a pending update, or trying to open a link from a third-party app are also identified as ways to trigger the issue in Bug 1724242. - Glandium switched Wasm sandboxing from lucetc to wasm2c (bug 1720828), enabling it on arm64 mac in Firefox 92 (bug 1722437), 64-bits Android (bug 1726101) in 93 and 64-bits Windows (bug 1726474) also in 93. The remaining tier-1 platforms (32-bits Windows, 32-bits Linux, 32-bits Android) didn’t make the cut but we’re hopeful for 94.
- Toshi landed updates to Tab Unloading and re-enabled this support in Nightly where we are now running an experiment coordinated by cpeterson in Nightly to learn if Tab Unloading can reduce OOM crashes. Toshi presented Tab Unloading with a demo at the Firefox All Hands meeting.
PDF.js
- Calixte and Brendan fixed multiple accessibility bugs affecting XFA and Acroform PDF forms, the main blockers for releasing XFA support.
Phabricator , moz-phab, and Lando
- Zeid released moz-phab 1.0.0rc2. Please enable the
get_pre_releases
flag in your settings to help with testing (or manually install the pre-release via pip). This pre-release completely removes arc support from moz-phab. - Zeid updated Lando so maintenance mode is now automatically toggled during deployments. You will see a message that says the API is down for maintenance when a deployment is in progress, but this should not last more than 10-15 minutes. You can always follow deployments in #conduit-ci on Slack!
- Lando now uses persistent storage (thanks to dlactin for implementing this!) thus the landing queue resumes instantly after a deployment. Previously, all repositories had to be re-cloned from scratch after a deployment while more landing jobs piled up.
Release Engineering and Management
- bhearsum plotted a path towards enabling V3 signatures for our Android products, which will enable signing key rotation to enhance security.
Version Control
- sheehan upgraded the Mercurial version on hg.mo to 5.9.1, which contains a mitigation for the repo corruption bug from Mercurial 5.8.
Other
- Sylvestre tweaked “./mach doc” generation so it is back to acceptable performance (bug 1460678).
- In Bug 1587762, toshi re-enabled tab unloading in Nightly v93 for Windows. With big help from cpeterson, we’ve started an experiment to evaluate the feature with Fission.
Thanks for reading and see you next month!