Updated About "uBlock is inferior in capabilities as a result of being lighter on the browser"... (markdown)

Raymond Hill 2017-05-24 20:55:12 -04:00
parent cb96a1ab66
commit 13fb5e2b64

@ -1,61 +1 @@
Motivation for creating this page, this comment made in the spirit of _Fake News_ (i.e. with no supporting objective evidences, merely a _"just trust me"_ statement):
> Ublock is inferior in capabilities [to ABP] as a result of being lighter on the browser [[source](http://forums.mozillazine.org/viewtopic.php?p=14743232#p14743232)]
There is nothing wrong with preferring ABP to uBO. There is however something wrong when someone engages in misinformation regarding uBO because of their preference for ABP.
This is my reference answer to such claims.
uBlock Origin is lighter on the browser because of many choices which were made regarding how the filtering engine is designed internally. A coarse enumeration of these choices are:
- lean in-memory filter representation
- plain string comparisons instead of regular expressions wherever possible
- a majority of network filters can be reduced to plain string comparison, and this is what uBO does internally for these filters, whereas ABP convert _all_ network filters into regular expressions.
- Example, `&ad_zones=` (filter found in EasyList).
- ABP's code conceptually is: `/&ad_zones=/.test(url)` -- the whole URL must be scanned
- uBO's code conceptually is: `url.startsWith('&ad_zones=', i)` -- no scanning of the URL
- does not unconditionally inject 18,000+ (that is with EasyList only) generic CSS rules in all pages/frames<br><sup>meaning no undue [memory usage issues](https://bugzilla.mozilla.org/show_bug.cgi?id=1320872)</sup>
Do these design choices really cause uBO to be _"inferior in capabilities"_ compared to ABP? See the capabilities comparison grid below for an answer (at time of writing):
Features | ABP | uBO
-------- | :---: | :---:
**network filtering**
[multi-stage filtering engine](https://github.com/gorhill/uBlock/wiki/Overview-of-uBlock's-network-filtering-engine)<br><sup>ability for users to easily override filters in 3rd-party filter lists on a per-site basis</sup> | | yes
`@@...$document` | yes | [no](https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#not-supported)
can read hosts files | | yes
`inline-script`<br><sup>to prevent execution of inline javascript</sup> | [no](https://issues.adblockplus.org/ticket/748) | yes
`important`<br><sup>to be able to override exception filters</sup> | | yes
`popunder` | [no](https://issues.adblockplus.org/ticket/2095) | yes
`redirect`<br><sup>to redirect to local resources, key to privacy and to counter anti-blockers</sup> | | yes
`csp=`<br><sup>see [rationale](https://github.com/gorhill/uBlock/issues/1930#issuecomment-301055346)</sup> | | yes<br><sup>v1.12.5</sup>
[strict blocking](https://github.com/gorhill/uBlock/wiki/Strict-blocking) | | yes
rule-based filtering<br><sup>firewall-like or URL-based rules with corresponding point-and-click UI</sup> | | yes
behind-the-scene<br><sup>uBO's logger reports behind-the-scene request, filtering is opt-in</sup> | | yes
**cosmetic filtering**
entity-based filters | | yes
`-abp-properties` | yes | [no](https://github.com/gorhill/uBlock/issues/139)
`:has` | [not yet](https://issues.adblockplus.org/ticket/2360) | yes
`:has-text`<br>`:if` `:if-not`<br>`:matches-css` `:matches-css-before` `:matches-css-after`<br>`:xpath` | | yes
`:style` | [no](https://issues.adblockplus.org/ticket/756) | yes
`script:contains` | | Firefox only
`script:inject`<br><sup>key to counter anti-blockers</sup> | | yes
**privacy**
pro-user default settings<br><sup>uBO is not monetized, it's under no pressure to [compromise](https://adblockplus.org/forum/viewtopic.php?f=17&t=50215) on pro-user interests</sup> | | yes
disable pre-fetching | | yes
disable hyperlink auditing | | yes
disable local IP addresses leakage through WebRTC | | yes
**other features**
pre-compilation of filter lists for fast loading of filters | | yes
"acceptable ads" | yes | [no](https://github.com/gorhill/uBlock/blob/master/MANIFESTO.md)
disable everywhere | yes |
count filter hits | yes | [no](https://github.com/gorhill/uBlock/issues/1353)
ability to globally ignore generic cosmetic filters<br><sup>useful for low-performance mobile devices</sup> | | yes
cloud storage | | yes
point-and-click firewall-like filtering<br><sup>allows for [relax](https://github.com/gorhill/uBlock/wiki/Blocking-mode:-medium-mode) or [strict](https://github.com/gorhill/uBlock/wiki/Blocking-mode:-hard-mode) default-deny approach</up> | | yes
logger | per-page | unified
point-and-click per-site no-popups | | yes
point-and-click per site no-cosmetic-filtering | | yes
point-and-click per site no-large-media-elements | | yes
point-and-click per site no-remote-fonts | | yes
integrated element picker | Chromium-based browsers only | yes
easy backup/restore of all settings | Firefox only | yes
Moved to [About "uBlock is inferior in capabilities as a result of being lighter on the browser"](https://github.com/gorhill/uBlock/wiki/About-%22uBlock-is-inferior-in-capabilities-as-a-result-of-being-lighter-on-the-browser%22) (the trailing dots were not link sharing-friendly).