Establish shared codebase for storing filter lists
Background / User story
In #1069 (closed) we want to start including static filter lists in Manifest v3 extension builds, so that we can start using the declarativeNetRequest
API for blocking network requests. While we could generate those when building the extension, a more ideal solution would be storing and retrieving them from a codebase that's shared between AdBlock and Adblock Plus, because:
- Extension builds need to be reproducible, whereas the result of static filter list generation is non-deterministic, since it downloads non-version-controlled resources.
- The commit history of product repos should not be polluted by frequent filter changes.
Since this code will be used beyond Adblock Plus, we should create a new license header. For that, we need to answer the following questions:
- Do we need a license header, considering that none of its JavaScript code is running in the context of the extension?
- Should it refer to both AdBlock and Adblock Plus, or to the project itself?
- Should it refer to eyeo GmbH or to Adblock Inc.?
What to change
- Design: N/A
- Research: Internal prototype: https://gitlab.com/adblockinc/sandbox/filterlists
- Spec: N/A
- Legal: TBD
-
Development:
- Use appropriate license headers.
- Use scripts provided by EWE for generating subscription files and the corresponding manifest file fragment for declarativeNetRequest rules.
- Store subscription files and manifest file fragments that are needed for integration into the extension.
- Establish a product-specific list of recommended subscriptions to select the subscriptions to include from the ones made available by the SDK.
- Optional: Automate usage of eyeo's list of available subscriptions.
- Ignore subscriptions with an unsupported type.
- Throw an error when a subscription targets an unsupported language. This requires adding the language to data/locales.json.
- Throw an error when a subscription is no longer available.
- Throw an error when a subscription's type has changed.
Hints for testers
TBD
Hints for translators
N/A
Related issues
Issue | Description | Status | Impact |
---|---|---|---|
eyeo/adblockplus/abc/adblockpluscore#446 (closed) | Cannot ignore eyeo index file download failure | ✓ | medium |
https://gitlab.com/eyeo/adblockplus/abc/webext-sdk/-/issues/252 | Inconsistent scripts usage | ✓ | low |
https://gitlab.com/eyeo/adblockplus/abc/webext-sdk/-/issues/253 | Cannot specify relative paths | ✓ | medium |
https://gitlab.com/eyeo/adblockplus/abc/webext-sdk/-/issues/254 | Cannot fetch subscriptions | ✓ | high |
https://gitlab.com/eyeo/adblockplus/abc/webext-sdk/-/issues/265 | Unclear purpose and usage of scripts | In discussion | low |
https://gitlab.com/eyeo/adblockplus/abc/webext-sdk/-/issues/270 | Unable to use EWE as npm package | ✓ | medium |
https://gitlab.com/eyeo/adblockplus/abc/webext-sdk/-/issues/277 | Unclear how to pass recommendations to SDK | ✓ | high |
https://gitlab.com/eyeo/adblockplus/abc/webext-sdk/-/issues/304 | Unable to determine which filter list files correspond to which subscription from index | ✓ | high |
https://gitlab.com/eyeo/adblockplus/abc/webext-sdk/-/issues/305 | Unclear how to pass recommendations to SDK | ✓ | high |
https://gitlab.com/eyeo/adblockplus/abc/webext-sdk/-/issues/331 | Unable to call npm commands | ✓ | medium |
Internal FDA ticket | Missing meta data (unique ID; is combination list?; is Acceptable Ads list?) for automating parts of filter list updates | ✓ | medium |
Edited by Thomas Greiner