I recently found Michael McThrow’s quote:
Alan Kay’s Viewpoints Research Institute’s STEPS project from over a decade ago, which was a research project that attempted to build a modern desktop from the ground up with just 20,000 lines of code through the pervasive use of domain-specific languages for specifying layers of the system (see https://tinlizzie.org/VPRIPapers/tr2012001_steps.pdf for the final report). Software would be easier to maintain and extend if it were simpler; this, combined with component-based software design in a manner similar to Apple’s OpenDoc vision (https://www.youtube.com/watch?v=oFJdjk2rq4E), is vital in my opinion for open-source projects that cannot compete directly against the Microsofts and Apples of the world for labor.
We can see these ideas coalescing over a few years in his blog, which he actively explores through MallowOS (a Plan9 like) and covered in further detail here and especially His MallowOS’s component software approach is covered here with similar ideas by Brad Cox and Paul Chiusano
In another comment about Linux becoming a Windows/OSX clone he writes:
…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… 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.
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.
The same attracts me to Scheme, Go and homemade Forths.
Going through Nand2Tetris, SICP, you feel like a magician, understanding the interactions of complex systems, tamed through beautiful abstractions. Rising further, you can explore Plan9 or various toy OSs but the complexity in modern production environments is seemingly insurmountable. (Just compare Plan9 (or indeed BSD) utilities to GNU, often 1/30th the length! Actually comprehensible!) Wir Moderne empfinden ja eine erbärmliche Geworfenheit Thrown in the real world TM, wrestling with production complexity (even not YAML), you get beaten down, eventually copypasting from internet guides, desperately taping sad things together, wallowing in our forefather’s original sin. Non posse non peccare
Seen practically, the crux around which any future User OS rotates is the web browser. Without this, Plan9 is not suitable for day to day use. But the complexity involved in this OS in an OS is beyond that of the OS itself.
SerenityOS' Ladybird browser represents an interesting thrust here (also solidifying/validating the web specifications themselves, just as Go’s second implementation makes the spec the source of truth.) This effort represents the best effort at implementing the ECMAScript, HTML and CSS specifications more elegantly. Unfortunately, those technologies themselves are far from elegant and comprehensible.
In their case, they focus on vertical slices instead of particular specs like: “let’s get login working on discord.com” leveraging the web’s graceful degradation: https://developer.mozilla.org/en-US/docs/Glossary/Graceful_degradation
Potentially, Ladybird could be ported to another elegant OS, reimplementing its overall structure or using simpler utilities or a wine-like model. ???
This would enable us to really use new Lisp OSs like Mezzano, Smalltalks like CogNOS, Cuis or Crosstalk, Oberon, 9Front etc. On the other hand, isn’t disconnecting from this JS infested Ad revenue driven hellscape the whole point?
What are our personal workflows? What are we doing here on this computer anyway?