Windows 8 seems to have chosen to silently shutdown applications that misbehave, there is no message informing the user something bad happened and no information on why the application closed.
I heard through the grapevine that employees at Microsoft are tired of customers blaming them for crashes and that they believe when they display an error to the user the user will accuse Microsoft of the crash instead of the app developer. Regardless of whether that is true or not is it really not a good idea to display error messages? I thought that error messages at least give users something to use when they are searching the web for help or talking to customer service. What possible good reason is there for crashing silently and not showing an error message?
2
At work, we use a certain email program that is known to crash from time to time. When it does this, the app displays a “please wait” message box while it submits a crash report, whose only real purpose is to keep me from re-launching the app while an error log is submitted.
Importantly, WINDOWS does not ever display an error message. That’s the job of the application, and the operating system has no business leaving the app’s window drawn with a “this app is busted” dialog showing.
In general, a user should ONLY be shown an error message when there is something they can do. An application should display an error dialog if there is a reasonable expectation that the user is waiting for the app; if your app is silently running in the background, displaying an error message is likely not relevant.
And Windows 8 silently killing apps is no different than android or iOS doing the same. Especially if it’s a “metro” app, which is meant to be largely managed by the OS anyway.
2
Speaking from my code, and not microsoft’s I would say that there are times I might hide errors from users. Usually, these are times when one of several things is true:
-
There is nothing the user can do with the knowledge
Imagine that your program hits some limit that it cannot recover from. Regardless of what the user does, you know the program has to be restarted. In this case, sometimes you might hide the cause from the user. BUT, and it is a big BUT, the program really should avoid this line or reasoning if at all possible. Take running out of memory for example. That might be unrecoverable, but if you never tell the user, they can’t provide more memory.
-
My code can reasonably recover and the user can’t really help
This isn’t related to the scenario you describe, but there may be times when a program has an issue that it can handle, and not tell the user that it happened. But again, hiding errors like this could hide a deeper problem that the user could avoid in the future.
-
I don’t know the error or handle it
In your example, Windows 8 may be shutting down “bad” programs. But what is bad (too much memory) and why they are bad are two different things. I could see deciding that it is better to just shut down than it is to provide an overly generic message or a bad one.
In all these cases, I would say that hiding an error from a regular user might be OK, but the error should be logged somewhere for a power user or administrator.
If it is not shown to the end-user, then it must be shown to an administrator (if the computer is managed by a company that owns it, e.g. in a workplace), or an error signature is being collected and uploaded to the Microsoft HQ and then classified into a Winqual bucket.
Apparently, by deciding not to show the error message to end-user, they also decided to secretly collect the error information without giving end-user a choice. This will massively increase the opportunity for collecting software errors on a massive scale.
If the crashing software happens to be Windows-certified, Microsoft can take actions by revoking it, or by implementing special workaround for this particular software, and push out the workaround (again, secretly) to everyone who happen to use it.
This is just my pure speculation.
1