Mozilla solves the Manifest V3 puzzle to save ad blockers
adguard.com
adguard.com
Cookie, storage, exported DOM reads, fetch requests, etc should all be logged in clear text (maybe even pass handlers that pull reduced data) for the user to audit.
It blows my mind what any developer can do with extension apis. "This site can access data on this site" warning is not enough.
It's just that uBlock Origin is so important and trusted that it should be an exception. There should be no limits on uBlock Origin at all. It's so important that it should just be turned into an actual built-in browser feature, and the only reason it isn't is the massive conflicts of interests involved since all major browsers are backed by adtech profits.
GP said "step in the right direction", as this is indeed just a step and not an entire solution.
If Chrome really wanted a minimal change here to improve security, they might have restricted webRequest to only permit blocking the request but not modifying it.
Again, since you seem to have ignored the main point of GP and my reply, this was the "first step" in the right direction.
And what about new extensions that are not yet as popular but could reach the same level of importance and trust if it wasn't for restrictions like these making them impossible in the first place.
What about extensions that serve a niche but are nevertheless trusted and important within that niche.
I don't want my browser to dictate what extensions I choose to install can do anymore than I want my OS to dictate what programs I can install.
I'm not even opposed to making a curated experience the default but there MUST be a way to opt out so that technically inclined people can retain their computing freedom.
Amen to that. I refuse to be sold to in any form possible. Partly the reason I won't switch to IOS. I'm too married to kiwi browser and it's ability to support ublock.
https://blog.mozilla.org/addons/2022/11/17/manifest-v3-signi...
Posting it here since there's a lot of questions being asked here in HN that are answered by the post.
I guess we'll keep that article's title though (in de-baited form) because "Manifest v3 signing available November 21 on Firefox Nightly" would trigger weird responses.
Edit: nope, reverted. See https://news.ycombinator.com/item?id=34851017.
Acknowledging these apprehensions, Mozilla announced last year that Firefox would continue to support the webRequest API to block entire categories of HTTP requests in its implementation of Manifest V3...
And, per AdGuard, is now shipping that.
I tested both AdGuard and uBlock Origin in MV3 for a while, and they seemed fine to me. Adguard's had less friction due to opting sites into cosmetic filtering by default.
Does that help?
Edit, ok we'll revert it. Sorry all!
This was a mistake, dang. Not to mention it doesn't have (2022). Which it didn't need, before you changed the link.
The AdGuard blog post has details that the Mozilla post doesn't, such as a specific discussion about ad blocking, as well as recent developments in Chrome's deprecation timeline.
I obviously got this change wrong since people hated it so much - but no one much liked the original URL either (e.g. https://news.ycombinator.com/item?id=34850937). If there's a better article, we can change it again.
There's not a better article. I think people are mainly confused by the title of the article.
There are 2 different links to mozilla.org with background info in the first 3 sentences of the article, so it seems like people just aren't clicking those links.
To me, it's clear that the intention of the article is primarily to criticize Google and Chrome, with a contrast to the behavior of Mozilla and Firefox. Which is why the title can be a bit confusing, and people are expecting a long explanation of what Firefox did, when the point is really that Google could and ought to do better.
Read Moz first - very confusing how signing saved ad blocking.
> While other browser vendors introduced declarativeNetRequest (DNR) in favor of blocking Web Request in MV3, Firefox MV3 continues to support blocking Web Request and will support a compatible version of DNR in the future. We believe blocking Web Request is more flexible than DNR, thus allowing for more creative use cases in content blockers and other privacy and security extensions. However, DNR also has important performance and compatibility characteristics we want to support.
https://blog.mozilla.org/addons/2022/11/17/manifest-v3-signi...
So, in a nutshell, they won't deprecate an existing working API, like Google did. But they will additionally support the new API.
But that's fine. "It's incumbent on end-users to know what they're installing" is a fine position for Mozilla to take.
Which direction are taking it?
The owner of a walled garden doesn’t need to depend on 3rd parties for anything they can build whatever tools they want in house.
As long as ad networks allow arbitrary code to run, and content designed to trick users, I prefer to centralize on a single source of potential risk (the extension developer) rather than the moving target of malicious ads from myriad sources.
A recent example readily avoided by not allowing the ad to run in the first place: https://www.securityweek.com/webkit-zero-day-vulnerability-e...
"uBlock" stole the new from gorhill.
How does that solve the security issue you mentioned?
webRequest API, because it runs arbitrary JS, could do anything including something malicious by modifying external JS after the extension was submitted to the store. It's an API that makes it impossible for a store to make security guarantees at all.
This is, unfortunately, the behavior ad blockers rely upon to keep their databases of malicious actors fresh.
The declarative API solves that by not allowing page modification outside of safety boundaries like deleting elements.
https://stackoverflow.com/questions/3274144/can-i-modify-out...
Saying that manifest v3 is about security is really not credible. Maybe the changes look like security, but the details are simply not consistent with security being the primary goal.
As for your question, that's a legitimate request. Maybe dang can change the link?
Edit: nope, reverted. See https://news.ycombinator.com/item?id=34851017.
https://blog.mozilla.org/addons/2022/05/18/manifest-v3-in-fi...
And here
https://blog.mozilla.org/addons/2022/10/31/begin-your-mv3-mi...
Firefox kept support for Event Pages which get direct access to DOM and WebAPIs in the background as well as Web Requests, both of which are not available via Chrome's use of service workers/restricted request API
> “One of the most controversial changes of Chrome’s MV3 approach is the removal of blocking WebRequest, which provides a level of power and flexibility that is critical to enabling advanced privacy and content blocking features. Unfortunately, that power has also been used to harm users in a variety of ways Chrome’s solution in MV3 was to define a more narrowly scoped API (declarativeNetRequest) as a replacement. However, this will limit the capabilities of certain types of privacy extensions without adequate replacement.
> Mozilla will maintain support for blocking WebRequest in MV3. To maximize compatibility with other browsers, we will also ship support for declarativeNetRequest. We will continue to work with content blockers and other key consumers of this API to identify current and future alternatives where appropriate. Content blocking is one of the most important use cases for extensions, and we are committed to ensuring that Firefox users have access to the best privacy tools available.”
I hope FF gets service workers going soon, I haven't followed development closely so I'm not sure what's holding them back besides not wanting to replace Event Pages entirely with it [1]. I tried to build a (non-complicated) extension recently and the service worker API seemed cleaner and modern.
As of October 2022, that’s “not planned”:
That is the solution, it's just not the solution we're allowed to have.
Firefox will continue to bleed users like me who don't know how to dance this stupid dance or refuse to do so until it completely collapses. I wonder why mozilla chose this hill in particular to die on.
Also, better than any other browser on Android.
Chrome allows no addons.
Samsung internet and Edge only has Adblock Plus.
Brave, Opera and Vivaldi has its own built-in adblockers.
There is Kiwi browser and Bromite but those where way behind on Chromium versions last I checked.
On android and IOS I would use Brave and/or Firefox.
It works if you were using nothing but default settings but if you want custom filters or anything else that's not included in the bundled filter list then you are SOL.
[1] https://www.reddit.com/r/uBlockOrigin/comments/1067als/eli5_...
Is there something more to it than just the amount of rules, is v3 still better than Safari?
Basically the same thing that happened to Firefox extensions when they abandoned the entire old ecosystem and switched to Chrome's webextension. And now that they're stuck with that choice they're happy about mitigating even more damage to add-ons caused by it. This is not so much a win as a holding action after a bad choice.
Except it wasn't. I used Firefox a lot on Windows and Linux and didn't have the slightest problems.
The only reason I see why Chrome took over was a rather insane push, about the same level of intensity as IE6, from Google, using everything:
- artificially reducing performance of Firefox on key Google properties (Google Calendar, YouTube)
- bundling Chrome with Adobe
- ad campaigns on the front of Google where no one else has been allowed to serve ads (this alone must have been worth billions)
- lies ("switch to a better browser" they wrote even when I was using Firefox)
Google needs to be punished - big time - for this abuse.
I regularly ran it with multiple extensions and 400 - 600 open tabs and didn't feel Chrome was better.
And I'm the kind of person who can start a 2 hour troubleshooting session over a few tens of milliseconds unexpected lag.
Edit: maybe Chrome was hopeless with multiple tabs or maybe one of the older memory saver extensions was so much better it made up for it, or maybe it just matched my hardware/SW at the time extremely well (high end HP laptops with Windows or Linux), or maybe it was just a feeling, I don't know. But I know I spent a significant part of my work day in the browsers and Firefox felt significantly better even when I wanted to try the then new and cool Chrome.
I should point out that by "better" I don't mean that Firefox was necessarily faster but
- it was equally fast (for my usage),
- handled 400-600 tabs effortlessly even back then
- had a number of great extensions and themes that significantly improved ones life (subscribe to pages that didn't offer any feeds? I had an extension that polled pages at configurable intervals and ran a smart diff checker on it that gave me a notice if some change had crossed a configurable threshold. Need access to docs while offline or just tired of spending your data quota or waiting for the train ro exit the tunnel? There was an extension that let me download pages recursively, configurable with domain, path and how many steps. It would deduplicate the downloaded pages and rewrite all links from absolute to relative and it "just worked" for everything I needed it for.)
By comparison, extensions in old Firefox was Hitachi or Milwaukee and new extensions are somewhere between Fisher Price and Black and Decker. Yes, you could absolutely hurt yourself on the old ones, they were tools, not toys.)
What kind of benchmarks? Microbenchmarks that test specific JIT capabilities or something that better represents the average user experience.
The only part I remember where Firefox was notably slower was videos when Google led Firefox for a ring around the rosie when they singlehandedly decided to use a proprietary codec for their youtube videoplayer after first making everyone believe they were working on using a different one which FF started working on supporting. I can't count the amount of complaints i heard of firefox being slow there.
when I am forced to register on addons.mozilla.org, just to install an extension that I wrote, yes, that is a bad idea.
Give users the option to say "yes, I understand that this is not an 'approved' addon. install it anyway"
This is misleading. Like wildly so. The imprimatur that the Firefox team was working under meant that they absolutely could, and very often did, break things from release-to-release.
The long, slow decline related to slowness at the core of Firefox had very little to do with extensions (the unwillingness to break them, that is). The real reason is that the work needed for what was eventually delivered in the overhaul that made XUL obsolete was work of the sort that takes a long time to complete. If anyone had stumbled upon working patchsets for those goals stuff through divine revelation and had the ability to say so, then they would have broken things sooner.
If anything, keeping XUL extensions around while all this work was being done helped prop up Firefox's user numbers for a while longer. (Compare to if XUL, while still technically viable, had been killed 10 years ago with a feature flag by fiat and then multiprocess, parallel rendering, and other deliverables related to Gecko Rustification were still as many years away as they actually were.)
That choice was made over 7 years ago. It may or may not have been a bad choice, but at this point Firefox is well beyond the "mitigation" phase of its previous add-on API migration.
As an extension developer myself, I was happy that Chrome, Firefox, and Safari all had similar implementations with Manifest V2. Now it's in a very awkward phase again.
Only because we allowed a single browser engine to become a quasi-monopoly again. Google doesn't need to adhere to addon standards, Google sets them.
It was a necessary choice, the previous framework for extensions was not multiprocess-compatible.
I prefer less monopoly and more competition
Are you claiming that there can't be such a thing as web standards? HTML?
Why would an extension standard be any different from an HTML standard?
In fact, even how websites are rendered should ultimately be up to how the user has configured his browser even if some spec says otherwise. This includes being able to install effective ad blockers that remove elements and deny requests that should be there according to the standard.
Think of web standards more as the definition of a common language between websites and browsers and not as a rulebook for either.
Ad blocking is a cat and mouse game. Google, a mouse, is trying to cripple the cat enough that they can squeak all of their ads through.
It is a fucked up situation when the attacker, i.e. Google, who does record everybody's history, is trying to convince us that our security will be enhanced if they stop allowing us to run our security software on our own devices. And that the open source security software is actually the attacker, with no evidence of that assertion whatsoever! The word "gaslighting" is thrown around frequently but what Google is doing here comes close to that.
Google knows that crippling ad blockers will result in more privacy violation, but they keep pushing this lie that ublock is dangerous and anti-privacy because they want to line their pockets.
Your comment made me take a closer look at what Raymond does and his twitter wasn't a positive surprise, it's full of political propaganda a lot of it anti-US and pro Putin/CCP. For example he shares Caitlin Johnstone tweets, which is a pro China account that might be known to people who follow what goes on in the sinosphere. Doesn't say anything about his code of course, but it's also not a sign to me this person should be trusted unconditionally. In general, there should be as little trust as possible. I expect my browser to ideally restrict extensions maximally and only give the permissions I explicitely agree to. The goes for open source code as well, there can always be a bug or exploit that hasn't been found yet.
In the end, almost everyone has opionions on politics. I'd wager that many more peole have opinions that you consider problematic than you realize - most just keep them to themselves. I don't think mistrusting those who are open about their views more than those that hidem them is a good policy.
In the end, gorhill is not trusted because of things he has said but because of his actions including retaking ownership of uBlock (now origin) after the new maintainers went against his ideals even thoug he originally did not want that burden. Do you have any actual reason to question gorhill's integrity or are you just spreading literal FUD?
Now as for Mozilla (and even moreso Google), they have shown their willingness to go against user wishes with telemetry, in-browser ads and experiments. Why would you trust them implicitly but find the idea of giving select extensions that same trust unthinkable? See, the problem here is not that browsers allow you to restrict what extensions can do but that browsers enforce certain restrictions and don't allow users to override them.
I do think it would be good if extensions were more commonly distributed (and hopefully checked) by (e.g. Linux distro) package maintainers rather than FF having its own developer-controlled update mechanism. But ultimately you do have to trust someone and the guy who has been dedicated to making the web usable without selling out so far is not a bad candidate.
Now I haven't seen this claim specifically (has Mozilla posted it publicly?) but I doub the extension is actually infringing anyones copyright and this is instead about providing a way to circumvent coyright protections. AFAIK DMCA circumvention is not grounds for a DMCA complaint, which are for direct infringement of the claimants "IP" only.
The world of software sure is good at "fixing" things that aren't broke.
Also, this article doesn't seem to make it clear what Firefox is doing to "save" ad blockers other than continue to support Manifest v2. If they're making ad blocking possible with v3, there doesn't seem to be a lot of detail around it. Yes, I can go research it, but the point of articles like these should be to aggregate that information so people don't have to do all the work for themselves.
Firefox will keep supporting both V2 and V3. They want to implement V3 in order to avoid forcing most developers to have different manifests for different browsers. This is a good thing in general.
If you want details on what Mozilla is doing, here's a snippet from the linked blog post:
> While other browser vendors introduced declarativeNetRequest (DNR) in favor of blocking Web Request in MV3, Firefox MV3 continues to support blocking Web Request and will support a compatible version of DNR in the future. We believe blocking Web Request is more flexible than DNR, thus allowing for more creative use cases in content blockers and other privacy and security extensions. However, DNR also has important performance and compatibility characteristics we want to support.
https://blog.mozilla.org/addons/2022/11/17/manifest-v3-signi...
Also, technically, Firefox is supporting both 2 and 3, their solution here isn't magical wizardry. It's just maintaining those specific features (blocking Web Requests) on top of adopting 3.
It seems that Firefox is keeping around the same MV2 APIs so Firefox extensions will eventually be able to update the MV number with no effort.
Yeah, that's a misleading title; the authors explain why extension-writers are going to switch to the "common platform", which will be V3, whatever Mozilla (or AdGuard) do.
I was looking for an account of some cool Judo move that Mozilla had pulled off, to draw the teeth of V3. That's not what it's about.
In reality we should be thankful that it hasn’t happened (yet) rather than bashing the choice to keep MV2 around longer. They could very easily pull the trigger, I don’t think many will actually switch to Firefox just for that. Most won’t even know.
As a product manager, I don’t know what they’re waiting for exactly.
And there is a chance we can take learnings from the last attempt and improve in them.