summaryrefslogtreecommitdiff
path: root/complexity.html
blob: 818373d90351a3a0bfb5a9d11d288b95bd9540a6 (plain)
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
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>A word about complexity</title>
    <link rel="icon" type="image/png" href="/img/favicon.png">
    <link rel="stylesheet" href="/style.css">
  </head>
  <body>
<main>
  <h1>A word about complexity</h1>
  <i>Written on 2025-09-14 by Rodrigo Arias Mallo</i>
  <p>
  After spending some time dealing with problems derived from the complexity of
  the web, I would like to write something about it.
  </p>
  <p>
  It has come to my attention that the GPL and other free-software licenses
  don't seem to be enough to protect their core idea: "[to] guarantee end users
  the freedom to run, study, share, or modify the software". There is another
  barrier that prevents users from being able to modify the software:
  <strong>complexity</strong>.
  </p>
  <p>An individual or small group of individuals with a common goal of modifying
  a piece of software should be able to do it. However, this doesn't seem to
  work in practice. For example, despite Chromium being licensed with a
  permisive license, people cannot just fork it and reintroduce support for
  Manifest V2 to continue to support it on their own, to be able to use
  ad-blockers as most people would want. The cost of maintaining a working fork
  is just too high because the codebase is too complex. The right to modify the
  source code doesn't seem to be enough.
  </p>
  <p>
  One of the first changes that I introduced when I started to maintain Dillo
  was to try to limit the complexity of the browser to guarantee that we don't
  accidentally arrive at the same situation. So I decided to distribute the
  releases in a single floppy disk, which bounds the extension of the source
  code to 1.44 MB. This is far from being perfect, but it works in practice for
  our particular case and is easy to measure. If we eventually become evil
  (hopefully not), another party could fork the code and continue without
  requiring a gigantic team of developers to maintain it.
  </p>
  <p>A side effect of not being able to extend the software to implement all
  the features you want, is that you eventually make it interoperable with other
  programs. So, instead of having to enforce the UNIX philosophy ideas of "doing
  one thing only" and "write programs that work together", you already get them
  as a side effect. If you try to include support for additional features in the
  same program, it just doesn't fit. So you are forced to interoperate with
  already existing software if you want to add support for it. For example,
  instead of adding support to display videos or audio in Dillo, we added the
  support to open them in external programs. This keeps the browser simple.
  </p>
  <p>
  If this rule continues to prove to be effective, it would be ideal if it could
  be added to a similar license to the GPL so that it guarantees that a given
  program cannot grow outside of a given reasonable limit. It would keep the
  software permanently small so that it always remains hackable.
  </p>
</main>
<footer>
<a href="../index.html">&larr; Back</a>
</footer>
  </body>
</html>