Firefox/Meeting/9-Apr-2019
Today’s meeting leader is: MattN
Contents
- 1 General Topics / Roundtable
- 2 Friends of the Firefox team
- 3 Project Updates
- 3.1 Activity Stream
- 3.2 Discovery Stream
- 3.3 Add-ons / Web Extensions
- 3.4 Applications
- 3.5 Screenshots
- 3.6 Lockbox
- 3.7 Firefox Accounts
- 3.8 Sync
- 3.9 Push
- 3.10 Browser Architecture
- 3.11 Developer Tools
- 3.12 Fission
- 3.13 Lint
- 3.14 NodeJS
- 3.15 Password Manager
- 3.16 Performance
- 3.17 Performance tools
- 3.18 Policy Engine (Not in meeting)
- 3.19 Privacy/Security
- 3.20 Search and Navigation
- 3.21 User Experience
- 4 This week I learned
General Topics / Roundtable
- Feature technical documents for Firefox 68 are due April 12
- [mconley] Array generics (Array.slice, Array.push, basically everything on this list) are non-standard and going away. Please don’t use them anymore.
- [gijs] if you use IRC and missed the update about it given at the project meeting, it’s worth checking out. (Looks like this starts at about 17:57 mark)
Friends of the Firefox team
Introductions
- [johannh] Welcome Paul Zühlcke [:pbz], working student in the Berlin office who will work on the Security & Privacy Engineering team, focusing on Evil Traps for now
Resolved bugs (excluding employees)
Fixed more than one bug
- Carolina Jimenez Gomez
- Dhyey Thakore [:dhyey35]
- Hemakshi Sachdev [:hemakshis]
- Ian Moody [:Kwan] (UTC+0)
- Martin Stránský [:stransky]
- Mellina Y.
- PhoenixAbhishek
- Suriyaa Sundararuban [:suriyaa]
- Trishul
- Yuan Cheng
New contributors (🌟 = first patch)
- Avery Berninger ported about:telemetry to Fluent
- Brian Chen ported the tab context menu, and the synced tabs menu to Fluent
- Yuan Cheng fixed an RTL bug in about:rights
- clement.allain added a Telemetry probe to help gather data about when Telemetry pings fail to be sent
- Dhruvi Butti added a preference to make Web Console autocomplete optional
- Khyati Agarwal got rid of some unnecessary CSS for our menu panels
- Berkay Barlas fixed a bug where Reader Mode wouldn’t return to the default font size when hitting Cmd / Ctrl - 0
- Chris Frey ported about:blocked’s DTDs to Fluent
- lloan:[lloanalas] fixed a glitch where we started showing the full path to a file in the Network Monitor, rather than everything after the domain
- Monika Manuela Hengki got rid of an unnecessary (and erroneous) constant in AppConstants
- mihir17166 got rid of an old PlacesUtils function that we don’t need anymore
- Bisola Omisore (Sola) polished up some CSS for the Network Monitor
- trushita got rid of some dead CSS inside of xul.css
- 🌟 violet.bugreport fixed a bug where the WebExtension Cookie API wouldn’t correctly remove cookies assigned to IPv6 addresses
- Laphets [:Laphets] added a context menu option to copy a JSON response in the Network Monitor to the clipboard
Project Updates
Activity Stream
- Finalized transition document for Pocket to take ownership of about:newtab/home
- “Activity Stream” team assists Pocket until 70 while expanding a Firefox Messaging System (from Activity Stream Router and Contextual Feature Recommendations)
- Improved code coverage by including jsx and approaching 100% like jsm
Discovery Stream
68 focus on feature parity with Activity Stream
Save to Pocket and Bookmark context menu items
Basic personalization with existing domain affinity
- Optimizing performance by loading images lazily as the page will show many more
Add-ons / Web Extensions
Uplifted to 67:
Luca (rpl) fixed an issue with extension options pages not working in private browsing.
Aswan fixed Fennec so that lightweight (read: old) themes (LWTs) could be migrated to static themes (read: new, web extension).
Shane (mixedpuppy) and Luca got some last-minute uplifts so the options for private browsing control for an extension that must be enabled or cannot be enabled are not confusing (thanks to flod for his help).
Rob Wu fixed an issue with webRequest use that could result in some uploaded data loss.
68:
Work continues on long-term projects for 68
- Mstriemer is rewriting about:addons in HTML (recently: theme previews, detail view).
Shane made it so raw manifests are read (for localized manifests), as part of the conversion of search plugins to web extensions.
Kmaglione’s 25-patch behemoth to “convert built-in LWTs to static themes” (which actually includes supporting refactors for everything from error messages to scope identification, startup, and the removal of previous LWT code that blocked those changes). [Not to be confused with the 9-patch “remove LWT gunk” bug resolution, the 4-patch “remove references to LWT preferences” bug, and the bug that was discovered on Android that prevented LWTs from migrating.]
Luca fixed:
- an issue with browser.storage.onChanged not firing when falsey values were removed (! This will hopefully go to 67 also)...
- ...a bug with extensions not respecting global cookie policy, so that network.cookie.cookieBehavior behaves globally as expected…
- ...and a bug with SidebarUI throwing an error onWindowOpen.
Trishul made it so themes don’t have the private browsing toggle and made it so you can’t re-assign an already-assigned keyboard shortcut.
violet.bugreport fixed browser.cookies.remove so it successfully removes ipV6 cookies.
Kmaglione replaced prepare_test(), which isn’t that big a deal to everyone here, but does have the best description I’ve read in a while.
(Contributions from Trishul, violet.bugreport, ariasuni, ntim, and Oriol.)
Also, would love to have someone help with our interview panel, second stage. Contact ddurst if you can help.
Applications
Screenshots
- No updates this week
Lockbox
- No updates this week
Firefox Accounts
- All FxA projects have been consolidated into a monorepo, to make developing and deploying easier. Check out this post from the team for more info 🎪
- Vlad integrated the new device pairing flow into the Android Reference Browser! 📱
Sync
- Check out Edouard’s blog post about how we expose Rust FFIs to Kotlin and Swift. 📝
Rust, Rust, Rust! 🦀
Thom landed a shared networking layer. This lets all our Rust components use Necko (via GeckoView) on Android, instead of the Rust networking stack. 🌐
Edouard is replacing OpenSSL with NSS in our components, and got NSS cross-compiling for iOS. 🔒
Mark is fixing `SQLITE_BUSY` errors caused by multiple write connections—if you’ve seen crashes while syncing history in the Reference Browser, this is probably why—and is starting work on a Sync Manager for Fenix to support “Choose What to Sync”. 🔄
We’re exploring how to integrate some of our Rust components into Desktop, using the Rust XPCOM bindings! Check out Lina’s dev-platform post for some background.
Rust bookmark merging is ready for testing! 📚
Barring any showstoppers, this will be in 68: ride the train to early Beta, then gradually rolled out to Release.
Please install the About Sync add-on, flip the `services.sync.engine.bookmarks.buffer` pref to true, restart, and let us know if you spot bugs!
- Phil has been working on a new durable storage server, also written in Rust!
Push
- No updates this week
Browser Architecture
Developer Tools
Layout Tools
Starting to work on Inactive CSS. This lets users see when CSS declarations are valid but do not have any effect on the page (bug, mockup #1 "how inactive CSS declarations look in the inspector", mockup #2 "example of tooltips telling users why a declaration is inactive").
We're bringing back Print Simulation! (it was removed with GCLI). The bug to add it back into the inspector has landed today! (demo "Toggling the print styles on wikipedia")
The Font editor now supports editing letter-spacing too (bug, demo "controlling letter-spacing from the Fonts panel").
Coming soon: Making CSS warnings in the console more useful. That means, e.g., not emitting warnings for vendor-prefixed properties when corresponding unprefixed properties exist. Or linking warnings to DOM nodes in the inspector. Thanks to jdescottes, nchevobbe and emilio for working on the platform support (bug 1538103, bug 1537876).
Debugger
Uplifting several fixes for column breakpoints and windowless workers.
Column Breakpoints are pretty solid now. As always, please keep an eye out for issues and report any if needed.
Most of the team is busy with general debugger quality issues they've prioritized.
Console
If you switch `devtools.webconsole.groupWarningMessages`, then content blocking messages will be grouped together in console. Much easier to read the output!
Clicking on a location in the console now opens the debugger at the expected column (thanks Mellina (yogmel), bug).
Switch `devtools.webconsole.input.autocomplete` if you want to turn autocompletion off entirely (thanks Dhruvi, bug).
Remote Debugging
✨NEW✨ remote debugging is ON in Nightly now (i.e. if you type in about:debugging you get the new experience).
“intent to unship” notice for webide/connect page has been sent.
Fission
Fission
- Felipe updated about:support to show a more detailed breakdown of process types
Nika is updating OpenBrowserWindow to take a fission: true argument. Expect some Nightly-only UI soon to open Fission Windows, similar to how we developed Electrolysis. (e10s2: Electric Boogaloo)
This bug also adds a “[F]” suffix to tab tooltips on Nightly to indicate that the tab can run out-of-process iframes.
- mconley has a first pass on a BrowserChild.jsm port to the JS Window Actors if you’re interested in seeing what that looks like
brennie has ported a good chunk of RemoteWebProgress / WebProcessChild to C++ (while also making them Fission-compatible)
Some small chunks remaining, but this has also yielded some nice performance improvements
Lint
Landed the automatic ESLint configuration for test directories
Thinking about reorganising other test directories which aren't in the standard setup to match it, e.g. browser/components/customizableui/test -> browser/components/customizableui/test/browser
- ESLint versions have been bumped.
- Gijs landed the patch that allows basic linting of xul files.
- Ian Moody continues the work to roll-out the ESLint rule no-throw-literal across the tree.
- dom/bindings, dom/push and dom/svg are the latest directories to be enabled for ESLint.
NodeJS
Password Manager
- Access to the logins list from the entry points not tied to a specific website (about:preferences and the main menu) has nearly doubled in the week-and-a-half since adding the main menu item.602x204px
- Access from a page context (filtered to show logins for that domain) has grown over 50x in just two days since enabling the autocomplete footer!
Fixed
In Progress
Performance
- Firefox Front-end Performance Update #16 posted, highlighting some changes that are going out in Firefox 67
- We’re getting close to landing a test that tracks startup mainthread IO. Once it lands, adding new startup mainthread IO will cause test failures on infra.
We’re also digging through the list of existing mainthread IO that happens at some point during Firefox startup, filing bugs to get rid of, move off-main-thread, or delay, anything that isn’t strictly necessary for startup itself:
- Initial startup numbers from improving readahead on xul.dll are looking very promising
Performance tools
- (no update this week)
Policy Engine (Not in meeting)
Landed support for a whitelist of preferences
Will allow us to add prefs people want without the whole process
- Fixed a bug where failed extension installs didn't reinstall
- Adding basic support for ExtensionSettings for extension whitelisting
Privacy/Security
Erica added new prefs for controlling features that are available in content blocking
Things like cookieBehavior or Tracking Protection are now set by these prefs on Desktop Firefox:
- browser.contentblocking.features.standard
- browser.contentblocking.features.strict
We’re running experiments to reduce annoying permission prompts in Firefox
Telemetry shows an increase in acceptance rate to about 30% (and a drop in total prompts shown of about 97%)
No compat bugs filed so far.
- We now log a console message for TLS 1.0 and 1.1 (bug 1512505)
- Erica made it so that we clear storageAccessAPI permissions when history is cleared.
- Johann unforked the cert error pages!
- For compat reasons, we enabled the FIDO U2F API targeting 67 uplift
- Paul defeated evil sites that would change their sub-domain to infinitely ask for permissions
Search:
No user-facing updates this time, but lots of ongoing work on multiple fronts:
New search codes
Better test coverage
User Research and experiments
Quantum Bar:
- Fixed a regression causing us to get search suggestions for file:// uris
- Refining details about the first Quantum Bar experiment, to be run in Q2
- 35 bugs fixed in Quantum Bar in the last 2 weeks, 13 open bugs to reach mvp
User Experience
This week I learned
[MattN] How to automate GDB/LLDB/WinDBG to run some command when they hit a breakpoint e.g. print the backtrace
Useful for debugging intermittent failures where a breakpoint would get hit very often during the test but it would be difficult to use a breakpoint condition (e.g. the condition is related to the test task but the breakpoint is in Fx code).
- [johannh] If you use content process actors without specifying a “matches” field, it will use a default MatchPattern, but unlike WebExtensions it will match about:pages because of this flag. If you want to avoid that you might need to do something like this.
- [mconley] Maybe this is old news, but apparently, we now have more Fluent strings than DTD strings. \o/