A rule that *every* UI I've ever used breaks:
- The user gives you the orders, carry them out.
If they click End Task... end the damn task. If they click on a button, make that button perform the action. If they are clicking on a Stop button - that takes 100% absolute priority over the process they are trying to stop. If they are clicking a button in a UI... you make it show they clicked it IMMEDIATELY... and then queue the fractions of a second of task it takes to do, rather than "wait".
Linus Torvalds once expressed something similar - user actions are the highest-priority request on a desktop operating system. The file-copy can take a fraction of a second longer - but the button that says copy should depress immediately to let you know it's happening. No process on the machine should be so overwhelming prioritised that the error message takes a minute to appear, the machine chugs, the screen doesn't draw properly, the mouse stutters, the UI doesn't update, or anything else.
Not one desktop operating system that I know follows this. Not one mobile operating system, either. When I press the Home button on my Android phone - take me to the home screen. Everything else can wait until I'm there. When I tap an icon, initiate that action, everything else that's happening can delay until I'm not tapping the screen again. When I'm drag-dropping, don't let ANYTHING pop up or stutter the process, they can all wait for me to do what I'm doing - giving the computer a command.
When it's a server, we don't need to worry, but even there - if root says do something, on the command line - then just do it. It's more urgent than any hour-long RAID resync in the background and might well be critical to that RAID-resync and/or cancelling it if it's slowly trashing data.
By way of a bonus, this makes the computer feel a billion times more responsive even if it's actually taking slightly longer to do the background actions. Which is the right way round. I can bring a computer to its knees by scheduling the Windows Search database update when a user is in the middle of doing something. That just shouldn't be possible.
Nobody does it. And yet "user-initiated action" is very, very, very easily distinguished from background processes and running programs and every other type of input.
The user is king. Not doing what they say is failing at being a useful tool. Every example of a rogue action on a computer is a prime example of not respecting this - pop up windows, persistently annoying notifications, swipey-slidey-hidey menus, viruses being able to bring a computer to an absolute halt and stop the user removing them, Cancel buttons and file copy dialogs that just do their own things when busy and totally ignore the user, forcibly changing the default browser, etc.
All the UI/UX designers in the world have somehow forgotten / ignored this for 40 years, despite being frustrated in their own use of machines by the exact same thing.