Engineering Effectiveness Newsletter (September & October 2023 Edition)

Welcome to the September & October 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 have a new tool to confirm failures are real failures, and documentation for how to understand try results. Please use it and provide feedback!
  • Build and test tasks now produce an artifact in a format that the Firefox Profiler can read, making it easy to see where time was spent, and how the CPU and memory resources were used during the task. Click the “Open in Firefox Profiler” button that appears in Treeherder when selecting a task to see what you waited for!
  • We now automatically file bugs for new actionable crashes
    • Let Suhaib know should you have suggestions!
  • Ability to add images in PDFs has been released in Firefox 119
    • Adding alt text is also supported (and recommended)
    • The resizing of images is keyboard accessible, one of the few document editors to support it
  • A new translation model has been trained with the new pipeline on Taskcluster (English -> Hungarian)
    • This opens the door to extending the language coverage more quickly
  • It is now possible to use a --push-to-lando flag to mach try to push patches to Lando for queueing on try, reducing the wait time to seconds
  • A post about the Firefox Nightly .deb Package appeared on the Nightly blog. In 4 days, we have converted 8% of our DAU on the Linux Nightly channel
  • Following significant effort across multiple Engineering Effectiveness teams the proposal to migrate from Mercurial to Git was approved and announced

Contributors

  • Logan Rosen
  • Jonas Jenwald
  • Mathew Hodson
  • Michelle Mounde
  • Varun Shekhar
  • Thierry CH.
  • Amu Christian Nnamdi
  • Melaku Alehegn
  • Nazarene Wanyaga
  • Priyanshi Gaur
  • Nagendra Bhat
  • John Pangas
  • Promise Fru
  • Jacob Michalskie

Detailed Project Updates

Bugzilla and Bugbug

CI and Treeherder

Crash Management

  • Suhaib Mujahid deployed a feature for BugBot to automatically file bugs for new actionable crashes
  • The symbol server now supports fetching symbols using the code identifier when the debug identifier is missing, this allowed us to symbolicate almost 10% of Windows crashes that were previously missing symbols
  • Android crashes would not be symbolicated properly when the libxul.so memory mapping contained holes, this is now fixed
  • When looking for debug information for external builds and dependencies our infrastructure now uses debuginfod to find missing information
  • An issue with elfhack prevented crash annotations from being fetched correctly on Android and Ubuntu Snap builds, this is now fixed

Lint, Static Analysis and Code Coverage

  • Black has been upgraded to version 23.3.0 by Logan Rosen

OS Integration and Security

  • Heitor Neiva and Haik Aftandilian landed taskgraph and codesigning changes allowing Firefox 119 to ship hardened entitlements for Firefox on macOS. This results in a reduced set of entitlements/privileges for almost all Firefox executables including content and GMP processes. We had to relax one parent-process restriction to continue to support pkcs#11 modules and aim to address that with follow-up bug 1860950

PDF.js

  • As part of the “add image to PDF” feature, Calixte made it possible to add alt text to images
  • We shipped the “add image to PDF” feature in Firefox 119!
  • Calixte migrated pdf.js to use Fluent

Firefox Translations

  • Sean Feng made it possible to translate shadow DOM elements.
  • Kagami fixed a nasty bug that prevented Twitter dynamic content to be translated (among many other cases)
  • A new translation model has been trained with the new pipeline on Taskcluster (English -> Hungarian)
    • This opens the door to extending the language coverage more quickly

Phabricator , moz-phab, and Lando

  • Connor Sheehan added a --push-to-lando flag to mach try to push patches to Lando for queueing on try, reducing the wait time to seconds.
  • Connor Sheehan announced a new workflow for requesting and landing uplift revisions via Phabricator/moz-phab/Lando.
    • Mathew Hodson wrote a patch to avoid updating the Phabricator repo associated with a revision, eliminating a papercut where the repo may change when updating a revision with the new workflow.
  • Connor Sheehan clarified the text describing the origin of merge conflicts, so it is more obvious which patch has a conflict on landing and added a hint about using a rebase to fix the problem.
  • Connor Sheehan taught Lando to treat 500 errors from hg.mozilla.org as temporary failures, meaning they will stay in the landing queue instead of requiring a re-queueing from the developer.

Release Engineering and Management

  • Ben Hearsum and Heitor Neiva have finished the bulk of the work for macOS Attribution, and are currently rolling it out to Nightly & Beta. This work enhances our ability to gain insights into our onboarding funnel on macOS.
  • Gabriel Bustamante published a post about the Firefox Nightly .deb Package on the Nightly blog. In 4 days, we have converted 8% of our DAU on the Linux Nightly channel.
  • Ahal implemented changes in Treescript to support using the Github API. This work is in preparation to remove Releng’s Github bot accounts in favour of Github Apps
  • To support the previous point, Ahal also created a new simple-github Python client for easy app authentication and API access
  • Geoff Brown and the Android team switched Fenix Nightly to a new format: AAB. The old format had a 100-MB size limit and we were a few MB away from reaching it. The new format bumps the limit to 150 MB while shrinking Fenix by a quarter.
  • Release Management can now ship Firefox without requiring Release Engineering for the last step (balrog signoff)

Version Control

  • Following significant effort across multiple Engineering Effectiveness teams the proposal to migrate from Mercurial to Git was approved and announced.
  • Connor Sheehan upgraded Mercurial to version 6.5.2 on hg.mozilla.org, giving a boost to try push performance.

mozregression

  • Zeid added support for fenix, focus, and thunderbird-l10n nightlies in mozregression
  • Zeid added support for URL parameter in fenix, focus, and fennec
  • Zeid added Python 3.12 support, dropped Python 3.7 support, and upgraded various core packages

Other

Thanks for reading and see you next month!