Browser Architecture Newsletter #7 (S02E02)
It’s been a long six months since the last Browser Architecture newsletter. Short and sweet and no theme for this newsletter.
XUL/XBL Replacement
The XUL/XBL replacement project is churning ahead. There are two major goals right now:
Replacing XBL bindings with Web technologies like Custom Elements; and
Making the main browser window be an HTML document with (mostly) HTML DOM elements instead of a XUL document with (mostly) XUL DOM elements.
There’s been progress on both fronts; more details can be found in the latest XUL/XBL Replacement newsletter.
Fluent
Fluent is the localization system that Firefox intends as the replacement for XML and DTD files. The first Firefox feature to convert to Fluent is about:preferences, which now has only 10 old-style strings remaining (down from an initial 1100 old-style strings)! Behind the scenes, a big hurdle in the path to smooth future conversions landed recently: Bug 1455649 integrated localization deeply into the (chrome-only) DOM.
Sync and storage
rkv is a new lightweight Rust key-value storage engine built on top of LMDB. We’re looking at using it for a variety of components, including XULStore and the search cache. In order to let others “kick the tires” easily, Myk Melez landed rkv into mozilla-central, although it’s not yet compiled into Firefox for Desktop. If you’ve got some keys and some values that you’d like to persist efficiently, I know a guy.
Mentat was to be our heavyweight store for user data that we wanted to sync between devices. But we couldn’t bring the technology to a meaningful market quickly enough, so we’re not pursuing Mentat any further. The Application Services team is rapidly building a cross-platform Sync 1.5 stack in Rust and that will be the vehicle for improving the Firefox Sync experience for the foreseeable future.
Node time!
We have made significant progress toward enabling Node.js tooling in the Firefox build system. This effort truly spans teams and projects: the build maintainers and the browser architecture team made a case for Node.js and set technical direction; the GitHub Integration working group incubated the effort; and Firefox feature teams including the Activity Stream team (Dan Mosedale), the ESLint team (Mark Banner), and the Devtools team (Jason Laster and Alexandre Poirot) are driving the work across the line!
The build now requires Node.js by default. Up next is adding the ability to use this from moz.build files and then drafting proposals for how we’d like to manage node_modules. The first consumers will be the Firefox debugger, Activity Stream, and the ESLint integration. Thanks to the many folks who have helped and continue to help this project forward.
Firefox technical leadership in the module ownership system
Since the last newsletter the new Firefox Technical Leadership Module has been formed. You can see some of the discussion around it and its purpose in the governance thread. The FTLM has representation from the Browser Architecture team in the form of Dave Townsend.
You can always reach us on Slack or IRC (#browser-arch). This newsletter is also available as a Google Doc.
Nick (who promises a theme next time)