Inspired by Erlang I've pondered the notion of building an OS which could be updated in place, without requiring anything to be restarted! That is once an update is downloaded, you're already using it!
If we're imagining rewriting all the software anyways...
The main requirements would be to split the OS into short-running programs that can be individually updated, & a culture of resilience in the face of unexpected errors from upgrades.
Networking code already needs that resilience...