Project

General

Profile

Comparison with other tools » History » Version 6

jahoti, 09/29/2021 02:56 AM
Reword the section on LibreJS

1 1 jahoti
# Comparison with other extensions
2
3 5 jahoti
The functionality of Haketilo partially overlaps with that of other extensions. None of those, however, is sufficient for our goal of liberating the web and hence the need to create a new one.
4 1 jahoti
5
{{toc}}
6
7
## LibreJS
8 6 jahoti
Of existing extensions [LibreJS](https://www.gnu.org/software/librejs/) seems to be the only one with a software-freedom-oriented goal. It inspects sites' scripts in search of license notices in a specified format. If it decides a given script is libre software or otherwise trivial, it allows it to run.
9 1 jahoti
10 6 jahoti
While LibreJS shares many of its social aims with Haketilo, its scope is narrower, limited to script blocking (and not replacement or injection) for HTTP/S pages in Mozilla-derived browsers.
11 1 jahoti
12 6 jahoti
More fundamentally, there is also a difference in the underlying assumptions about webmasters. Whereas Haketilo takes an adverserial view, refusing to trust or expect co-operation by default, LibreJS more charitably gives them greater freedom to choose what scripts run in users' browsers at the cost of more burdensome license notice requirements. It should be noted that Haketilo's script blocking can be disabled, allowing the model of blocking LibreJS uses to be applied instead (or no script blocking at all).
13 1 jahoti
14
## NoScript
15 3 jahoti
[NoScript](https://noscript.net/) is an extension often used as a content blocker, but it actually does a bit more and is more properly described as a security suite. It can be used to block scripts on per-site basis and works with both Firefox- and Chromium-derived browsers. NoScript author, Giorgio Maone, has also worked on LibreJS as an FSF contractor.
16 1 jahoti
17
NoScript, while sometimes useful for the task of blocking nonfree javascript, is not by itself fully freedom-oriented and for example has youtube.com in its default site whitelist. NoScript's codebase is rather complex and hard to read.
18
19
## uBlock Origin
20 3 jahoti
Often abbreviated as "UBO", [uBlock Origin](https://ublockorigin.com/) is a selective content blocker. It gives quite fine-grained control over what kinds of elements are allowed to load, including the possibility of blocking third-party resources on a per-domain basis. Both Firefox and Chrome are supported.
21 1 jahoti
22
UBO is able to load and apply adware and spyware blacklists from several sources, which makes it able to function as an ad-blocker. However, what's more relevant for people who want to block all nonfree javascript is that UBO's codebase, although big, is rather clean and readable.
23
24
## uMatrix
25 3 jahoti
The [uMatrix extension](https://github.com/gorhill/uMatrix) is UBO's twin. Developed by the same author, these 2 share part of their codebase. While UBO can be used rather easily, uMatrix was a content blocker aimed at more advanced users. Unfortunately, uMatrix is unmaintained as of 2021.
26 1 jahoti
27
## Greasemonkey
28 4 jahoti
The extensions discussed so far have all been content blockers. [Greasemonkey](https://www.greasespot.net/), on the other hand, makes it possible to execute custom scripts on websites. These are usually referred to as "user scripts" and there are even sites (well, at least one) for sharing these between users. Greasemonkey only supports Firefox-derived browsers.
29 1 jahoti
30
People often point at Greasemonkey as a possible solution when told about the need for a facility to replace sites' native javascript. Indeed, Greasemonkey could be used to achieve that. The fact that it doesn't block the original scripts is a small problem, giving the necessity of running some content blocker next to it. While generally suboptimal, this setup would be acceptable as a temporary solution. What makes Greasemonkey unsuitable in the long term is the fact it doesn't execute user scripts in the context of a page but rather in the more privileged context of WebExtensions content scripts. This has security implications and leads to incompatibilities with scripts failing to execute the way they would in the usual context.
31 3 jahoti
32
## ViolentMonkey
33
34 4 jahoti
[ViolentMonkey](https://violentmonkey.github.io) is similar to and largely compatible with Greasemonkey, with the benefit of supporting a wide range of browsers. All other potential issues listed for Greasemonkey still apply, however.