Thursday, October 24, 2013

Windows Update is too obtrusive!

Though Windows Update is a necessary evil, I argue that it is an unnecessary burden on us Windows 8 tablet users. In fact, it is an anachronism, a carry-over from the desktop-only days of Windows. Let's get rid of the crummy UX, I say, and preserve the best part of Windows Update - it's underpinnings!

Here I propose an alternate user experience that takes advantage of the advances introduced in Windows 8, and an extension that Windows should implement in the near future. The proposed workflow won't be ideal for everyone or every scenario, and Windows should provide an option to disable it if they choose to implement my recommendation. But for the 90% case, this will be a huge win.

Context

For the million or so Windows tablets owners, there are many annoyances that we have to deal with on a daily basis. Much print has been dedicated to chronicling the sub-par experience of owning a Windows tablet, so let me not repeat what you already know. I have patiently adapted my usage patterns to suit the vagaries and idiosyncrasies of Windows 8. Windows 8.1 improved many things, but it left untouched what I reckon is the single, worst user experience in Windows today - Windows Update.

The Usability Black Hole

The Windows Update user experience has stayed almost unchanged, user experience wise, since when I worked on Vista at Microsoft. The default setting is for updates to be downloaded in the background. Once they are downloaded, Windows picks an inopportune time to throw up a dialog to install updates and restart Windows. Once dismissed, it chooses to harangue you until you cave in. The experience on Windows 8 is particularly insidious:

1. The dialog is *always* modal
2. If I choose to restart, my system's current state is not restored. In other words, open application windows are not restored.

Shudders!

An alternate approach

Windows 8's new model for Metro-based applications mirrors that of modern mobile operating systems. Applications are "hibernated" when they are in the background to make way for foreground applications and background services. Let's take advantage of this application model, available telemetry data in Windows, and a proposed extension to the application model for desktop applications, shall we? Let's get started.

1. Prepare for Updates

From the first day the system is used, use telemetry to record times when the computer is idle. Once a requisite number of data points have been collected, the system can deduce the best time to update itself.

2. Download updates

Download updates in the background.

3. Opportunistically install updates

During the next update install window, deduced from telemetry data in step 1, perform the following:
1. Save the state of all running Metro applications - background and foreground
2. Save the state of all running desktop applications, like the OS does today when hibernating (more on this later)
3. Save the order of applications, Metro and Desktop, for restoration when the user logs in (more on this in the next section)
4. Start installing updates
5. Reboot, if necessary
6. Finish installing updates
7. Present the login screen to the user

4. The Clincher: Updated post-login experience

When the user logs in to the system after updates have been installed, the operating system restores the last used foreground application in both Metro and desktop. In other words, the user is brought back to the application he/she was using instead of being taken to the Start screen with tiles or to the vanilla desktop (8.1 onwards). Ergo, the fact that the system was updated is transparent to the user.

The Upside

1. Users are always using the most secure version of Windows there can be
2. Updates are installed seamlessly, with minimal user intervention and interruption to their workflow
3. Windows Update becomes a *true* background service, like it should always have been
4. No more Windows Update! (3) covers this already, but typing this was cathartic.
5. Windows catches up to what Mac OSX, iOS and Android (I believe) are already doing today

The Loose End - Hibernating Desktop Applications

Windows developers, Arun Kishan and his band of developers, will have to invent a way to hibernate individual desktop applications. I know his team and he can do it; they just need the right motivation. Him and I discussed what this would take many years ago, and the tech was too complex then. If it still is, it needs to be simplified. He got rid of the Dispatcher Lock for crying out loud. This is a child's problem in comparison.

No comments:

Post a Comment