Browser Architecture Newsletter 6 (S02E01)

Nicholas Alexander nalexander at
Tue Mar 27 16:21:18 UTC 2018



Camera zooms out to reveal BROWSER ARCHITECTURE ENGINEER, typing furiously.

It’s S02E01 of  Browser Architecture Newsletters!

Desktop Technology Stack

The Browser Architecture group is working hard to tackle some large
problems with the technology stack used to build Desktop Firefox.

XBL Replacement

The latest updates can be found in our spin-off, XBL Replacement Newsletter
<>. In
addition to that:


   You may have seen lots of activity lately on the de-xbl metabug
   <>. That’s because
   :enn, :paolo, and :timdream have been given starring roles on the project!

   Now that tabbrowser is no longer implemented with XBL, :dao has driven
   forward a bunch of long-needed cleanups to gBrowser. He simplified
   <> the
   initialization process and extracted the async tab switcher
   <> and tab progress
   listener <> into
   separate modules. This work caused a tabpaint improvement
   <> on talos and
   fixed at least one race condition
   <> caused by XBL


XUL overlays have been written out of this season!  You might remember
overlays from such timeless frustrations as trying to understand how
Firefox menus and hotkeys are combined, which is partially described by the
following diagram:

:bdahl has completely removed overlays, and you can binge-watch the carnage
in the tracking spreadsheet

XUL removal

The Browser Architecture team is beginning to focus on the larger goal
after XBL replacement -- XUL removal.  This is a large (!) and hairy (!!)
area, so :bgrins wrote the first draft of a screenplay
discussing how we might tackle the beast.  There’s a metabug on file to
remove in-content XUL <>,
which is likely to be one of the first parts to hit the cutting room floor.


Fluent is working hard to win the hearts of the audience. It’s currently
only starring in small film festivals like Firefox Preferences
<>, but it seems to
work well with the XBL removal, and has led to some nice cleanups in the JS
code all around the component.

Using some pretty rough estimations we started the cycle with close to 700
DTD entries, landed removal of 300 of them, and have removal of another 200
under review right now. At this pace people have started murmuring about
Preferences becoming DTD free by the time Firefox 61 hits beta!

Prototyping of new sync approaches based on top of a new storage system
continues.  There are some great 15-30 minute show
and tell
(sadly, Flash is required to watch). Q2 OKR planning for the Sync team is
eagerly scoping out a better future and how to get there.  Look for the
companion newsletter (a mini-series?) in the near future.


We recently reviewed a proposal to migrate storage currently (ab)using ad
hoc flat files, JSON files, preferences etc. to a lightweight Rust
key-value store built on top of LMDB, netting us a faster, more durable,
multi-process and cross-platform storage capability.  The review was
largely a success (link to follow); the next steps are to move forward with
thorough documentation and guidance for consumers, evaluate outstanding
open questions (particularly around verifying platform support), and then
to begin work on shipping vehicles within Firefox. We're initially looking
at XULStore and the search cache as suitable candidates. You can track this
work in the repo <> and
the initial WIP landing bug

How We Work

Browser Architecture is also investigating less technical ways to increase
Firefox’s engineering velocity.

Modernization to reflect Firefox technical leadership in the module
ownership system

As described in a governance mailing list post
“We propose to restructure the Firefox-related modules under control of a
new “Technical Leadership Module Committee” (TLMC).”  Our own Dave Townsend
is one of the six proposed committee members. The TLMC will be working on
improving engineering practices that apply across all modules that feed
into Firefox.

Is it time for Node?

We’re tackling how to better support the many parts of Firefox that use
Node.js.  We’re starting to see Node gain more acceptance: thanks to Mark
Banner and others we’re installing Node as part of mach bootstrap
<>, we’re running
v8.9.4 in the lint automation tasks
<>, and we’ll be upgrading
to v8.9.4 for Windows developers
<> in Q2.  To further
the effort, Nick Alexander and Gregory Szorc have proposed to require Node
in the build system on dev-platform
That post talks about Firefox 61, but we’re still working through technical
details and don’t expect to require Node before Firefox 62 at the earliest.

Come work with us!

Joe Walker, who manages Browser Architecture, is spearheading
temporary rotations
into the Browser Architecture group
Engineers from across the organization will join the group for a few months
to work on a cross-cutting concern in their area with the support of the
team and our architecture review process
If you’re interested in rotating in, contact Joe directly.  (We always need
guest stars!)

You can always reach us on Slack or IRC (#browser-arch). This newsletter is
also available as a Google Doc

Nick (cinematic editor for the Browser Architecture production studio)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the firefox-dev mailing list