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.
XULDocument is gone
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:
- The file extension is still .xul so those files will need to be converted to .xhtml. Since they are already loaded as such, this should involve only renaming files.
- Most still contain a “XUL like” DOM structure (
<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.
Old about:addons removal
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.
Old URL bar removal
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:
- Alex Surkov converted the
places-popup-arrowbindings to Custom Elements.
- Andrew Swan removed much of the old about:addons codebase, which included a bunch of bindings:
- Dão Gottwald removed the
urlbarbinding by inlining the QuantumBar markup into browser.xhtml.
- Dão also removed the
urlbar-rich-result-popupbinding which was unused after QuantumBar.
- Harry Twyford removed the
legacy-urlbarbinding which was unused after QuantumBar.
- I removed the
basetextbinding which became unnecessary after
- Tim Nguyen removed the
richlistitembinding 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
categorybinding which was the last remaining extended
- Tim also removed the
autocomplete-rich-result-popupbinding which was unused after QuantumBar.