Sunday, March 23, 2014

The King of All Desktop User Interface Pests.

There is one thing that both Mac OS X and Windows are guilty of, and that's the poor implementation of notifications that come from background applications.

I am rather easily alarmed and enraged whenever a background application presents me with a window or dialogue box whilst I am typing in another window, and I continue typing into that new object just to discover instantaneously that:

  1. I have no longer been typing into my intended window,
  2. I may have modified some controls in the process of typing into that window by mistake, and
  3. I obviously hit a key that made the window that just appeared go away, without giving me a chance to see what it is I altered in that window!

And justly so; I cannot trust a computer system that tricks me into doing something I don't intend. Regardless of the purpose of the intended behaviour from the background application doing the deed, it is not reassuring when you activate something that you don't know what, or input data you did not intend, all because of a user interface that changes without warning by apps running in the background… and often more than once in the time of a second.

Windows 8 and iOS have both solved what I consider this as a serious user interface problem, because they both provide dedicated notification services that applications can exploit in ensuring that notifications are flagged to the user somehow, without getting in the way of what the user has been doing in another window. Notifications are out of the way—in another dedicated panel that cannot, by design, interrupt what you are currently doing—and can be called for at the user's convenience.

Both the Windows 8 desktop, and OS X 10.9 Mavericks, feature notifications services that applications can use to send notifications to users, but unfortunately, because notifications are a new concept to these environments, applications need to be re-engineered in order to use the services. Older applications that run under the new operating system environments will still exhibit this painful habit of throwing widgets in your face at the most unexpected moment and catching you off-guard.

However, it was in 1990, when Macintosh System 7 was born, that notifications were done right. System 7 introduced a very good implementation of a notification system for a desktop environment, using the application menu on the right side of the display, and the user interface implementation of MultiFinder which was already established long before. The menu that would normally be used for selecting which application you wanted to switch to could also show that a notification was pending for applications that were running in the background, in which case they would only perform their “alert me” operations when you brought them to the foreground, if they hadn't done so already.

“If they hadn't done so already”, here, means that they may have already displayed their window or dialogue box before posting the notification. But how would this not interfere with the user in the same way the current-generation operating systems do? System 7, right through to Mac OS 9.2.1, make all windows belonging to an application appear in their own “layer"—a behaviour introduced in MultiFinder since System 5. If a background application brings a window to the front, it never appears in front of any window belonging to the current foreground application, which is the application that has your attention. The window may appear at the front, but only in the context of that application; the window is never placed beyond the confines of its own layer. When the application is brought to the front by the user, that window will become the front-most window as the entire layer is brought to the front.

When Mac OS X replaced Mac OS 9 as the operating system for Macintosh computers, it introduced a flaw which has never been fixed to this day—a unified window stack. This allowed windows from all applications to appear in any position in the stack, without any management between prescribed "layers”. While this may have been useful in some circumstances where a user could more finely control the ordering of windows on the desktop without regard to which application a window belongs, this also introduced the serious user interface flaw, where a background application could bring a window to the front, in front of a foreground application—one that has the current keyboard focus. This caused the elevated window to acquire the keyboard focus and hijack your keyboard input without prior notice, and without your intention.

Windows offers the Multiple Document Interface (MDI) APIs, which could be used by developers to restrict windows to appear only inside its parent window, and thus prevent windows appearing in front of other windows belonging to other applications in the desktop user interface. With application developers—and Microsoft themselves—discouraging the use of MDI in Windows versions beyond Vista, users will run into this problem time and time again with no resolution in sight, unless software developers employ the notification techniques used in Windows 8 RT.

Macintosh users fare no better, except with one nice feature. In Mac OS X 10.2, a change had been introduced to the Dock which, when an application icon in the Dock is activated, allows the Window Manager to bring forward all windows belonging to an application, in the same stack order in which they originally appear. This feature allows a more sensible and compatible approach to bringing an application to the foreground in comparison to Mac OS 9 (which did run alongside Mac OS X at the time). In an effort to reduce confusion among users using both systems, the new feature made Mac OS X behave more like older Mac OS versions when it came to bringing applications to the front or hiding applications. But the changes do not prevent windows from being arbitrarily shuffled about as the user interacts with the system [without the Dock], and they do not prevent windows from background applications from spontaneously appearing over the currently active foreground window.

If there is one reason for not trusting a Mac or a Windows machine due to flaws in their user interfaces, this is definitely it. iOS is the only currently-shipping operating system that has had some significant attention to detail applied to its notification system, one that does not interfere with the user, and one that does not allow background applications make surprising appearances. While there are changes to Mac OS X and Windows which may help in avoiding spontaneously-appearing windows, developers of software for these systems, in combination with the operating system vendors who have allowed the flaws to appear in the first place, will need to change their software and their design habits to use the new services and avoid making these nasty traps.

I sincerely hope they do, because fixing this stupid problem is long overdue!


—tonza

Labels: , , ,

0 Comments:

Post a Comment

<< Home