A word about complexity

Written on 2025-09-14 by Rodrigo Arias Mallo

After spending some time dealing with problems derived from the complexity of the web, I would like to write something about it.

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: complexity.

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.

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.

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.

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.