Welcome to the Q2 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
- On the 30th April 2025 we successfully migrated Firefox’s source of truth from Mercurial to a new repo on Github
- This was a massive effort that spanned many people and teams. It took meticulous planning and preparation from as early as 2023.
- Please see the detailed updates for some of the specific contributions that made this migration possible!
- The last vestiges of old-configure were removed! This marks the end of a 9 year journey to move build configuration from a shell script to Python.
- The Bugzilla ETL was completed! This provides daily snapshots of Bugzilla data in BigQuery, opening the door to many new and exciting tooling opportunities.
- Several improvements to our Python integration in mach:
- Bumped the minimum Python version from 3.8 to 3.9.
- Now using uv for all Python package installation and vendoring across mach and mozharness. This results in huge performance improvements locally and in CI.
- Tooling to verify and fix the consistency and correctness of our vendored packages and the commands that use them.
- Lots of tooling support for Jujutsu, a modern git compatible vcs with strong roots in Mercurial.
- New documentation on using Jujutsu for Firefox development.
- Moz-phab now supports Jujutsu, which should be released soon with moz-phab 2.0.
- A Jujutsu implementation for mozversioncontrol. This means any tooling that uses mozversioncontrol should in theory support Jujutsu repos for free.
- Bootstrap support via ./mach vcs-setup –vcs=jj
Contributors
- :anutrix and :jadavila9 have been steadily chipping away at removing usages of six and making mach use orjson when possible.
Detailed Project Updates
Bugzilla
and Bugbug
- Dave Lawrence completed the Bugzilla ETL! This provides daily snapshots of Bugzilla data in Big Query.
- Suhaib Mujahid made many improvements to the Review-Helper Firefox addon:
- Learn continuously from both approved and rejected comments, which will help avoid suggesting comments similar to those that were rejected.
- Approved comments are now posted immediately, without waiting for feedback on all comments.
- Each suggested comment now has a justification explaining why it was recommended.
- Added a new option in the add-on preferences to control verbosity levels.
Build System and Mach Environment
- Alex Hochheiden updated mach configure to automatically update Android dependencies (SDK, NDK, build-tools, emulator, etc.)
- Alex Hochheiden added ./mach generate-python-lockfiles to allow for quickly verifying site compatibility after ./mach vendor python or adding PyPi dependencies to .txt files.
- Also added the python-sites lint to automatically fix common mistakes.
- Alex Hochheiden enabled uv in mozharness for faster virtualenv setup/pip installs in CI.
- Alex Hochheiden released MozillaBuild 4.2.
- Alex Hochheiden bumped the minimum Python version for mach to 3.9.
- Serge Guelton removed the last vestiges of old-configure
. This marks the end of a 9 year journey to move build configuration from a shell script to Python.
- Serge Guelton reduced the number of symbols we export on Android - which resulted in big wins in terms of binary size, startup time, and resident memory.
- Serge Guelton added ONNX runtime support, in support of AI workflows.
Crash Management
- Alex Franchuk added support for a Necko-based network transport layer in the crash reporter client, allowing the client to take advantage of user-configured network settings (e.g., proxies).
- Suhaib Mujahid improved BugBot to avoid filing bugs on Bugzilla for crashes caused by broken CPUs.
Firefox-CI, Taskcluster
and Treeherder 
- Matt Boris and Jonathan Moss migrated Firefox Translations training tasks to a modern, dockerized worker image, which improves developer experience and ensures these tasks stay up to date with the latest fixes and improvements.
- Andrew Halberstadt created Firefox-CI dashboards tracking average pending duration, task duration by date and more.
- Andrew Halberstadt re-wrote the Decision task to use orjson everywhere, shaving ~15 seconds off of Decision task runtimes.
Phabricator
, moz-phab, and Lando
- Erich Gubler added Jujutsu support to moz-phab.
- Paul Adenot added a moz-phab abandon command to abandon revisions from the command line.
- Claudia Pellegrino and Kagami Rosylight removed usages of the pkg_resources package in moz-phab to resolve deprecation warnings during install.
- Connor Sheehan improved moz-phab’s base commit detection by looking for the first commit not present on a remote branch.
- Connor Sheehan improved Lando’s detection of pre-initialized repos, bringing the worker startup time down from 20 minutes to 10 seconds.
- Olivier Mehani enabled the diff inspection checks in Lando, which replaced many of the functions of the hg.mozilla.org server-side hooks. Connor Sheehan later added a flag to disable the hooks in case pushes are incorrectly blocked by the hooks.
- Moz-phab had several new releases (1.9.0, 1.10.0, 1.11.0)
Release Engineering and Release Management
- Ben Hearsum migrated CI & release automation that pushes changes to the Gecko repo to use Lando instead of pushing directly.
- Heitor Neiva and Ryan Curran deployed a new [M2] Mac Signer pool with updated host OS and tooling.
- Andrew Halberstadt made several improvements to the System Addon release pipeline:
- Ensured folks actually working on the addons are the ones that sign off.
- Added ability to build and ship System Addons directly out of firefox-main.
- Reduced number of phases in Shipit for System Addons.
- Landed a smattering of minor improvements and performance improvements.
Version Control
- Steve Fink added support for Jujutsu in mach via mozversioncontrol.repo.jj.py.
- Alex Hochheiden improved ./mach vcs-setup for git. The default configuration now enables the built-in fsmonitor (or watchman on Linux, if installed) for improved performance.
- Alex Hochheiden added Jujutsu support to ./mach vcs-setup via vcs=jj. It sets up a git co-located jj repo with sensible configuration defaults (also sets up watchman) to make it easier to get started.
- Alex Hochheiden enabled mozversioncontrol tests for jj to run in CI.
- Connor Sheehan and Julien Cristau created the mozilla-esr140 and comm-esr140 repositories and associated resources on hg.mozilla.org.
- Connor Sheehan added references to the upstream Git commit to the changeset view on hg.mozilla.org, and the pushlog JSON API.
- Julien Cristau added support for Git-style backouts to hg.mozilla.org’s backout detection.
- Julien Cristau added a hook to block pushes that touch multiple Mercurial branches.
- Julien Cristau restored the alert for an excessive number of try heads.
- Julien Cristau moved the SSH push server to a virtualised node, and upgraded Mercurial to version 6.9.
Mercurial to Git project
- On the 30th April 2025 we successfully migrated the source of truth for Firefox from Mercurial to Git
- GitHub - mozilla-firefox/firefox: The official repository of Mozilla's Firefox web browser.
- glob proposed the migration in 2023, with final approval at the end of September of that year
- The core team was Zeid Zabaneh, Connor Sheehan and Olivier Mehani. Liz Henry was the Technical Program Manager.
- Major components of this work include:
- A new Lando built with Django that addressed considerable technical issues with the old system (Zeid Zabaneh and Connor Sheehan)
- A service that synchronises Git and Mercurial repositories, even if the shape of the source and destination repositories are different (Olivier Mehani)
- A headless API allowing automation to queue jobs through Lando as direct pushing is no longer available (Connor Sheehan)
- Reimplementation of the Pulse/Push notifications in Lando, as they are currently generated by Mercurial (Olivier Mehani)
- A Lando API that maps between Git and Mercurial commit SHAs (both directions) (Zeid Zabaneh)
- Submission of mach try tasks through Lando, to abstract away SCM differences (Connor Sheehan)
- Any many many more changes
- This is the start of our Git journey; there’s still a lot of work to be done to fully complete this migration, including but not limited to migrating off and decommissioning hg.mozilla.org
Thanks for reading and see you next quarter!