Decoupling the hardware components is a step in the right direction. I believe it helps reveal the fact that operating systems do not have to be large and centralized as they are now. Each component can run whatever software is needed for it to best provide whatever services it can provide. I could have a computing component which ran Linux or any yet to be developed system and as long as there is a way to discover the capabilities of other components in the same domain then the UI component I’m running could connect the Linux component to any available storage unit in the domain which implements the required capabilities. This obviously scales but in ways which are dependent on the bandwidth requirements. Communications between components should be encrypted, of course, and each component should be secured against tampering (yes, i know, easier said than done).