Microsoft Windows – all versions, seem to suffer from a similar malady. Any application can ask to have their window sent to the front at any time. In my opinion, this is a poor behavior. Take this scenario for example:
I fire up application X which is a really big, bloated application and takes quite a while to load. Since I’m bored waiting for it, I switch to my email program and start to compose an email. Part way through typing, the main window for application X rudely barges in front of my composition window like a spoiled 5 year old (Me, look at Me, Meeeeee!). At this point, I don’t want to look at that window, I want to finish my email. So, I have to click back on my email window, regain my train of thought, and finish my email. I click send, and NOW I want to go use application X, which should have been waiting just beneath.
It seems to me that if the user is doing something in a window, other applications should not be able to preempt that. At the very most, I’d have designed it so that an application requesting “front” would get promoted to just behind the active window. If the user isn’t typing, clicking, or whatever, then by all means, let it come to the front. This would still interrupt a user who was reading, but the only way to fix that would be to keep track of events. You’d have to track that the user invoked a program, but then brought another window to the front, and so when that invoked program opens it’s window, it would open behind the one the user manually brought to the front. This is a bit more work, but ultimately, the “right thing to do”. Computers are supposed to do what we want, when we want them to do it. If I have manually brought a window to the front, then I want it to be in front. Is this too much to ask?
Other windowing environments (such as X) handle this differently. They aren’t “rude” in the same way, but on the other hand, I find their “focus” system to be a bit annoying (you have to have the mouse cursor IN the window you are typing into).