Firefox/Meeting/25-Apr-2017
From MozillaWiki
Contents
- 1 Actions from last meeting
- 2 General Topics / Roundtable
- 3 Friends of the Firefox team
- 4 Project Updates
Actions from last meeting
- Select a new meeting leader for May 9th meeting.
- Today’s meeting leader is: Johannh
- Next meeting leader is: Tim Spurway
General Topics / Roundtable
(tips/tricks/FYI, productivity improvements, industry news)
- [johannh] We’ve rolled back from Lithium to Kitsune for now.
- [flod] (read-only, on a plane) Localization has now moved from Aurora to Central as part of project Dawn. As a consequence, it’s even more important to not land broken localization pieces to mozilla-central, because it impacts all languages. If you have any doubts about localization while working on your patches, please ping or NI :flod (or :pike)
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!
- [mikedeboer] Kevin Jones made sessions restore using lazy tabs & browsers
- ...which means restoring any session becomes almost instant
- 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
- To assist Quantum Flow efforts and assist in performance monitoring, we plan on turning off add-ons that require shims in Nightly (only).
- Please only run WebExtensions and MPC=True add-ons to help us figure out if we are making Firefox faster or not. See https://wiki.mozilla.org/Add-ons/ShimsNightly and bug 1352204.
- Other add-ons changes:
- Want to try out running WebExtensions in their own process? Of course you do. Set extensions.webextensions.remote to true. Bugs welcome!
- Required permissions on install landed, check it out by installing an add-on like Ghostery in Nightly. But now optional permissions have also landed.
- 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
- Get Activity Stream (Dev channel): https://s3.amazonaws.com/moz-activity-streams-dev/dist/latest.html
- Activity Stream support for Pocket has landed in Test Pilot version (dev channel). Experiment launches May 1st. (thanks csadilek)
- 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
Electrolysis (e10s)
- mccr8 has been reducing the number of memory compartments that content processes use, which should reduce their impact by a few megs each!
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
- Enabling on Nightly this week (for @autocomplete on <input>)
- 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
Lint
- Eslint-plugin-mozilla can now be used via npm for external projects. It includes a “recommended” config which is the one originally in toolkit/.
- Current efforts (mainly mentored bugs):
- Consolidate the current configurations to remove duplicate rules & make it clearer where there are differences in the tree
- Get the whole tree based around the recommended config (currently only parts are, e.g. toolkit/ browser/ security/ storage/ js/ - missing items like services/, accessibility).
- Future efforts:
- General improvements for ESLint to make it easier to work with for developers, quicker to set up, e.g. editor integration, commit hooks, ./mach bootstrap integration etc.
- Where subtrees have extra rules turned on/off, see if we can harmonise those across the whole tree.
- Optimise our rule handling as best we can, and turn on more rules.
- Services.prefs.addObserver, Services.obs.notifyObservers and Services.obs.addObserver’s last parameter is now optional (bug 1355216), and ESLint will report providing a falsy value for them (bug 1356569).
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 (bug 1358921), loading the blocklist from JSON instead of parsing a big XML file (https://bugzilla.mozilla.org/show_bug.cgi?id=1257565).
- 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
- Of note: landed a pref to consolidate and turn on/off all cosmetic animations in browser UI, and incoming flag to enable/disable the photon motion animation changes specifically (nightly only until 57).
- Animations themselves are in-progress. We intend to use svg spritesheet animations for animating icon states
Visuals
- [johannh] Shared toolbar button styling is landing later today
- Nihanth is making good progress on changing toolbar icons from PNG to SVG
- dharvey 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.
- Initial page navigation numbers comparing Chrome and Firefox:
- https://docs.google.com/a/mozilla.com/spreadsheets/d/1Kxn850VasyaG_WfRg3pMInW0hbIT8LP7pRPBYTIpdbM/edit?usp=sharing
- 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)
- Now fixed 1357742
- Multiple input during a single hang event could inflate this (likely)
- Being fixed in bug 1357457
- Pending input when the computer sleeps could inflate this (unlikely)
- 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
- The Places refactoring to support hi-res favicons landed and brought an almost 30% perf win (in two stages) on tp5n! Some followup work still ongoing.
- 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.
Sync / Firefox Accounts
- Work week in MTV this week
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.
- 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
This week I learned
- [johannh] Aside from BrowserTestUtils, there’s also a TestUtils module that implements test framework agnostic helper functions.
- [Standard8] There is a Mercurial commit hook for ESLint - see Mossop’s blog post for how to use it.