Hacker News new | ask | show | jobs
by linguae 1022 days ago
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.

1 comments

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

By removing the misfeatures that make layers of abstraction seem necessary. Linux has already gone thru this several times with things like the transition from HAL to udev, or the potential simplifications falling out of well written copy on write file systems (gefs is one I particularly have my eye on here). The main things which dishearten me in this regard are, respectively, the complexity of GPUs (and thus their supporting infrastructure in software), and what is needed to support the OS-within-an-OS that is the modern web browser.