That was a thought-provoking article. Something that interests me is how software systems become more complex over time, gradually deviating from the vision the original developers had. I believe the modern Linux ecosystem (Linux kernel, systemd, dbus, Wayland, GNOME/KDE, etc.) is almost unrecognizable from the Unix ecosystem of 30 years ago, let alone the quintessential classic v6 and v7 Unix systems from Bell Labs. But it’s not just Linux. I think any system that isn’t guided by a “keeper of the vision” eventually becomes huge and complex, especially if it gets widespread use. For example, C++23 is far more than “C with classes.” Common Lisp is quite a beast compared to LISP 1.5. Think of how many features are in Microsoft Office, which has been developed for decades.
I think there’s value in a system that technical users could understand from top to bottom. This is what attracts me to small systems like Minix, Scheme, and Standard ML, just to name a few. However, I’m curious about how the complexity of big systems can be tamed. A system that is hard to reason about even with the source code being accessible is more expensive to maintain and to modify.