Jump to page content

Bug of the moment 2011-01-10


The fragmented GUI, part 2

I consider Bug of the Moment to be a “pseudo-blog” (“blogged” is the state of your nasal passages during a viral infection). This is more of a blog entry than a bug entry, so bear with me on it if you only came here for the loopy pictures. In the last episode, I remarked on how the Exchange 2010 Troubleshooting Assistant GUI looked relegated to second place compared to the command line. This seems to be something of a trend with Windows: the GUI is growing fragmented, which I consider quite ironic given that Windows has always been a very graphically-orientated system. If Microsoft continue to erode the graphical side of the system, then Windows’s advantages over Linux will weaken further.

User Account Control elevation buttons are a huge offender, especially when you consider that most home users are administrators by their very nature of owning their computer. Having users run with latent administrator privileges that require unlocking on demand is not a bad idea, but I’m not feeling a vibe of success from the implementation Windows 7.

Take file type verbs:

Windows 7 goes immediately downhill from there. Take a file in a protected area of the system, that you’ll inevitably need to modify (the file below is just a random file chosen in a hurry):

Attempt to edit this file and save it, and Notepad will transparently force a Save As instead of a Save, because it’s smart enough to figure out that you can’t save over the file, but lacks the initiative to do anything useful about it. After all, if I wanted to save the text into another file, I would have pressed Save As. (I cannot speak for Mac OS X, but with classic Mac OS, you always felt that the intelligence in the operating system was working with you instead of against you. Even floppy drive access was optimised to limit excess drive seek.)

If you correct Notepad and insist that you really did want to save the file that you just asked it to save, you’re greeted with a classic terse error message:

As an aside, this is what I consider a better effort, displayed when asking for the properties of a scheduled task in Server 2003:

The internals of Windows are too lame to explain what the problem is, but Explorer wrapped up the generic and otherwise mind-bogglingly stupid message with information that gives you genuine insight into the problem.

As I mentioned in the previous episode, file type editing has got worse, not better. This is what you should be able to do:

This alone is broken; due to the Change/Advanced flaw, I cannot modify the verbs associated with PNG files as in the very first screenshot (as that type is in Change mode), although I can use Registry Editor to take care of that. However, as a restricted user, your only option is to put up and shut up:

Of course, this doesn’t stop virus writers from screwing up the file types of restricted users; it’s only the shell that continued to pretend that users are banned from having custom file type behaviour. Apparently nobody told the Explorer team about HKEY_CURRENT_USER\Software\Classes. Worse, though, administrators calling by a computer cannot modify file types graphically using Run As, because, being an Explorer dialog box, File Types cannot be started under alternative credentials. Most control panels used to be able to be started at an administrator command line using just their name, e.g. firewall.cpl, but that was before Microsoft merged more of Windows into Explorer. Granted, there may still be a way to do this; I don’t know. At some stage I will have to waste time figuring out how to undo this backwards step. There is no need for shell integration of control panel, and it was painful enough with Network Connections in XP. If .NET is as trivial as it’s supposed to be, every control panel could easily be a standalone application that can be subjected to elevation and runas.

Anyhow, even if we assume that the Explorer team hadn’t thrown out the baby with the bathwater with the shell, what happens when you want to run a verb with elevated privileges? For example, I want to take that nice file from inside C:\Program Files, and invoke the Edit verb with elevated privileges to allow Notepad to be able to save it.

I think the following addition1 to the taskbar could be useful for starting an elevated session of a program, and it wouldn’t be a huge accessibility concern:

The above is something I did want to make use of earlier, thanks to yet another badly-designed legacy app that wrote configuration data into C:\Program Files. I do hope that all the morons who wrote such badly-designed programs are reaping in the embarrassment, shame and pain of their ill decisions now that Windows 7 has come around. There needs to be a suitable infliction heaped upon each and every one for every time someone has to learn the hard way about AppData\Local\VirtualStore.

This UI “enhancement” could likewise be applied to all the verbs in Explorer context menu items:

Bear in mind that the above needs to be added to not just the verbs, but every Open With and every Send To entry alike, to make sure that nobody is left wanting. If you are going to integrate UAC into the user interface, then it needs to be universal. This is why I’ve also put a shield on Properties, to reduce the UAC-induced complexity of the Security tab. I cannot claim that the above is good for accessibility; it is certainly intrusive, but UAC has already proved far more intrusive. Requiring a key to be held down—dynamically, as with modifiers in Mac OS X menus—to get the extra shields would reduce the intrusiveness but make it even less accessible.

I honestly don’t know what the answer is. Graphical user interfaces make a lot of simple and powerful concepts very difficult. A layered, inheritance-based system configuration model (factory defaults, system, group, user, location etc) with setting-level enforcement at each layer (think final in Java) is much easier to work with using text files or a dedicated configuration editor than it is using control panels. However, this is a moot point as Microsoft have proved time and time again that they don’t understand inheritance. Group Policy, that only operates on its own set of magic settings, is so far from the mark that it’s laughable, as is every other pseudo-inherited system such as Active Directory, IIS and NTFS permissions. F-Secure’s Policy Manager Client does a reasonable job at a graphical implementation of layered, inherited configuration, but imagine if that was your operating system Control Panel!

However, graphical interfaces are also superb for tasks such as tracking e-mail messages (columnar list boxes with horizontal and vertical scrollbars are good), which is one place where Microsoft decided that the command line was superior. If they really wanted everyone to use the command line, how about they implement console windows that don’t suck? Also, why do we still not have an elevate command shipped as standard?

Splitting up Vista’s creation

I considered the other week that it would have made more sense if Windows Vista had been implemented and released in stages, with one release per year until every goal was completed. Stage one, codename XP Secure, should have been focused entirely on implementing the additional security. I don’t know how easily the hordes of shields could have been added directly to XP’s GUI, and how much work would have needed to have been done to GUI the from the offset to accommodate it. XP Secure would have released primarily to all the paranoid companies who value security above sanity; maybe it could have persuaded a few of them that Internet Explorer 6 is not only a dinosaur, but for web designers it’s as good as being made of pure mercury as far as their mental health is concerned.

I still find it disturbing how Windows 7 leaves you with a completely blank screen for what is perceived as a long time, before the dimmed view of the desktop comes up along with the UAC dialog. It takes some getting used to, to train yourself that you haven’t just lost power/had the battery fall out of your laptop, or watched Windows commit hara-kiri. The desktop fade in and fade out during logging in and out displays heavy tearing, as though it’s running without any video acceleration. In fact, it looks just like XP does before you install the video drivers.

Year two would likely be the new driver model. NVIDIA would no doubt still have failed to cough up working drivers, but in this ideal world, Microsoft would have grown a pair and told all the media cartel companies who’s boss and where to shove it with their dreams of hardware copy protection. Sadly, this did not come to pass. It would have simplified Vista though, and saved Microsoft a fortune, that could have been put to better use in both years in fixing all the unending bugs lying around since Windows 2000 and beyond. Things like how Launch folder windows in a separate process causes more problems than it solves through being another ill-conceived option that never received proper implementation. We’re not talking Tweak UI here—flaws in Active Window Tracking for example are more forgivable because it’s a secret feature—we’re talking about a public feature in a standard, unrestricted control panel. People: all the extra options are in Windows (or any program for that matter) are no good if they don’t work. If in doubt, leave it out.

Realistically, year two would also need some sugar coating for tech heads to get them interested in the new system, but it would not yet be meant for widespread public consumption.

Year three would be focused on revising the userland GUI. By now, the new driver model would be seeing implementations from vendors, and we’d be heading towards what should have been the biggest sell of Vista: a fresh, new, logical interface to replace the crusty mess in XP that’s accumulated from Windows 95 on upwards. One where the taskbar doesn’t accept the mouse focus and impossibly end up inside your window stacking order.

Instead, by Windows 7, we still have the same crusty innards, dipped in honey with the pretence of delicacy. I am not fooled.

Footnotes

  1. Lifehacker have posted the The Master List of New Windows 7 Shortcuts. Keyboard shortcuts do resolve some of the issues with Windows 7, such as starting programs from the Dock^WTaskbar as Administrator, or accessing the physical address within the address bar2 of an Explorer window (Ctrl+E) instead of single path components. This is all very well, but all these obscure shortcuts and twisted combinations of holding Ctrl and Shift and clicking miss the whole point of having a graphical user interface in the first place. If we wanted an impossibly arcane system based on obscurity, classroom-style rote learning and guesswork, we would all be using Linux.
  2. This reminds me of another absurdity: multi-part text boxes (e.g. IP address fields) or text box groups (e.g. serial numbers), since Select All, Copy and Paste are all meaningless with such contraptions.

Posted 10th January 2011 – Comments and questions?