summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--complexity.html64
1 files changed, 64 insertions, 0 deletions
diff --git a/complexity.html b/complexity.html
new file mode 100644
index 0000000..818373d
--- /dev/null
+++ b/complexity.html
@@ -0,0 +1,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>