This follow on to Windows Vista has been hyped to insane levels. It’s meant to be the second coming, or something. They say it’s what Vista should’ve been, it’s what will kill Windows XP in the marketplace, etc. Enthusiasts are raving about its pre-release builds, saying it’s leaner, meaner and faster than Windows Vista, and that the changes to its user interface are revolutionary.
And yet somehow I can’t seem to get excited about it.
If I’ve learned one thing from writing software and observing software lifecycles, it is that special cases had damn well better really be special, otherwise not only does it become more code to maintain, more special cases to account for until Kingdom come, and more developer knowledge and complexity and more user education to impart, but more importantly, there always turn out to be special cases you failed to account for that perform more poorly.
Case in point: back in 2003 or so, when the Linux 2.6 kernel was first released, it had a “revolutionary” interactivity estimator in its vaunted “O(1) scheduler” that would be able to figure out which tasks were “interactive” (classed as those that would need short bursts of processor resources, albeit with high responsiveness, and then would go back to waiting on something or the other, whether the user, the network or something else), and which were “computational” (classed as those that had a lot of computation to do without interruption, i.e. could be pushed to the background). This then adjusted priorities accordingly to give interactive tasks the boost they wanted.
This all sounded great as a hypothesis, and for a few years people appreciated it. But on lower-spec hardware, those “interactive” tasks happened to need enough processor time to become classed as computational instead, and so some people (like me back then, using a K6-233 processor with FPM RAM) were affected negatively.
Then two years ago, the powers that be finally realized that a lot of the process starvation they were seeing was because of the interactivity estimator, despite years of “tuning” to find the corner cases that suffered because of this cleverness. They ended up ripping it out in favor of a much simplified “complete fair scheduler” owing to the fact that eliminating corner cases turned into a game of Whac-a-mole—the more they tried to fix, the more corner cases turned up. (I laughed, a lot, having noted its deficiencies when on low-spec hardware, once such corner case. Oh, by the way, thanks Ars for losing my name on the byline of that article, among others, despite my requests with each redesign to have it put back. Shows how much respect you have for your older contributors.)
It seems to me Microsoft went a similar way with Windows Vista. Instead of having general-purpose policies that just worked, they tried to special-case audio (for the handful of people doing professional audio processing) into user-space (losing hardware accelerated positional audio) and then adding something called the Multimedia Class Scheduler Service so that the move to userspace wouldn’t impact the audio latency and that the userspace audio stack would get cycles frequently enough to prevent skipping audio.
Apparently the main reason for this was a hyper-reaction to Windows 2000 and XP, where vendors were releasing poorly written kernel-mode drivers that would crash the system, giving the OS vendor a bad name (rather than the IHV that wrote the drivers themselves), and apparently also to improve things for professional audio (though I don’t know what or how).
Of course, something had to give, and the multimedia class scheduler service throttled interrupts to ensure enough of an opportunity for interrupts from the audio device to reach Windows. The biggest impact was seen on network throughput, since each incoming frame from a network interface would trigger an interrupt, and people using gigabit Ethernet without jumbo frames saw their throughput drop off a cliff with Vista. Microsoft tuned things in Service Pack 1, and the impact wasn’t nearly as much, but Windows XP still outperforms Windows Vista on network transfers with audio playing—and without needing a fancy MMCSS to keep audio playing skip-free.
(People did find out how to make the Windows Audio service not depend on MMCSS and to disable MMCSS, but that resulted in very stuttery audio, since now audio needed to be processed in userspace rather than within the kernel itself.)
Another such situation: SuperFetch. Apparently Microsoft doesn’t think that LRU-equivalent algorithms (such as the second-chance style algorithms typically used) that are used for demand paging aren’t good enough, or something, so they wrote a service that would aggressively prefetch pages into memory so they would already be there when the user ran an app, for instance. This along with some other things made Vista a memory hog with an absurd footprint for a piece of software whose primary function in life is to run users’ applications. (That’s right, folks, Windows doesn’t exist for its own sake, it exists to provide a platform for apps. That means it should provide apps services they need and get the hell out of the way, something developers and enthusiasts alike forget from time to time.)
Apparently Microsoft has tuned this a bit for Windows 7.
Windows 7 keeps these (in my opinion) misfeatures around.
What’s new in Windows 7? Aside from a lot of “tuning”, it brings us a new taskbar paradigm — a two-level window switcher. First you pick the application, then the specific window through what I’m sure is meant to be a slick window view.
Here’s the thing. This is counterproductive if you’re actually trying to switch windows quickly. It may be elegant in that the window paradigm isn’t conflated with applications any more. It may get around the kludges that faux-SDI applications like the Office apps have to implement to get their documents in the taskbar. But it makes me look and click multiple times to get at my window. That’s counter-productive. With the older taskbar model I just needed to find my window by its title, and that was good enough. Guess what: that’s faster. I’m not a fan of this new Windows 7 behavior.
What I am a fan of is the Aero Snap feature, at least on a higher-resolution widescreen display. I generally hate widescreen displays because most of my activity involves text. Text is generally most easily read when in relatively narrow columns, since it makes it easier to find the beginning of the next line once the end of a line is reached. This means that for a certain volume of text, taller is better. Widescreen displays with a given diagonal size might be good for widescreen movies, but they’re much worse than standard-aspect (4:3) displays were for the same diagonal size.
Windows 7 introduced this feature, Aero Snap, that makes it easy to resize windows to take up half the width of the display, side by side. Drag the title bar of a window, taking the mouse cursor to the right or left edge of the screen, and release, and the window finds itself repositioned and resized as the left or right “pane” on the screen, with the full height and half the width of the display. This makes widescreen displays more bearable, making the column of text narrow enough to be able to read properly, and it also helps by e.g. having another document to edit or compare with by its side.
Fortunately, someone implemented this feature for older versions of Windows too, so it isn’t Windows 7 specific.
This is one of the two features I’d actually want from Windows 7.
Then there’s Aero Peek, which kind of lets a user obscure all the windows by mousing to a specific area on the taskbar, and then pick a window by outline. Sounds fancy but a slower visual-search means of picking a window. Thanks, but no thanks. I’d rather have a feature like launchy, GNOME Do or Katapult that I can bring up with a keystroke and type in the application name or window title to switch to it. That beats looking for the window (via low-contrast outlines) I want to switch to.
One feature that I do like in Windows 7 is the progress status that applications can indicate in their taskbar buttons. For instance, some application that’s showing a progress bar and cannot be interacted with until it’s done can show progress in its taskbar button itself. That’s really nice and I wish I had something like it in Windows XP. Still, it’s not a feature worth switching for, on its own.
Then there are jump lists. These provide a set of common tasks as well as perhaps a list of recently used objects for an application when its button is right-clicked on the taskbar. Nice to have, but some applications (like Windows Media Player) already support similar functionality on older OSes, and I’ve never bothered using them on those apps. (Not to mention that I’d need to clutter up the taskbar with persistent app buttons to take advantage of the feature. Space is already at a premium with the usual number of applications I have running, and the taskbar is short enough that having enough of these would make it pretty annoying to use. I’m not a fan of the Mac OS X dock for very similar reasons. No thanks.) Another feature I’m not particularly enthused about.
Oh yes, the new taskbar, which is really more of a “dockbar”, having been “inspired” by Mac OS X. No thank you, at all. Harder to tell when a (potentially memory and processor hogging) app is running. Harder to distinguish from an app with windows open. Mixing running and non-running apps on the same taskbar is ugly, and while it satisfies one UI golden rule (making sure widgets stay where they are for procedural memory to be effective), I’d really rather have a simple window list with specific areas for a handful of app launchers and status icons rather than what’s effectively now a fancy app menu. Punt.
Device Scape, the thing that allows vendors to incorporate actions and configuration settings for their devices, when they’re attached to the system, to present them in a unified way in Windows Explorer. It’s a really good idea, but I don’t have much gadgetry in the first place. The only things I can think of that would benefit from this are my multifunction printer/scanner and my phone. Both have their own custom apps, though, so I don’t think I’m missing much. Again, nice to have, not worth switching for.
The one thing I was actually enthused about with Windows Vista was UAC, ironically, the one thing people have found most annoying about it. My background is with UNIX systems, where users generally stay unprivileged and elevate privileges to do privileged tasks. I’ve tried on and off to use Windows the same way, as an unprivileged user generally then elevate to an administrative user to perform administrative tasks, but prior to Windows Vista, a lot of administrative functionality was tied into the Windows Explorer shell, which did not provide the means to elevate itself when showing privileged settings. There are some kludges around it that involve running a separate privileged instance of Explorer to do administrative tasks that I only found out about after I’d started using Vista.
Vista of course took it a bit too far, so for instance if I wanted to take ownership of a folder then change its ACLs, I’d be prompted several times during this set of actions (and since I was running as an unprivileged user rather than a member of the local Administrators group, I’d need to provide a password each time). UAC was far from what I’d envisioned as a sort of automatic gksudo/kdesu. I’d hoped for an elevation mechanism that would be invoked whenever the system found insufficient privileges, and that would persist the authentication for some time (which is something that sudo in the UNIX world does). What I got was a relatively dumb system where the application would actually need to be UAC aware and explicitly ask for a UAC prompt to be shown to the user when privileges were needed, and of course UAC doesn’t cache anything. So you still have “legacy” apps that aren’t UAC aware and can’t trigger UAC when they need privileges and therefore fail when run unprivileged, and those that do still can’t cache the privilege tokens for later.
Windows 7 tried to alleviate the burden, not by doing the right thing and caching credentials for a related sequence of tasks, and also automatically triggering UAC when inadequate privileges were detected, but rather by adding another level of UAC prompting that allowed Microsoft-signed code to elevate automatically (i.e. not prompt the user when it was Microsoft-signed code requesting higher privileges via UAC). People of course very quickly found ways around UAC exploiting this fact, simply by using parts of Windows used to launch any code (such as rundll32, used to run arbitrary code in DLLs, signed or unsigned; rundll32 is, of course, Microsoft-signed) to run their code that needed to be privileged, thus suppressing a UAC prompt.
Since I last used Vista, I’ve become a bit complacent and no longer care as much about running unprivileged. If I ever do again, there are ways to do this in XP that I could use instead.
Then Windows Vista and 7 both use indexing extensively. Both of course have the little search box in the Start Menu. (By default of course only the Start Menu contents, files within user profiles and things like Web history and contents of visited pages are indexed, which makes it useless if for instance you’re looking for a specific file in %PROGRAMFILES% or %SYSTEMROOT%. I’ve rarely had Windows Search find what I was looking for.) Windows Vista introduced I/O priorities which clueless “enthusiasts” screamed would prevent performance loss as Windows Search indexed (here’s a hint: no matter what you do at the software level, you can’t mask disk access times when what would’ve been sequential I/O now introduces seeking; this is now mechanical latency. Good luck with that, fools), but of course those of us using portables with 4,200 rpm drives noticed the (vast) difference between indexing turned on and turned off.
Microsoft apparently noticed this too, and they’ve mellowed the Windows Search service to be a lot less aggressive in its indexing when there’s user activity.
Still, given its stunning lack of success in finding the things I want it to find (maybe I tend to organize my files better than most people? Or maybe I have a better memory than most that helps me locate files relatively quickly? I don’t know, but the files I do want to find might be obscured more than most people’s, so maybe that’s why it fails more often for me), I really find it hard to be in favor of this new feature. I understand it’s fantastic for a lot of folks; it isn’t for me.
Windows 7 builds on Windows Search technology to provide “Libraries”. These are effectively search folders that find types of content all over the (indexed locations of the) disk and present them as folders that will have all the files of those types in all the indexed locations. This is a feature I’d want, actually. But I don’t want to pay the cost of indexing for it.
So maybe I’m off-base on this, but I really don’t find much in Windows 7 that would make me switch to it despite the huge hype. There are some really nice features there, but also a number of costs to it that I don’t want to pay.
Microsoft, if you ever decide to create a Windows 8 KISS (“Keep It Simple, Stupid”) Edition, I’d love to give it a spin. Until then (or whenever I can no longer run apps I really want to run on Windows XP, whichever is earlier), XP it is.

















