Here goes a nice topic for my first post here
From what I read on the chrome-extensions group, the new declarative webRequest API is inevitable. Despite the news that they backed off after the backlash, that does not mean they actually changed their plans.
The old webRequest API will be removed eventually so there will be no custom filtering engines anymore. Although, the declarative API will be improved compared to what we have in the draft.
I recommend you check out the current draft, the syntax looks like what we use for basic network filters so any filter list maintainer will easily understand it.
There are two important things about it:
- The ruleset is supposed to be hardcoded into the extension. This means that every filter list should be a different Chrome extension which is rather weird.
- To fix this, they added “dynamic rules” to the draft. This will allow ad blockers to compile a ruleset from different filter lists and then register it in runtime.
The problem here is that the number of rules in this dynamic ruleset cannot be greater than 5000 which is completely ridiculous. On a bright side, I believe that they will increase this limit, but I doubt they will let us have as many rules as we want.
In the worst case scenario, if they won’t increase the dynamic rules limit, there will be just a single filter list. Let’s not focus on this, though.
So what are the challenges for filter lists authors?
- Filter lists must become smaller. Redundant and obsolete rules must be removed, obviously.
- Filter lists might need to become more granular. Instead of “a filter against all ads” there should be a filter list against ads on top1000 websites or something like this.
- It might be that every ad blocker will need to have a main hardcoded filter list. For instance, ABP will likely use Easylist, uBO will use Easylist+uBlock filters, AdGuard will use Easylist+AdGuard Base filter. So when you create new rules, you’ll have to consider that there is a base list always enabled alongside your filter list.
What’s your take?