Remix.run Logo
cosmic_cheese 3 hours ago

> But the OS should be as lean as possible because the entire reason is to run other programs.

In my mind Classic Mac OS (minus its design issues) is the ideal to strive for here.

It was barely even an OS and more like a substrate for GUI applications to run on top of. Even “essentials” like networking and USB support were implemented by way of extensions which could be disabled at will. If you disabled all extensions you’d get something resembling a full color version of the original 1985 System 1.0 that took almost no resources. This was great for squeezing out every last drop for things like games and emulators.

EPWN3D 2 hours ago | parent [-]

It was that lightweight because it provided basically none of the functionality that is essential to a modern OS. Because it wasn't a modern OS.

The surface area of stuff that an OS has to do today is absolutely massive, and the dependency graphs are poorly understood even by the engineers who work on those systems. Innocuous pieces of functionality have a way of becoming load-bearing over time.

If you ran around disabling random bits of functionality in Windows because you wanted to reclaim some resources for your games, you'd probably wedge the OS, cause random crashes, and prevent your games from even launching. Like you might think "Well my game doesn't need Bluetooth, I only use a wired controller!" but I would not be surprised at all if yanking out the Bluetooth stack from the OS caused random crashes and hangs.

cosmic_cheese 2 hours ago | parent | next [-]

I’m not convinced that it’s impossible to build a modern OS in a way that’s properly modular and allows most functionality to be disabled entirely (as in never even loaded into memory).

Windows almost categorically can’t because it’s only ever been developed organically and is pathologically backwards compatible, which keeps it forever tied to past design decisions.

Linux could get a much closer but is hamstrung by monolithic kernel design which puts more functionality there.

You’d need a clean sheet design which positions most subsystems as discrete components.

skydhash 25 minutes ago | parent | prev | next [-]

> The surface area of stuff that an OS has to do today is absolutely massive, and the dependency graphs are poorly understood even by the engineers who work on those systems. Innocuous pieces of functionality have a way of becoming load-bearing over time

It’s not that huge. I use OpenBSD and the code is surprisingly approachable and readable. And even with no support for runtime modules, it’s pretty easy to customize and strip out whole features. Current complexity in something like linux is stretching the subsystems to support a huge array of use cases.

mitxela 2 hours ago | parent | prev [-]

[dead]