A big thank you goes out to Johann Hofmann who put these headlines together while I was away on vacation!
Highlights
- Kevin Jones made sessions restore using lazy tabs & browsers which means restoring any session becomes almost instant!
- The Places refactoring to support hi-res favicons landed and brought an almost 30% perf win (in two stages) to some file I/O measurements! Some followup work still ongoing
- As part of Photon Animation we landed a pref to consolidate and turn on/off all cosmetic animations in browser UI, and have an incoming flag to enable/disable the photon motion animation changes specifically (nightly only until 57)
- To help us better measure the performance impact our Quantum Flow efforts are having, we are planning to turn off add-ons that require shims for Nightly builds. This means that only WebExtensions and addons that are marked as MultiProcessCompatible will remain enabled.
- mccr8 has been reducing the number of memory compartments that content processes use, which should reduce their impact by a few megs each!
- eslint-plugin-mozilla can now be used via npm for external projects. It includes a “recommended” config which is the one originally in toolkit/.
- “Optional” permissions for WebExtensions have been enabled by default
- The Form Autofill feature is being enabled on Nightly this week (for @autocomplete on <input>). Stay tuned!
- Firefox Screenshots is in Beta 2 preffed-off by default. We’ll enable it very soon for everyone, or you can jump the gun by toggling extensions.screenshots.system-disabled . If you run into anything fishy, please let #screenshots know
Friends of the Firefox team
(Give a shoutout/thanks to people for helping fix and test bugs. Introductions)
- Thanks to Robert Ward for using Oh no! Reflow! to help the photon-performance team file uninterruptible reflow bugs like this one!
- Resolved bugs (excluding employees): https://mzl.la/2q2y7fD
- More than one bug fixed:
- Dan Banner
- Pauline
- New contributors (🌟 = First Patch!)
- 🌟 Dan Banner
- 🌟 Aditya Srivastava fixed a style issue on about:newtab
- Ganesh Chaitanya Kale improved a function in our places API
- 🌟 Pooja Gadige (:pgadige) enabled a flake8 rule for Telemetry
- 🌟 Kristina Kurshakova correctly centered a button in the sync panel
- Mayank Madan [:mayankmadan] improved the type checking code in parse_events.py
- Ryan Riley made search.xml use AppConstants from the global scope
- 🌟 Arjun Nair fixed a helper function in our Telemetry code
- Pauline modernized assertions in TelemetrySession.jsm and removed duplicate imports in test_TelemetrySendOldPings
- frankanthonyserrano updated eula.css to use a standard border
- More than one bug fixed:
Project Updates
Add-ons
- Please only run WebExtensions and MPC=True add-ons to help us figure out if we are making Firefox faster or not. See this wiki page and bug 1352204.
- Want to try out running WebExtensions in their own process? Of course you do. Set extensions.webextensions.remote to true. Bugs welcome!
- ExtensionContent.jsm which is for content scripts is now loaded lazily.
- If you’ve got your host permissions wrong for webRequest filters, you’ll get a warning.
- We are turning on the new theming API by default, so extension authors get to do simple theming dynamically in WebExtensions.
Activity Stream
- Test Pilot Activity Stream
- Activity Stream support for Pocket has landed in Test Pilot version. Experiment launches May 1st (thanks csadilek!)
- You can try it now by using the Activity Stream Dev channel
- Updated to latest eslint-plugin-mozilla which now supports mozilla-central external repositories, but need to disable no-useless-parameters as we support older than Firefox 55 (thanks Standard8!)
- Activity Stream system add-on
- Search feed and UI landed
- TelemetrySender landed
- Top Sites feed landed
Firefox Core Engineering
- Flash
- Telemetry experiment ran on Nightly 55 from April 14 – April 23.
- Shield Study defaulting to click-to-play will start on Release 53 in the next week and run for six weeks.
- Default and (slight) additional UI land in 55.
- Crash
- Crash pings contain raw stacks (opt-out) as of Beta 54.
- Crash pings exist for main, content, and GPU processes as of Beta 54.
- Crash pings are sent via pingSender (i.e. right away) as of Beta 54.
- Only one bug did not get uplifted to 54 — a new data point added to the crash ping (a form of client crash id) as of 55.
- Working on identifying top crashers (by signature) currently. Intending to land while 55 is on Nightly.
- Install/Update
- Continue with phase 1 of the Update Agent, which will continue/complete the download of an update even if a session ends.
- Looking into trying to encourage users on FF4.0 – FF35.0 to update past 35 prior to September 2017 (when their update server, aus3, expires).
- Fun with Nahimic: it can (and has) prevented updates. Follow 1356637 for updates.
Form Autofill
- Work week with the sync team this week to start sync integration
- Resolved
- [Form Autofill] Listen for form submissions in autofill code
- Implement label element extraction logic of an input field for filling form
- Add a chrome-only API to preview the text to be auto-filled in an <input>
- [Form Autofill] Edit profile dialog’s cancel and save buttons should depend on OS
- [Form Autofill] Implement an internal-only pseudo-class for highlighting elements with an autofilled value
- [Form Autofill] Polish profile item UI in dropdown menu
- In Progress
- [Form Autofill] Auto-create new profiles based off submitted form data
- Implement the first version of heuristic algorithm.
- Implement the test fixtures for the top 12 web sites.
- [Form Autofill] A utility library for handling full name and separated names
- [Form Autofill] Support “address-line*” fields
- Improve subdialog.js to support multiple dialogs
- Add mochitest for form autofill feature
- Move supported autocomplete field names and elements out from dom.forms.autocomplete.experimental
Mobile
- A “Photon on mobile” (Android+iOS) effort is being kicked off, targeting v57
- Some great new features coming to Firefox for Android – Android custom tabs support; Bookmark folder management; progressive web apps (standalone mode) and WebExtensions
Photon
Performance
- Lots of sync reflow bugs filed, thanks! We now have a big backlog to triage.
- Several fixes landed for sync reflows, especially around interactions with the tab bar (thank Dão!) and the awesomebar.
- Starting to profile startup, and there’s a lot of room for improvement there (loading JS modules lazily from nsBrowserGlue, loading the blocklist from JSON instead of parsing a big XML file).
- A few tips:
- Avoid calling .focus() several times in a row, each focus call currently flushes layout.
- Avoid using setTimeout(…, 0), Services.tm.dispatchToMainThread(…) has less overhead.
- Avoid using Preferences.jsm (especially during startup) if it’s only to have support for default values.
- Avoid importing NetUtil.jsm only to use newURI, use Services.io.newURI directly instead.
Structure
- Work starting on page action menu
- Ongoing work on the hamburger and overflow panel
- Ongoing work on having more than one level of nesting within panel subviews (the slide-to-the-side thing in panels) and update their styling
- All the previous stuff is / will be behind a pref. We aim to flip that pref on Nightly in the near future!
- We swapped the sidebar to the right… and then swapped it back again. Expect more updates to sidebars in the future (with the side of the window stuff still under investigation).
Animation
- Animations themselves are in-progress. We intend to use svg spritesheet animations for animating icon states
Visuals
- johannh reports that shared toolbar button styling is landing today
- Nihanth is making good progress on changing toolbar icons from PNG to SVG
- daleharvey is starting to work on the new location and search bar appearance
Onboarding
- Have walked through questions about the UX and visual specs with verdi from UX in today’s onboarding team meeting.
- Fischer is working on the overlay implementation. Will post a patch to gather feedback about the page injection approach and general architecture
- Rex joined the team this week, and is working on making the onboarding overlay responsive
- Fred is wrapping up his devtool work and will officially join the team after May 1st. He’ll be looking at an autoimport redesign
Preferences
- Performance section for Fx55 is being actively worked on, first patch and feedback received
- Here’s the spec so far
- So far, the user can set the content process count and hardware acceleration settings
- Addressing review comments and adding / updating tests
Platform Audibles
- Pending results of experiment, Flash will be marked as click-to-activate by default starting soon in nightly. Pending results of SHIELD study this will ride to 55 release.
- We’ve got initial page navigation numbers comparing Chrome and Firefox
- In general we’re competitive with Chrome (+-20%), but a few cases show us far worse, in particular back navigation: filed bug 1359400
- A bug that caused windows to be ghosts if touch events were sent is causing large CC pauses in Nightly and Beta. Fix in tomorrow’s Nightly.
- Initial data shows that mean-time-between-failure (MTBF) for input jank:
- MTBF for long input pauses (>2.5s) is 2.27 usage hours
- MTBF for short pauses (250ms) is 0.29 usage hours
- See https://gist.github.com/bsmedberg/53b6cc561bb4fc5685abfa175fde3342
- Caveats:
- Pending input when the computer sleeps could inflate this (unlikely)
- Multiple input during a single hang event could inflate this (likely)
- 70+% of nightly users last week saw GC pauses >0.5s
- ASK: if you see slow things, please install/use the gecko profiler and file bugs!
Privacy/Security
- jkt wrote a blog post about the new “Always Open In This Container” feature in containers.
- freddyb is writing a series of ESLint rules to catch common security problems in Firefox code. First victim: Eval and implied eval.
Project Mortar (PDFium)
- Three milestones are set for better estimating our release schedule
- Milestone 1 (target on Q2): feature landing. We are still trying to land our significant bits into mozilla-central, which are:
- bug 558184 and 1344942: JSPlugin and plugin binary process creation and loading
- bug 1345330: pull in Chromium source code (PDFium + Pepper API layer) into the tree and build with Firefox
- bug 1269760: pdf printing (to paper). The most challenged part is converting PDF to EMF printing format on Windows, because we rely on PDFium to do the conversion. This means that the sandbox for plugin binary processes should allow PDFium to create device contexts and even access files. We are discussing with the Sandbox team
- Milestone 2: release polish. (We haven’t figured out the release target but the conversation is ongoing)
- focus on performance and stability (meta bug 1286791), telemetry and test automation for future proofing
- Milestone 1 (target on Q2): feature landing. We are still trying to land our significant bits into mozilla-central, which are:
- Milestone 3: script support. will NOT in the first release. Still investigating its product value
Search
- New telemetry probes to inform product decisions also landed.
- The last big blockers for one-off buttons in the awesomebar have landed. Two small new ones are being dealt with right now.
- A bunch of photon-related performance improvements also landed.
Test Pilot
- Min Vid is celebrating its largest release yet with the addition of a play and history queue. Add media you want to watch to your upcoming queue, or replay something you missed by clicking the history tab. Min Vid currently works on YouTube, SoundCloud, Vimeo, and direct links to audio or video.
- Pulse has added occasional (less than once a day) prompting for feedback to help avoid biased data. If you want to help Firefox improve performance on your favorite sites, this is your chance. The data from this experiment goes directly to the Firefox Product team to help prioritize improvements.
- Snooze Tabs has gone world wide now supporting 23 locales. In addition to using Snooze Tabs in your favorite language, you’ll also find an Undo button when deleting a snoozed tab.
Here are the raw meeting notes that were used to derive this list.
Want to help us build Firefox? Get started here!
Here’s a tool to find some mentored, good first bugs to hack on.
alexarnaud
wrote on
Johann
wrote on
Jake
wrote on
Wellington Torrejais da Silva
wrote on