1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
  | 
# Simple Extension for viewing certain websites with user-controlled JS
The browser extension developed here
- is one of the last guerilla efforts of those still opposing the pervasive idea
  of websites deserving the ability to execute software (e.g. JavaScript code)
  in our web browsers,
- might help you pass [Anubis](https://anubis.techaro.lol/) proof-of-work
  challenge (used, for example, on some parts of
  [kernel.org](https://www.kernel.org/)) without having to enable scripts on
  the site that uses it, and
- should co-exists with other blockers and script managers that you might be
  using.
## The past has not been simple
I have already had an attempt at replacing site-served (sometimes nonfree) JS
with user-supplied scripts, [here](https://git.koszko.org/browser-extension).
That extension aimed to be perfect with
- script replacements executing unprivileged in the page context,
- an ability to specify dependencies between scripts,
- a repository of replacement scripts for sites,
- an ability to search that repo by site URL,
- a configurable script blocker functionality included,
- support for Firefox-based browsers from version 60 onwards as well as
  Chromium-based browsers,
- a detailed documentation,
- a dedicated issue tracker,
- its own website,
- cryptographically signed releases, and
- non-POSIX tools in the build system avoided to the extent possible,
Some of these could not be achieved in the way I intended.  I later tried making
a similar tool as a TLS-enabled proxy but could not spend more time on it once
the NLnet grant finished.
## Keeping software simple-stupid
Or should the heading say "simple, stupid"?
This extension makes several websites work (or kind of work) without site-served
JS, but
- all replacement scripts are executed in the semi-privileged content script
  context,
- there's no notion of dependencies between scripts that this extension executes
  on websites,
- the replacement scripts are contained within the extension itself and not
  queryable from any repository,
- the extension blocks JS (and sometimes CSS) on sites it touches, albeit in a
  non-configurable fashion,
- is only known to work with the browser I am using at any given moment (GNU
  IceCat 140.something at the time of writing),
- has no documentation besides this README and its own code (which, btw, it the
  most accurate documentation possible),
- has no issue tracker (email [koszko@koszko.org](mailto:koszko@koszko.org) if
  you need),
- has no website of its own (just a Git repo served with cgit),
- is only released as untagged git commits, and
- besides the zip command line tool requires you to have GNU Make, jq and
  Inkscape to build it.
## Copying
CC0.  Also, [REUSE](https://reuse.software/).
  |