There's only so much an extension author can do if WebExtensions doesn't expose an API corresponding to one which was critical in the XUL extension.
I'm in that position myself right now, having volunteered to take over Firemacs development before I found that there is no way to listen for keypress events in browser chrome. You can only do that in injected content scripts, which don't work except in web content and are also affected by CSP. Until that changes, there's nothing that I, or the Vimperator developers for example, can do to provide an acceptable user experience.
It's super frustrating, and I don't blame users of such extensions for being angry about the indefinite lack of a future for them. But I also don't really blame Mozilla for prioritizing the implementation of the necessary APIs below other tasks which are important to a larger fraction of the Firefox user base.
As a Mozilla dev, I fully support the move to WebExtensions, but I also disagree with you.
Porting an add-on to a whole new architecture is lots of work. People who do this on their spare time, or small companies, or companies relying on contractors, may not have the time/resources/will to do it, even within two years. Also, in some case, the APIs are simply not available.
As for why I believe that the move to WebExtensions was necessary and could not be postponed further, I have written a few lines in another thread: https://news.ycombinator.com/item?id=15695854
Sure, but what I'm arguing against here in this thread is the pervasive "Mozilla is evil, they only killed XUL extensions for fun". Just read this thread.
When actually millions of users get a vastly superior Firefox. Many, many extensions have been updated. And some extensions – mostly niche ones haven't. I love that trade-off.
If the required WebExtension APIs don't exist (per nicoburns' comment) I'm not sure what you want the extension authors to do about it.
"Complain loudly" was the strategy that got Mozilla to implement Tree Style Tabs as a WebExtension feature so that the addon could be rewritten for FF57, but there are presumably still legacy extension capabilities that haven't gotten that treatment.
The user diligently updates Firefox, optimistically hoping that this new version will be as awesome as the previous ones that vastly improved performance. Firefox starts and, suddenly, a bunch of things that used to work stop working.
Why?
Well, essentially, something that they can't hope to comprehend and that they never asked for and had no input on just ruined their browser.
What do you think they are going to conclude? That extension developers are to blame?
Nope.
Their conclusions are going to be something along these lines:
"Those idiots (Mozilla) broke Firefox... again"
"Firefox 57 is a buggy piece of Turd"
"I'm tired of dealing with this shit. I'm switching to Chrome"
Users won't blame the extension developers. They will blame Firefox.
Mozilla should have done a better job with this transition. "Upgrading" an extension to use the new API requires a complete rewrite, AFAIK.
It is TOTALLY unreasonable to expect that a bunch of developers - who probably are doing this for free - are going to be able to quickly migrate their extension to the new API - especially considering that the API isn't even stable yet, and is missing a ton of functionality.
This is the mother of all breakages. Mozilla should've tried to smooth this transition, not just simply pull the pin on the web extensions grenade and yell "Catch!".
They screwed this up big time. Time will tell what this will do to their ever shrinking market share.
> Users won't blame the extension developers. They will blame Firefox.
What's funny to me is that these 'users' you describe are apparently on HN - I thought this place was mostly software devs, but it's striking how many posts seem to fundamentally misunderstand the decisions made by Mozilla.
> This is the mother of all breakages
I would be that somewhere above 90% of FF users will be unaffected. Given Firefox's market share that's still a lot of people, but let's not pretend like they broke everything overnight.
> Mozilla should've tried to smooth this transition, not just simply pull the pin on the web extensions grenade and yell "Catch!".
You're implying that this was an unexpected change that Mozilla was not forthcoming about. It is the opposite. We've all known about this for months.
The value prop of no longer being tied to an extremely old system is significant and you're not giving it any of its due credit.
The users' perspective, in short: before 57, I had one browser that was fast but lacked all the UI tweaks that I had grown accustomed to over the course of a decade or so (Chrome/Chromium), and one browser that maybe wasn't so fast but had all those UI tweak (Firefox, which I used all the time).
Now I have not one but two fast browsers with a UI that I do not like.
It's perfectly understandable that Firefox devs would love Firefox to be more like Chrome, but that has nothing to do with what the (existing) users want: they already have Chrome available, they are not holding their breath waiting for Firefox to become Chrome.
> "I'm tired of dealing with this shit. I'm switching to Chrome"
That was already happening, where "this shit" was crippling performance issues, and a lack of sandboxing and modern security features.
I expect Mozilla believed that the user fallout from breaking some extensions would be less than the existing continuing fallout of the ongoing issues.
> Mozilla should've tried to smooth this transition, not just simply pull the pin on the web extensions grenade and yell "Catch!".
You do realize that this transition has been going on and has been publicized for years, right?
1) Mozilla isn't retarded. They've done market research on this.
For example, in Sep. 2015 around 40% of users did not use any extensions at all. Another sizeable number of users is going to have their ad blocker and nothing else. Even with 2, 3 or 4 extensions, it's unlikely that you're going to experience a breakage, and if you do, it's likely that you'll find a replacement.
Average users rarely use unpopular extensions and popular ones either are maintained or will have a replacement made. There are some semi-popular ones that currently can't yet be fully recreated, but those are the types of extensions that change so much about the browser that average users won't be using them anyways.
2) Users aren't retarded. I know, we like to act like they are, but only the most cynical are going to switch browsers, because of this. Out of spite. It does not make any sense to switch to a different browser, just because the browser that you're used to has become different. Nor does it make sense to switch to Chrome, which is still by far less extensible than Firefox 57, just because Firefox has become somewhat less extensible.
3) The core of the API is more than stable. It's Chrome's extension API, that's been battle-tested in Chrome for years. Most extension developers will not need more than that. And it's most definitely not missing a ton of function, especially not things that non-power-users need.
4) Their market share is not anymore shrinking. It's been growing again since the release of Firefox 48. That was the release which shipped the first iteration of multiprocess. They could not have shipped multiprocess as early as that, if they did not know legacy extensions to be deprecated now with 57. Because the majority of legacy extensions are not multiprocess-compatible and neither would have been updated to be.
AMO would be reverse Russian Roulette where only roughly 1 out of 6 extensions will not kill your performance. That's just as well something you can't expect average users to understand and it would be like that for the next few years still.
So, yeah, they did rush this, but it was to save their market share. Had it continued to drop like in the half year before Firefox 48, we'd now be deep into negative user numbers.
> Even with 2, 3 or 4 extensions, it's unlikely that you're going to experience a breakage, and if you do, it's likely that you'll find a replacement.
This is simply not true as there had been many popular UI-centric extensions that just can't be replicated as webextensions due to lack of API support. "Advanced UI features belong in extensions, not in main" had been the Firefox mantra for many years and negativity about 57 is the logical consequence.
Which are the type of extensions that change so much about the browser that average users just won't use them.
When I discovered Classic Theme Restorer, Tab Mix Plus and similar, I was already a semi-pro user and I still found them intimidating.
There were a lot of checkboxes and they changed around a lot of things and I didn't yet know how to create a separate Firefox profile where I could've actually just wildly tried different options without the fear of something breaking irreversibly.
the only plugin that broke for me was NoScript and I switched to uMatrix which I like even more. i'm not exactly a firefox power user i guess but i am a web developer who is definitely an advanced user, and i was barely affected by this.
> most of the bickering is "I want XUL and nothing else"
I don't know that that's fair. The discussions I've seen and participated in have revolved around equivalency, not identity.
> how many of those lamenting the absence of some API have actually told Mozilla what they need?
The Vimperator devs and some users have been very clear on that point.
> Mozilla has been very responsive and helpful. Not everything was possible, but the problem lies mostly not on their side.
Mozilla has indeed been responsive and as helpful as they can be given the constraints under which they operate. But extension developers aren't really to blame here either, because if WebEx doesn't include an API you can use to do what you need to do, then what option do you have? There's frustration on all sides - Mozilla devs, extension devs, and users. But we're all pulling together toward the same ultimate goal. I don't know what improvement anyone expects to elicit by trying to assign blame.
> I don't know that that's fair. The discussions I've seen and participated in have revolved around equivalency, not identity.
I've developed a couple of Firefox extensions. One of those was an e10s-compatible replacement for Vimperator, because Vimperator relied on XUL[0]. (Vimperator broke long before Firefox 57, because e10s broke backwards compatibility with some extensions long before Firefox 57 did).
The old extensions "API" was essentially a way to plug into arbitrary parts of the Firefox codebase. A Firefox developer has previously said that "[previously] the entire codebase was our extensions API".
That's not scalable or maintainable in the long-run, and I would assume that any software developer who's worked on a moderately-large project would appreciate that allowing arbitrary entrypoints and coupling makes it impossible to do literally anything without breaking some part of that extremely ill-defined API.
It's really, really unfortunate that moving towards a modern approach to browser extensions meant breaking work that people had put in over the last fifteen years, but... there's literally no other way to do it. Firefox was the first non-experimental browser to allow browser extensions, and there are both benefits and costs to being first-to-market. In this case, the downside is that they ended up accruing this technical (maintenance) debt.
As someone who's written Firefox extensions that are no longer available due to the switch, I'm disappointed that this had to happen. But as a Firefox user, I'm much happier having Quantum and Electrolysis (e10s), and if the tradeoff is between those two directly, I'd choose Quantum + Electrolysis over those extensions.
By "equivalency" I mean having access to equivalent APIs for specific functionality, as for example the inability to listen for window events that's breaking Vimperator and friends. (And electrovim! Have you noticed that it stops working on chrome pages that don't run scripts? Has the CSP bug been fixed? I didn't think it had been.)
Maybe it's not possible to support window event listeners without breaking e10s. But I see no a priori reason why it should be.
I haven't seen anyone in a serious discussion demanding 100% XUL API compatibility or feature coverage. (For the purposes of this comment, most discussion of the issue on HN is unserious.)
"As someone who's written Firefox extensions that are no longer available due to the switch, I'm disappointed that this had to happen. But as a Firefox user, I'm much happier having Quantum and Electrolysis (e10s), and if the tradeoff is between those two directly, I'd choose Quantum + Electrolysis over those extensions."
Well, I'm a Firefox user, not an extension developer, and Pentadactyl happened to be one of the extensions that made using Firefox bearable. Now that it's permanently broken, I'll be moving to another browser which can offer a similar experience: Qutebrowser.[1]
> Well, I'm a Firefox user, not an extension developer, and Pentadactyl happened to be one of the extensions that made using Firefox bearable. Now that it's permanently broken,
Pentadactyl was all-but-abandoned for years before Vimperator was broken. It's been almost four years since it saw a release - which was for Firefox 24.0-30[0]. Its website still links at least three links to code.google.com on the front page! (I'm actually shocked if Pentadactyl has even been working for you until now, given that it was supposed to break a few release cycles ago - when e10s shipped - but maybe you just haven't updated Firefox in a while, or you manually disabled e10s.)
Vimperator - which is also incompatible with Firefox 55+ for the same reasons Pentadactyl is - at least has been receiving maintenance attention in the meantime[1], and also provides alternatives for use with Firefox 55+ (and 57+).
If you'd rather switch browsers entirely than use something like Vimium[2] on Firefox, go ahead, but it's hard to justify holding an entire browser back just to maintain compatibility with an extension that has been abandoned by its own maintainers. As I mentioned, I can't even reasonably expect them to hold Firefox back to maintain compatibility with the extensions I wrote and actively maintained. As a Firefox developer, I'm disappointed, but as a Firefox user, I'm more than happy enough with the changes to make up for it.
Despite there being no official releases in years and being abandoned by its official developers, Pentadactyl was kept afloat by its users, from whom you could still get fixes and releases through google code and google groups. I also fixed some things for myself, based on help from the community. Despite all this, it did finally completely break recently (before FF 57), and I just had to not update FF for a while until I found an alternative. I used PaleMoon for a while, but now I'm switching to Qutebrowser.
"it's hard to justify holding an entire browser back just to maintain compatibility with an extension that has been abandoned by its own maintainers"
Pentadactyl was far from the only extension that Firefox decided to break. Many other extensions were affected.
As far as Pentadactyl itself went, the reason its maintainers abandoned it was because Firefox kept breaking compatibility with it over, and over, and over, and over. They understandably got frustrated by that and moved on to other things.
Then, when Firefox put their foot down and announced that they'd be changing the browser so that Pentadactyl will never again be able to work on it, no matter what its developers did, a lot of people didn't see the point of putting more effort in to. It survived only because of the dedication and help of the remaining community. Now there's nothing even they can do. Not with Firefox anyway. So we're moving on to something else.
I think that's a great point: it's difficult, near impossible, to make any particular piece of software contain 100% of the features that 100% of people want. Especially in the case of a tiny-minority feature, a specialized version that caters to your needs sometimes makes the most sense.
I just worry that people using some of these alternative browsers are opening themselves up to security issues since those code bases are less well-tested for security problems, and often they don't have the developer resources to implement things like process isolation and sandboxing.
> I just worry that people using some of these alternative browsers are opening themselves up to security issues since those code bases are less well-tested for security problems
Absolutely. The web browser is one of the most notorious attack vectors on computers these days. I find it hilarious that a vocal minority of power users is protesting this _massively impressive_ Firefox release just because they lost Tree Style Tabs or some extensions for downloading videos. Switching to a legacy fork like Waterfox or Firefox 52 ESR is not an enlightened move!
Well, I'm a Firefox user, not an extension developer, and I much prefer a performant browser with modern security features (and the ability to implement more in the future, which they couldn't do pre-57). I've lost a couple extensions during the move, but the tradeoff is well worth it to me.
And it sucks that you don't feel that way -- it really does -- but I suspect the vast majority of Firefox users feel as I do, and in the end Mozilla needs to cater to the most users possible.
electrovim is in no way a replacement for Vimperator. It's a couple of keyboard shortcuts. None of the current vim-like plugins for FF57 match what vimperator/pentadactyl can do. The problem I have isn't that they broke legacy things, it's that they broke legacy things without offering a path to rebuild them.
> electrovim is in no way a replacement for Vimperator. It's a couple of keyboard shortcuts. None of the current vim-like plugins for FF57 match what vimperator/pentadactyl can do.
Uh, yes, I'm the author of Electrovim, so I'm quite aware of the functionality that I was literally unable to implement because no equivalent API existed.
> The problem I have isn't that they broke legacy things, it's that they broke legacy things without offering a path to rebuild them.
Did you not read the rest of the comment, where I explain why there is no feasible way that they could have offered any path to rebuild them?
> I've developed a couple of Firefox extensions. One of those was an e10s-compatible replacement for Vimperator, because Vimperator relied on XUL[0].
Replacement for Vimperator implies it's, well, a replacement for Vimperator.
> Did you not read the rest of the comment, where I explain why there is no feasible way that they could have offered any path to rebuild them?
I don't see how your addressed that. Yes, existing extensions that used XUL would have to be rewritten using new APIs. My issue is that those APIs don't even exist. That there are good reasons the old APIs aren't available anymore doesn't address the lack of new APIs that offer anything near equivalent functionality.
Is it impossible to support window or otherwise chrome-level event listeners and also e10s? As I said in a prior comment, there seems no a priori reason that should be the case.
> Is it impossible to support window or otherwise chrome-level event listeners and also e10s?
Yes, because those things are now running in different processes, which means it requires IPC, and allowing extensions to communicate over IPC with the chome throws all the benefits of e10s out the window.
It looks like it's been broken down into a number of separate issues since then, and there's some discovery yet to be done on how exactly the implementation will need to proceed - I feel like Firefox 58 is very optimistic, but I also feel like saying "this is never going to happen" is pretty premature at this point. At the very least, the Firefox devs don't seem to agree.
My browser and extensions did useful things yesterday that they do not do today. Who changed something in the meantime?
Obviously I paid nothing for Firefox and Mozilla owes me the same nothing in return, but if it wants to keep users and remain significant, breaking arguably its main advantage might not be the best plan.
As a Firefox user (and dev) I believe that breaking some extensions today in a clean manner that will let us maintain compatibility in the future is way prefereable than randomly breaking extensions with every single version of Firefox, as this has been happening forever. Plus this break has set us free to actually improve Firefox and make it competitive again, something I believe is in everybody's interest. I realize that it's painful for the users who lost some add-ons upon which they relied, but I believe that given the alternative, this was the best choice possible.
I was a software guy long before I was a web guy, so I completely understand the desire to clean up internals.
Unfortunately, as a user, the bottom line is still that if I update I will receive very little benefit and lose a lot of very useful functionality. It's not just the odd extension for me, it's things I use every day that are the most important reason I've stuck with Firefox.
I accept that I'm probably in a minority and that Firefox is going to go with what makes Mozilla money and pays the bills, which in turn probably means what attracts larger user demographics at the expense of the rest of us.
Mozilla in turn will have to accept, as I'm sure it does, that it's going to turn off power users and that it's going to prompt legitimate questions over why anyone would go with Firefox, even with these developments. The obvious alternative for most people, Chrome, already had the performance and architectural advantages, but previously lost out on flexibility and privacy concerns, and unfortunately Mozilla just surrendered a significant part of those advantages.
I can understand your point of view. I believe that better security, performance and privacy is worth the partial (and hopefully mostly momentary) loss of customization, but YMMV.
FWIW, Firefox 57 is currently looking like a net loss in terms of security and privacy. A significant number of the extensions people have previously used for blocking or restricting potentially intrusive or dangerous behaviours seem to have been lost, in some cases without equivalent WebExtension alternatives being available.
If you're arguing that 57 is now more secure and better for privacy, perhaps you know something that people like me don't, and if so, maybe it's worth highlighting whatever built-in functionality can now replace those protections more in the documentation/marketing?
> FWIW, Firefox 57 is currently looking like a net loss in terms of security and privacy. A significant number of the extensions people have previously used for blocking or restricting potentially intrusive or dangerous behaviours seem to have been lost, in some cases without equivalent WebExtension alternatives being available.
First, I'd like to put things in context. When you write "Firefox 57 is currently looking like a net loss in terms of security and privacy", I suppose that this might (arguably) be true for you and a few other power users, but for the ~100% of users who do not use these power add-ons, their life will only be improved by the change.
Plus, I actually think that all the add-ons in the domain either have been ported or have an equivalent that has been ported. Certainly all the ones I use have been. Am I missing something that people actually use for their protection?
> If you're arguing that 57 is now more secure and better for privacy, perhaps you know something that people like me don't, and if so, maybe it's worth highlighting whatever built-in functionality can now replace those protections more in the documentation/marketing?
There is only so much message that marketing can propagate in a single campaign. I expect that we'll have another marketing campaign in a few months detailing what we've been doing for security and privacy. Especially since we'll have exciting stuff to showcase :)
Let me give you a few keywords of stuff we've been doing to improve security: a gazillion fixes, better static analysis, replacing some critical components with Rust, introducing the first formally proved implementation of cryptography components in a browser, sandbox improvements, etc.
On privacy, I'll admit haven't really paid attention, but the new add-ons you install don't have access to your private data without your consent, I remember that we've been working working with Tor Browser to reduce fingerprinting, etc.
I find it interesting that your instinctive view of privacy seems to be about restricting add-ons. That's certainly a useful thing to do, as we can see from some of the recent sell-outs that have meant once-trusted extensions silently became privacy loopholes. Even so, personally I'm more worried about the privacy implications of tracking and other covert behaviours by web sites/apps, and that's where the extensions you could run with Firefox really came into their own.
Someone has helpfully made a spreadsheet showing many old extensions and possible 57-compatible replacements, with notes on where things are a full replacement, there is limited functionality, there are known privacy issues, etc. I can't immediately find it again, so apologies for the lack of link, but have been references posted in some of the major online forums today, so perhaps you'll come across it. One of the things that was striking was that a lot of the extensions relating to blocking content or selectively toggling behaviours like running JS seem to have broken and not to have full replacements. I know that NoScript was a big one (though I've seen reports this evening that a 57-friendly version has just been released in that particular case). Quite a few ad-blockers and similar tools also seemed to have been affected, along with extensions like Greasemonkey that allow running customised JS and some analogous stylesheet customisers, and a few aimed at controlling the use of cookies and other data storage mechanisms.
For completeness, let me also say that the internal security improvements are all welcome, as is the continued separation of search from address bar and general lack of trying to spy on everything happening in the browser that seems to be ever-increasing in certain other quarters.
> Even so, personally I'm more worried about the privacy implications of tracking and other covert behaviours by web sites/apps, and that's where the extensions you could run with Firefox really came into their own.
This definitely makes sense. I know that we have new APIs that make some of it much easier to implement, but I imagine that they still have some limitations (I haven't checked). My hope is that APIs will be progressively extended to remove these limitations.
Regardless, I believe that we're better off with a sane API that add-on developers can trust, that we're going to maintain and extend, rather than with all-powerful stuff that breaks randomly :)
Firegestures had 270k users, according to AMO. A quarter of a MILLION people.
You broke mouse gestures entirely on MacOS and Linux, and didn't allow them to work well on Windows (DOM needs to load before gestures can be used because you force script injection, don't work on internal pages, don't work on top of browser chrome, etc).
Playing the devil's advocate: the top two most popular extensions (as listed on [1]) are Adblock Plus at ~14 million, and uBlock Origin at ~4.2 million users. That means Firegestures has about 2% of the top extension, and about 1.5% if you combine the two (assuming not many people use both ad blockers at the same time, especially since they use the same lists). That's just the people with those extensions. And it appears that that's active daily users (as opposed to people have downloaded it at some point in a Firefox that is no longer being used).
I do agree that Mozilla has handled the transition terribly; they should have made the API available first before removing everything. That way they would at least have the excuse of it being the add-on authors not cooperating. The way they've done it, before actually making the things possible, just makes it look like they're arrogant.
> ... but if it wants to keep users and remain significant, breaking arguably its main advantage might not be the best plan.
I fully expect that this move will certainly lose Mozilla a few Firefox users, but on balance it'll be a net win: they were already losing users to performance problems and lack of modern security features. The users the lose due to lost extensions will be tiny compared to the users they won't lose in the future now that Firefox actually feels like a modern browser performance- and security-wise.
I expect Mozilla knows a ton more about their users than we do and any guesses about user retention due to this move are pure speculation (including what I wrote above). I trust them to do the right thing here, a trust they've earned over the past (nearly) two decades that I do not place in, say, Google & Chrome.
> I fully expect that this move will certainly lose Mozilla a few Firefox users, but on balance it'll be a net win
I certainly hope so, for the sake of an open web. Hope they can take on the universal pushing and bundling that Google does with Chrome. Anecdotally I can say that none of my acquaintances are even aware of Firefox because Chrome can with their OS and they never saw a need to look beyond it. I hope Mozilla has a clear strategy to advocate and market Firefox, since technical merit alone is not going to out-compete Chrome's entrenched position.
I think it's a little unreasonable to point blame at a group of people who largely built extensions on their own time, with no expectation of any form of compensation. It's entirely reasonable to decide you don't feel like supporting an extension anymore, and a community to take the reins doesn't just magically appear.
And regardless, there are still a lot of things that the old extensions API let you did that you simply cannot do with WebExtensions.
Having said that, Mozilla did the best they could in this transition. You can always argue that they cut over too soon, and that they should have waited until WebExtensions was a little more mature and covered more use cases, but the reality is you have to draw the line somewhere, and I'm sure they agonized for quite a long time over where that place would end up being. They also know a ton more about their users than any of us random HN commenters do and are way more qualified to make that decision than anyone here.
Anyone can read the bug report there and see what actually happened. Nobody even tried to detail what they needed until the VimFX came around a year ago to do so, and to begin workin on an experimental API. That experiment didn't really bear fruit until TWO MONTHS AGO, when the Firefox devs were knee-deep in the release cycle of their biggest product launch since version 1.0.
So yeah, the Firefox devs didn't have much to go on except inactionable "just do whatever Vimperator needs" junk, and no other vested interest seems to have lifted a finger to help the VimFX guy speed up his work on the experiment after he finally got the ball rolling, so blame doesn't really rest on the Firefox devs here.
One of the lead Firefox extension API devs is also the primary Pentadactyl (and former Vimperator) dev. I'm sure they were aware of exactly what was needed for that and similar extensions. They also made it clear from their earliest announcements that they intended supporting these extensions.
It simply isn't a priority which may be fair enough.
But the full picture also includes the fact that if all people were willing to do was wait for someone else to do the work, then they really have no high ground to complain that it didn't get done in the time-frame they wanted.
Other addon devs did help push things along, and they got the abilities they needed much sooner. We can only excuse ourselves so far before we share in the responsibility for things not getting done.
And the extensions' authors had, what, two years advance warning or so?
Criticize the real culpits, not Mozilla.