Analysis An early version of Manifest v3 – Google's controversial revision of Chrome's extensions system that will affect ad and content blockers – should appear in about a month.
Add-on developers remain concerned the internet advertising giant will remove too much utility from their extensions in the name of performance, privacy, and security.
"Manifest V3 is not yet ready for experimentation and feedback," said developer advocate Simeon Vincent in a Google Groups discussion thread on Thursday. "The extensions team is currently working towards releasing a Developer Preview in the Canary channel at the end of July or beginning of August. We'll be sharing additional details when that lands."
He added that determined devs can try a half-baked version by manually building the master branch of the Chromium source code repository. But doing so means foregoing guidance or support, and puzzling through the source line by line to figure out what's going on.
Vincent was responding to a series of concerns raised by developers following Google's mini PR blitz last week. He attempted to allay fears that the API revisions planned for the Chrome extensions platform since last October will cripple or degrade content blockers, privacy extensions, and other browser add-on tools.
The controversy centers around the planned removal of the blocking (synchronous) version of the
webRequest API, which can intercept, alter or nix incoming network traffic before it gets displayed by the browser – a crucial intervention for content blocking and privacy applications. Ad blockers, for example, use it to detect and halt any requests to display unwanted ads or tracker scripts.
However, Googlers toiling away on Manifest v3, an ongoing work-in-progress project, are also contemplating many other changes that affect the power and scope of Chrome extensions.
For example, the planned replacement for
declarativeNetRequest, allows a set number of pattern matching rules for detecting and taking action on request traffic. Extensions are expected to use the new interface to provide rules that Chrome uses to identify and act on traffic, rather than trusting each add-on to do the interception and blocking.
Currently, the preset rule limit is 30,000 static rules and 5,000 dynamic rules, dynamic rules being far more useful for content blocking.
Last week, Vincent said, "we are currently planning to change the rule limit from maximum of 30k rules per extension to a global maximum of 150k rules." But as he confirmed in his post on Thursday, "Chrome will have a global maximum of 150k rules shared among all extensions."
That may sound like a lot, but as HTTPS Everywhere developer William Budington observed, HTTPS Everywhere is aware of more than 157K target sites. Under Google's shared model, using one extension with a lot of rules would preclude using other rule-heavy extensions.
Vincent attempted to reassure Budington by noting that the limit is probably not final. "We are still analyzing what the real-world performance cost is at different rule set sizes," he said, without addressing the fact that dynamic rules are far more useful that fixed ones.
Performance is not a problem
Google Chrome security engineer Chris Palmer echoed that claim in the discussion thread, insisting: "The performance concern is real." He pointed to the resource cost of storing a large number of rules in a persistent browser or network service process, and to the delays imposed by waiting for synchronous calls to resolve.
While it's certainly conceivable that a poorly coded extension could tie things up, leading to a poor user experience, extension developers remain skeptical that such delays are unavoidable.
The release of an open-source tool called Exthouse for measuring extension-induced slowdowns this week has only added to that skepticism. Though Exthouse indicates that Adblock Plus has a performance impact, it also shows uBlock Origin adds exactly no delay in two interactivity metrics, Time to Interactive and First Input Delay. This underscores claims by developers of content blockers that their extensions actually improve performance by eliminating ad tracking code on webpages.
Vincent acknowledged that Google's official blog posts on Manifest v3 had skimped on the performance issues and said he hoped to provide more details about this soon. The issue isn't so much the execution time of blocking (synchronous)
webRequest callbacks, he said. Rather it's the overall cost of processing a request in Chrome.
"With the blocking version of
webRequest, Chrome has to serialize a lot of data (the request itself and request metadata, etc.) and send it to each extension," he said. "This results in significant costs from type conversions, copies, interprocess communication, (de)serialization, etc. for each listening extension (which are usually in separate processes)."
At the same time, Vincent acknowledged performance was not the primary motivation for Manifest v3. Rather, Google's main concern is "to improve the privacy and security of request modification and to reduce the attack surface for malicious extensions." To be blunt, Googlers really aren't comfortable with the idea of gone-rogue extensions manipulating and eavesdropping on users' network traffic.
Why are fervid Googlers making ad-blocker-breaking changes to Chrome? Because they created a monster – and are fighting to secure itREAD MORE
And so, with regard to improving privacy, what Google is doing appears to be more along the lines of improving privacy options. The privacy issues raised by
webRequest won't go away because while developers won't be able to intercept requests without the blocking method, they will still be able to request permission to observe network requests. The main privacy gain, as Palmer describes it, is that developers will be able to "write an extension using Declarative Net Request to block content without necessarily getting the power to passively monitor requests and page content."
The extension might implement additional APIs that require host permissions, he explains, but the process of granting those will require more explicit permission from users.
That leaves security. And as we've reported, there's a real issue with Chrome extension security, though one that might be addressed in ways other than broad API changes, such as tighter developer vetting, hiring extension security inspectors, stricter Chrome Web Store policy enforcement, or security audits.
"In rethinking how we approach the extensions platform, one of the goals we're trying to achieve is to enable extensions to do what they do today, but in ways that don't compromise the user's privacy," explains Vincent. "Broadly speaking, the
declarativeNetRequest (DNR) API fits into this mold by giving extensions a way to modify requests without exposing the request object to the extension or (as much as possible) without requiring the extension to have host permissions to modify requests."
Vincent claims that, in theory, a content blocker implemented with Manifest v3 could match the results of its Manifest v2 counterpart, but without any risk of data theft.
Yet in the very next line of his post, he acknowledges that
webRequest in its current form is indispensable. Why keep the blocking version of
webRequest around for enterprise users if it's so dangerous?
"First, because it gives extensions an important capabilities that can't be replicated with a more secure API," says Vincent. "Second, the risks around
webRequest can be mitigated by increasing the friction of getting (and keeping) host permissions."
He goes on to acknowledge
declarativeNetRequest cannot do everything
webRequest can. "From the Chrome team's perspective this change and others combine to close off an entire class of exploits," he said. "[Declarative Net Request] isn't a perfect tradeoff, but we strongly believe the privacy guarantees it brings outweigh the loss of capabilities. That said, we want to enable content blockers and request modifying extensions as much as we can without exposing too much data or empowering malicious actors."
In short, web ad and content blockers, and other Chrome extensions, will be made less capable – for your protection. ®