Browser Architecture Newsletter 6 (S02E01)

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


FADE IN

DINGY OFFICE INTERIOR

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
S01E04
<https://groups.google.com/d/msg/firefox-dev/Cg_O0VSRf18/tEV1XYdfDgAJ>. In
addition to that:

   -

   You may have seen lots of activity lately on the de-xbl metabug
   <https://bugzilla.mozilla.org/show_bug.cgi?id=1397874>. 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
   <https://bugzilla.mozilla.org/show_bug.cgi?id=1443849> the
   initialization process and extracted the async tab switcher
   <https://bugzilla.mozilla.org/show_bug.cgi?id=1436361> and tab progress
   listener <https://bugzilla.mozilla.org/show_bug.cgi?id=1441816> into
   separate modules. This work caused a tabpaint improvement
   <https://bugzilla.mozilla.org/show_bug.cgi?id=1442651#c28> on talos and
   fixed at least one race condition
   <https://bugzilla.mozilla.org/show_bug.cgi?id=1401846> caused by XBL
   constructors.

Overlays

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
<https://docs.google.com/spreadsheets/d/1Y5ISRmNe4buHu-xt6IUOj2Kvj-JlFlEBr20olzuhuRo/edit#gid=0>
!

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
<https://groups.google.com/d/msg/firefox-dev/mUlCUvgL6Do/By8zt3HKBQAJ>
discussing how we might tackle the beast.  There’s a metabug on file to
remove in-content XUL <https://bugzilla.mozilla.org/show_bug.cgi?id=1446829>,
which is likely to be one of the first parts to hit the cutting room floor.

Fluent

Fluent is working hard to win the hearts of the audience. It’s currently
only starring in small film festivals like Firefox Preferences
<https://bugzilla.mozilla.org/show_bug.cgi?id=1415730>, 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!

Sync.next

Prototyping of new sync approaches based on top of a new storage system
continues.  There are some great 15-30 minute show
<https://vreplay.mozilla.com/replay/showRecordingExternal.html?key=4CktwmuLBFQKVq3>
and tell
<https://vreplay.mozilla.com/replay/showRecordingExternal.html?key=FQqpK6wMIOcdahk>
video
<https://vreplay.mozilla.com/replay/showRecordingExternal.html?key=8eJmwbzRqJewnH1>
recordings
<https://vreplay.mozilla.com/replay/showRecordingExternal.html?key=Cbwy9tKztuCfwvX>
(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.

rkv

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 <https://github.com/mozilla-prototypes/rkv/projects> and
the initial WIP landing bug
<https://bugzilla.mozilla.org/show_bug.cgi?id=1445451>.

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
<https://groups.google.com/d/msg/mozilla.governance/YTTqUzWaJ00/-MopTK71AwAJ>,
“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
<https://bugzilla.mozilla.org/show_bug.cgi?id=1424921>, we’re running
v8.9.4 in the lint automation tasks
<https://bugzilla.mozilla.org/show_bug.cgi?id=1443547>, and we’ll be upgrading
to v8.9.4 for Windows developers
<https://bugzilla.mozilla.org/show_bug.cgi?id=1443545> in Q2.  To further
the effort, Nick Alexander and Gregory Szorc have proposed to require Node
in the build system on dev-platform
<https://groups.google.com/d/msg/mozilla.dev.platform/7sPFmewLoUg/bO7oon4sAAAJ>.
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
<https://docs.google.com/document/d/1SDFupachWhy1r4Ww6-FiZ1P25QRzRZg5KOKl5Kj5zzg>.
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
<https://mozilla.github.io/firefox-browser-architecture/text/0006-architecture-review-process.html>.
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
<https://docs.google.com/document/d/1V-O-5OGx42XSj-cG41X-DSFaBs1emkTJO3HNAAAMTfw/edit?usp=sharing>
.

Nick (cinematic editor for the Browser Architecture production studio)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/firefox-dev/attachments/20180327/67524401/attachment-0001.html>


More information about the firefox-dev mailing list