A million small things, but the main ones
- An OS designed around sharing structures. That can clash violently with modern safety and stability standards. The only ones looking into it today are the SASOS crowd.
- Libraries done right (at least in the Exec setting). Not being dependent on a specific version or placement as long as it is available and the version is high enough.
- Datatypes. The implementation might not support streaming and similar, but the idea is so right. In Linux land there is not really anybody who can declare that a component so high up in the stack is a standard component.
- Media naming&handling. Not having the physical unit, but the media mounted as your action target. Doesn't make as much difference today when you move less media around.
- Handlers. Ties in with previous point, but makes for programmable media interfaces. Like the text editor that exports the open files and lets your compiler load the file straight from memory. They missed the boat on not making and defining STDIN: STDOUT: and STDERR: though.
And then there is the reverse lessons about what not to do
- Make clear what it does not and can not do. All the safety and stability issues you have for multiuser, bulletproof, nonhackable has been known since the 60s. So either make room for _everything_ or declare where the end of the road is before you start.
- Printing needs a strategy. Preferably a good one.