re-evaluate how syntax/software support is modeled #496
Description
This issue is to continue discussion from #493 with @hawkeye116477 , @DandelionSprout , and whoever else.
FilterLists is currently designed so that each FilterList
is linked to a single Syntax
. Each Syntax
is supported by multiple Software
.
However, we might need to expand the complexity of that model a bit more. Some ideas summarized below:
0. Keep on Keeping on, but Stricter:
Continue using the current model, but be very strict about saying that a Software
supports a Syntax
. The example that came up is that we think AdGuard
supports nearly all of uBlock Origin Static
, however it does not support Scriptlet Injection. In this case, we would say that AdGuard does not support uBlock Origin Static
. Only Software
that can support any kind of rule defined in a Syntax
should be linked to that Syntax
.
1. Most Precise:
The most precise solution would be to drop the Syntax
model altogether in favor of each FilterList
having its own set of Software
that is known to support it. That incurs a lot of data maintenance overhead, and I am really hoping to keep Syntax
around in some form to lighten the load of having to maintain all those individual incompatibilities.
2. Boolean Partial Syntax Support:
I proposed adding a boolean flag to each SoftwareSyntax
that represents if the Syntax
is fully supported by the Software
(all rules except comments/metadata should be applied by the Software
) or only partially supported (some of the rules are ignored by the Software
, while some are applied). We could then indicate in the UI somehow whether the Software
fully or partially supports the FilterList
.
3. More Granular Syntaxes:
Another option could be to chop a Syntax
like uBlock Origin Static
into multiple Syntax
es. So, instead of having uBlock Origin Static
, we would instead have: uBlock Origin Static Network Filtering
, uBlock Origin Static Extended Filtering
, uBlock Origin Scriptlet Injection
, ... This solution would also require changing the relationship from a FilterList
to a Syntax
from one-to-many to many-to-many so that each FilterList
can implement multiple Syntax
es.
Surfacing software support is one of the primary pieces of value that FilterLists provides, in my view, so getting this right is pretty key. Please provide your further thoughts/suggestions.