Here's another research track: software permanence. Modern software bitrots quickly. You spend years creating a large program, maybe 50,000 lines. It becomes very popular for a niche audience. Then your goals change, you have very little time to maintain it, and all of your dependencies bit-rot. Your programming language bit-rots: features you depend on are deprecated and removed. Library dependencies bit-rot: no longer maintained, the old versions are insecure, aren't compatible with Wayland, won't compile with new compilers, and so on. New library versions are incompatible with your code, missing features you require that were dropped from the (e.g.) Wayland rewrite due to being too niche.
If we are software revolutionaries, then how do we re-invent the software stack to support software that still runs and is still usable 100 years from now? It's a big topic.