Welcome to the June 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
- Marco Castelluccio adjusted the BugBot rule of auto closing incomplete bugs to avoid closing potential security ones.
- On non-Android environments, we now only export a single symbol of libxul, leading to much slimmer library
- The Windows Error Reporting interceptor will now attempt to detect hung processes and report the hangs
- For PDF.js Calixte Denizet added the possibility to edit already existing text annotations
- about:performance, replaced by about:processes, has been removed, removing about 4000 lines of code we will no longer need to maintain.
- Connor Sheehan has been working with an external contractor to improve the performance of hg.mozilla.org, especially the try repository.
Contributors
- Jonas Jenwald (Snuffleupagus)
Detailed Project Updates
Bugzilla
and Bugbug
- Marco Castelluccio adjusted the BugBot rule of auto closing incomplete bugs to avoid closing potential security ones.
- Suhaib Mujahid relaxed BugBot rules to avoid suggesting to land reviewed patches when their bugs have a reminder to land the test patch on a later date, which allows some time before landing the tests for fixed security bugs.
- Dave Lawrence fixed sitemap generation on Bugzilla, which should improve search results in external search engines
Build System and Mach Environment
- On non-Android environments, we now only export a single symbol of libxul, leading to much slimmer library
- Sandor Molnar added an prefix to mach log’s, making it easier to identify critical issues
- Serge Guelton reduced the number of symbols exported by libxul, saving ~2.5MB on a linux64 opt build.
- Alex Hochheiden improved VirtualEnv handling within mach; commands can define and lock their dependencies independent of other commands. This also improves mach startup time
CI and Treeherder 
- Andrew Halberstadt created mozilla-taskgraph and landed a VPN change to use it. This provides a place to add shared Taskgraph code across projects that doesn’t quite belong in the core Taskgraph repo
- Andrew Halberstadt continued moving projects (app-services, vpn, gecko) away from the multi_dep loader in favor of Taskgraph’s from_deps transforms. This is a nice useability improvement for Taskgraph developers in these projects.
Crash Management
- The Windows Error Reporting interceptor will now attempt to detect hung processes and report the hangs
- Crashes on 32-bit Android builds will now have the MOZ_CRASH() reason correctly populated
- BugBot is currently being tested in the beta stage to triage Firefox Nightly crashes. The bot is filing bugs for new actionable crashes on bugzilla-dev.allizom.org to gather feedback and allow us to make necessary improvements. Once the testing phase is complete, the bot will begin filing bugs on bugzilla.mozilla.org.
Lint, Static Analysis and Code Coverage
- Prettier has now been upgraded to the latest version and enabled on production (x)HTML files.
- We have skipped test HTML files for now as there are complexities around the amount of files, avoiding breaking existing tests and making sure there’s no specially crafted tests.
- Serge Guelton added a linter for about:licenses to help keep this file roughly in sync with our repository
OS Integration and Security
- It is tricky to avoid deadlock situations when we walk the stack of a suspended thread on 64-bit Windows. Yannis Juglaret is working on fixing a long-standing deadlock issue when profiling Firefox startup and on implementing a finer-grained strategy for deadlock avoidance. The new strategy should also result in more complete profiling results e.g. during DLL loads.
PDF.js
- Calixte Denizet added the possibility to edit already existing text annotations
- Calixte Denizet improved the rendering of some annotations in HCM
- Rob Wu published a new version of the addon for Chrome
- Jonas Jenwald fixed some bugs and improved the overall quality of the code.
Firefox Translations
- In preparation for release, Greg Tatum fixed performance and memory regressions for enabling Firefox Translations and fixed accessibility blockers for the new UI.
- Erik Nordin has been adding Telemetry for translations, fixed a performance regression caused by language identification, and fixed detection for unsupported CPUs.
- Ben Hearsum has completed the initial work on porting the Firefox Translations training pipeline to Taskcluster. We are now able to run the full pipeline, and will be able to begin training new language models in the next few weeks.
Power use
- about:performance, replaced by about:processes, has been removed, removing about 4000 lines of code we will no longer need to maintain.
- The Firefox Profiler can now show charts in the timeline based on marker data. A first use case will be showing how the CPU frequency of every core varies during a profile (example profile), as the CPU frequency impacts directly the CPU power use.
Release Engineering and Management
- [FFXP-2366] Heitor Neiva and the RelEng team landed MacOS notarization on linux; Moving it away from hardware macs to k8s, making it scalable and easier to maintain. It also opens the door to potentially move code signing MacOS builds to linux as well.
- Ben Hearsum and Nick Alexander doubled the number of attributed Firefox downloads on Windows. This means, we are able to tell where users downloaded Firefox from in 50+% of the cases. Before then, attribution was lower than 25%.
- Heitor Neiva set up the ESR115 repository (metabug 1835641). Firefox 115.0esr will ship on July 4th.
- Windows 7/8 and macOS < 10.14 deprecation: Geoff Brown implemented the channel switch for these deprecated OSes. Release users will be migrated to 115.0esr later in July. Beta channel migration was started on July 4th.
- Julien Cristau fixed a bug that prevented Sheriffs from adding new jobs/retriggering them on the firefox-android repos (taskgraph#267)
Version Control
- Connor Sheehan has been working with an external contractor to improve the performance of hg.mozilla.org, especially the try repository.
Other
- Isabel Rios Escobar, Aaron Train, Heitor Neiva and Nishant Bhasin have enabled physical device testing on CI for iOS projects for the first time.
In order to get there, we have deployed a solution that integrates the iOS CI system, Bitrise, with Firebase. We have changed the test application configuration to sign it properly so that we can generate a valid IPA file that can be installed in Firebase’s physical devices. This allows us to run the Robo tests which are meant to crawl the application randomly searching for crashes. - Zeid Zabaneh add more telemetry to mozregression and released a user survey. These feed into planning future mozregression improvements.
Thanks for reading and see you next month!