The perfect OS is no OS. An OS is just specialized software that provides services, but by providing those services and only those services, you're locked into that OS, and all those services whether you want them or not.

And we have to do that because we don't want all our software to have to provide the basic services, but we don't really get that: we still have to provide all the libraries it needs, some of which emulate an OS anyway by providing a big, complex runtime.

So I don't think this is an OS problem, it's a build problem. If I can ask a machine what services it has, and ask the software what services it needs, it should be possible to find a minimal solution.

I think NixOS gets very close to this ideal, even though it's obviously built on a traditional OS. But if we're going to talk about the "ultimate OS" I think it's worth it to ask, "how much can we take away from this?"

And the reason to want that is simply driving towards the goal of making software components that are able to work together reliably rather than building these monolithic devices that only a handful of veterans can understand.

What do you think of what we are building @ https://github.com/nanovms/nanos ? We are all about taking things away from the general purpose operating system and only focusing on what is needed to run a given service in prod.