]> Sergey Matveev's repositories - tofuproxy.git/blob - doc/why.texi
Download link for 0.6.0 release
[tofuproxy.git] / doc / why.texi
1 @node Why
2 @unnumbered Why I created it?
3
4 @itemize
5
6 @item I am tired that various HTTPS clients (like browsers and feed
7 aggregators) use TLS libraries with different feature set. NSS, GnuTLS,
8 OpenSSL... All of them sucks, comparing to Go's @code{crypto/tls}.
9
10 @item I am tired that everyone provides very limited certificates trust
11 management capabilities, like either certificate or SPKI
12 @url{https://en.wikipedia.org/wiki/Certificate_pinning, pinning} with
13 @url{https://en.wikipedia.org/wiki/Trust_on_first_use, TOFU}. Even my
14 beloved @url{https://en.wikipedia.org/wiki/Xombrero, Xombrero} browser
15 still pins only the whole certificate, but its public key would be much
16 more sufficient and convenient to work with.
17
18 @item I am tired that many clients provides very few information about
19 certificates and connections at all.
20
21 @item I hate that hardly anyone can control (no automatic silent
22 transparent following) HTTP redirections. Although Firefox (I used many
23 ears ago) had proper extensions for that.
24
25 @item I am sick of tiny control on URLs. The best you can is to use some
26 kind of @url{https://en.wikipedia.org/wiki/Privoxy, Privoxy}, but it is
27 not friendly with TLS connections, obviously. Or use yet another
28 browser-specific plugin.
29
30 @item Xombrero sometimes has problems with HTTP-based authorization.
31
32 @item Hardly anyone does
33 @url{https://en.wikipedia.org/wiki/DNS-based_Authentication_of_Named_Entities, DANE}
34 checks.
35
36 @item And there is insanity of fonts downloading.
37 Why the hell people just do not send PostScript documents instead!?
38
39 @item And wonderful @url{http://jpegxl.info/, JPEG XL} image format is
40 not supported by most browsers. Even pretty old
41 @url{https://developers.google.com/speed/webp, WebP}, that has highest
42 compression ratio for lossless screenshots, is not supported everywhere,
43 especially on old browsers.
44 @url{https://aomediacodec.github.io/av1-avif/, AVIF} could be useful too.
45
46 @item None of web browsers has ability to view web archives
47 (@url{https://en.wikipedia.org/wiki/Web_ARChive, WARC}s). And most of
48 WARC-related software is written on Python, that nowadays is close to be
49 impossible to install and use with all its broken dependencies system.
50
51 @item And yet another piece of software is needed for browsing the
52 @url{https://en.wikipedia.org/wiki/Gemini_(protocol), geminispace}?
53 Too many bicycles already!
54
55 @end itemize
56
57 That is why I wrote @command{tofuproxy} -- pure Go HTTP proxy, MitMing
58 all HTTPS connections on the fly. It is written for my personal needs
59 exclusively, so many features are just directly hard-coded, instead of
60 creating some kind of complex configuration framework.