It's a good thought experiment, for sure. Do you have ideas of different directions for something fundamental? Outside the design of the computer system, I'm thinking about the problems we currently face with identity and trust. Maybe that's something that gets baked into a ground up reimplementation of TCP/IP.
I have. I think about UI a lot. I would love to see flat UI, not "flat" in aesthetic sense, but flat in hierarchical sense. Like photoshop menus, fighter jet cockpits, control panels and 90's porsche dashboards - give me a dedicated button exposed upfront. Laid out in logical fashion spatially - a tool bar group for all things audio, another one for display, and yet another one for devices. Ofcourse when number of items are dynamic, dropdowns are ok or another popup window is fine. No icons. Only text (sometimes abbreviated like CTRL PANEL).
IMO hierarchical deep menus are logical but they take up precious time when you need to do that action 80 times a day. Same benefits can be obtained by well designed layout (with borders, background colors and proper labels).
Most people would find that dauting. I think hiding stuff behind menus is not a good idea even though on surface it might feel like making it less complex. In fact, the complexity is the same, just visual clutter is reduced. I argue that we're really good at looking at visual clutter, my professor's desk is a good example of that.
There's a lot of scope to simplify the developer stack. The web was never meant to be used for apps and it shows, badly.
For the operating system layers, if you build a machine that doesn't expose an ISA, in which all code is run via a polyglot VM like the GraalVM/JVM, then you can more easily design a competitive CPU because suddenly you can use flat, direct physical address space mappings with an ISA that is throwing out old instructions whenever you need to. No need for an MMU, TLBs and all the other page table walking logic, IPC can be drastically simplified.
Singularity / Midori was the most complete exploration of this concept, by Microsoft Research. Unfortunately they kind of went down a few bad R&D paths, in particular, by trying to match the performance of C++ code and relying too much on formal methods - i.e. all stuff interesting to implementors - instead of researching things interesting to developers.
That's why the right way to re-invent computing is top down, not bottom up. Take an existing Linux distro and start to replace bits one step at a time, starting with the desktop environment, the app and data models, network protocols etc. But all the drivers and filesystem goop remains the same - limited potential for innovation there. That said, if you want to, these days you can reimplement drivers in userspace using whatever framework you like, reducing Linux to basically a fat microkernel.
Yes, it’s the classic “Should we do a complete rewrite?” question blown up to an epic scale. The answer is usually “no” or “rewrite one layer” but their are times when things aren’t modular enough or the fundamental architecture is lacking.