Most software does not "need" network access, it just ends up being used for telemetry, serving ads, and checking for updates you probably don't need anyway.
> Direct hardware access (such as games accessing the GPU)
"Direct", meaning they need a context handle and some shared memory to get composited by the OS. Still, I'm honestly not sure why this isn't a solved problem today. Why are GPUs not virtualizable the way CPUs are?
> - Sharing data to other software > - Consuming data from other software
Software can be grouped together and allowed to talk among eachother within a certain context without giving any given piece of it the ability to burn the world down.
You'll have a hard time convincing me that taking control away from users is a better solution.
I agree that users need full control. I also think a few decades of personal computing have shown us that the defaults should be pretty safe and therefore restrictive.
Users should have to jump through a hoop or two (perhaps as simple as `sudo enable-expert-mode` in a terminal, or some such) before being able to shoot themselves in the foot.
As a result, all users are imperiled.
- Network access
- Direct hardware access (such as games accessing the GPU)
- Sharing data to other software
- Consuming data from other software
- etc.
As we've seen, we wind up needing to turn a bunch of these on for most software, and while it's certainly better than giving them carte blanche over the entire system, a handful of these permissions are enough to work some skullduggery.