Firefox Makeover Loses Devs
Written by Ian Elliot   
Wednesday, 08 February 2017

It is difficult to remember how radical Firefox was when first introduced, but now it is being remade using a slightly boring, but potentially more efficient architecture. The problem is that this makes it difficult to create the sort of advanced extensions that made Firefox popular in the first place.



We need to keep in mind that the average user isn't as picky as the average programmer when it comes to a browser. It always amazes me that Chrome has so many users when Windows comes with Edge, a perfectly usable browser. In fact, Edge is an example of what happens when you decide to start over. At first the browser is light on resources and then it starts to grow to meet the demands of the real world. When it reaches middle age, it has implemented most of the mess that HTML, CSS, JavaScript and all of the extras that make up the modern web - WebGL, DRM and so on. At this point the browser starts to creak at the seams and the programmers involved all wish that they could clear the decks and start over. So the old age phase is a constant battle to keep the code base in good shape. This happened with Chrome and it will happen with Edge. 

Firefox, on the other hand, had a slightly different start in life. It implemented an architecture that was pioneering. It used HTML for its UI or for its chrome as we used to call it. When you look at a web page that Firefox is presenting you the HTML doesn't stop at the page borders. All of the menus, buttons, ribbon bars, frames etc are all HTML. The technology is called XUL and Mozilla invented a code layer called XCOM to allow JavaScript to work with XUL. The idea was that XUL could become a universal open source architecture for the web - it didn't.

What XUL did, however, was to allow extensions to be written in HTML/JavaScript in a way that allowed them to integrate deeply into the browser. This is arguably what made Firefox attractive to many users who wanted to change the way it behaved. It certainly made it attractive to extension programmers.

The downside is that XUL is slow, inefficient and difficult to extend. It no longer seems like a modern architecture, more like one whos time has passed because it never became popular. As a result Mozilla are currently rebuilding Firefox without XUL. This is in part exciting and depressing. The resulting Firefox might be more stable and it might be faster but it certainly wont be as customizable.  Part of the change is to adopt the Chrome approach to extensions i.e. WebExtensions. It still isn't clear that Firefox will be able to run all Chrome extensions and vice versa so it is important that existing XUL based extensions are ported but this seems unlikely. 

Take for example the blog post by prolific extension creator Luís Miguel. He writes:

I cannot continue working on my add-ons anymore. I'm sorry, but it's time.

WebExtensions are great for adding functionality to the browser, and without a doubt are versatile and easy to use. However, manipulation of the browser window's interface and functionality will be extremely limited by definition, and even if it wasn't, the implementation of such abilities is nearly impossible to achieve in WebExtensions.

He goes on to explain in some detail what the problems are and how he hopes that Mozilla would continue to support XUL-based extensions. Of course, Mozilla isn't going to do that. Retaining any portion of the XUL approach makes it hard to recast Firefox as a multi-process, fully sandboxed, browser. As Luis puts it:

 "I truly hope this is a move in which they succeed, as the alternative won't be a pleasant outcome to anyone in the online world, and I wish I could be a part of it and help construct and hone it to the outstanding platform they intend it to become. It's unfortunate that we have such divergent paths, I remain pessimistic about Mozilla's current strategy, so I must make a new one for myself. Still, I wish the best of luck to everyone there; I'm still afraid you'll need it."

It seems Firefox is going to continue to chase Chrome and it is difficult to tell if this is technically necessary. Mozilla no longer seems to have the confidence to create something radical like XUL to make its browser stand out. 

Or does it?

You can argue that the creation of the Rust programming language is just such an innovation. It is difficult to be definitive about how important Rust is to the new Firefox, but it is clear that it is making inroads into the codebase. After version 53 Firefox will require Rust to compile at all. This in itself is going to cause problems for downstream projects that use Firefox code to build custom browsers. Not all of them are going to be able to make the change to Rust easily. 

It is clear that Firefox really is losing its separate identity. Mozilla has little choice but to press on with modernization. Rust should make the code more secure and perhaps even faster. The real question is that if it does make a better Firefox will anyone beat a path to its door?

If you want to make your voice heard, in a very small way, then there is a petition on to keep Firefox XUL extensions. At the time of writing it has just 67 signatures. I doubt it is worth the effort because there really isn't anyway Mozilla can stop the project now.


More Information

I cannot continue working on my add-ons anymore. I'm sorry, but it's time

Save Mozilla Firefox's Best Feature

Related Articles

Mozilla Firefox Replacing Gecko With Servo 

Mozilla Funding - Crisis Averted For Now 

Firefox To Adopt Chrome Extensions 

Mozilla Plans Firefox Rebuild 

Pale Moon Highlight Problems With Following Firefox 

Extending Firefox and Thunderbird 

Programming Firefox: Building Rich Internet Applications with XUL 


To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.




Apache SkyWalking 10 Adds Layer and Service Hierarchy

Apache SkyWalking 10 has been released with improvements including a Layer and Service Hierarchy that streamlines monitoring by organizing services and metrics into distinct layers. The Kubernetes Net [ ... ]

GitHub and Gradle Partner To Strengthen Supply Chain Security

Integrating Gradle builds with Github's Actions promotes the best security practices among Gradle users. To do this there's a new official and open-source GitHub Action that generates complete an [ ... ]

More News


C book



or email your comment to:

Last Updated ( Wednesday, 08 February 2017 )