This is the sixteenth edition of the XUL/XBL Replacement Newsletter. Since the last edition, we’ve removed the XULDocument implementation and have been helped with XBL removal by two big projects completed by other teams. We’re getting close to finishing the burndown of XBL bindings and are doing some prep work to allow building Firefox without the XBL implementation once that happens.
Over the course of the last year we’ve been working through a plan to remove XUL documents from mozilla-central. We first reviewed all the functionality in XULDocument, then removed obsolete features and migrated ones we wanted to keep into the base Document or into standalone pieces. By the end of July, XULDocument was mostly a skeleton and Brendan Dahl landed a patch that caused all .xul files to be loaded exactly as if they were .xhtml files. After a few weeks with no issues, he removed the XULDocument implementation entirely.
While XULDocument is now gone, there’s still plenty of work to be done to old XUL files:
<window>
), whereas we’d rather them be more like regular HTML documents (<html><head><body>
).
By making our consumers more standardized with the web, they’ll be
easier to understand for the uninitiated, allow tooling to work more
easily, and let us remove more special case code we have for XUL
document elements.The old about:addons page had the largest block of remaining XBL with 10+ unique bindings. The addons team also wanted to add some new features to about:addons, like abuse reporting and inline recommendations. We met last year to coordinate plans for the page and it became clear that the best way to accomplish both of these goals would be to rewrite the old UI with an updated HTML version.
We knew we’d like it to be done mid-year in order to line up with progress on XBL removal, and I’m happy to report that the addons team has now shipped the new version in Firefox 68, which allowed us to remove the bindings. Thanks to everyone who helped to get the new page shipped on time, especially Mark Striemer, Luca Greco, Rob Wu, and David Durst.
Another project that allowed us to remove a number bindings landed in
Firefox 68. QuantumBar is a rewrite of the AwesomeBar which makes
experimentation and maintenance easier. It’s also built with HTML/JS
instead of XUL/XBL, so after it shipped the team was able to remove
quite a few bindings (including the most complex remaining binding: legacy-urlbar
).
Thanks to everyone who worked on this, especially Marco Bonardo, Dão
Gottwald, Drew Willcoxon, Harry Twyford, and Mike de Boer.
There are 7 bindings left, compared to 25 from the last update and 300 from the start of the project. Here’s a list of changes:
places-popup-base
and places-popup-arrow
bindings to Custom Elements.rating
, download-progress
, creator-link
, install-status
, addon-base
, addon-generic
, addon-uninstalled
, addon-installing
, detail-row
.urlbar
binding by inlining the QuantumBar markup into browser.xhtml.urlbar-rich-result-popup
binding which was unused after QuantumBar.legacy-urlbar
binding which was unused after QuantumBar.basetext
binding which became unnecessary after richlistitem
was removed.richlistitem
binding
by enabling all consumers to use the Custom Element which we had
previously landed for extended bindings. In the same bug he also removed
the category
binding which was the last remaining extended <richlistitem>
.autocomplete-rich-result-popup
binding which was unused after QuantumBar.