Fixing Windows Programming

Microsoft’s transition from the open Win32 desktop to the closed WinRT app store will alienate many Windows developers… but maybe that’s a good thing. Today I found yet another commercial Windows application – Postbox, an e-mail client from the original Thunderbird team – that’s completely oblivious to high DPI mode. Random GUI elements are hardcoded to 96 DPI font sizes, resulting in mismatched text and labels that are too small to read comfortably on my 120 DPI monitor. In this Postbox screenshot, all text should be the size of the labels outlined in red:

That’s fairly terrible but still technically usable. The following is not. Burnout Paradise, a November 2008 game that I recently got in a Steam sale, presents its configuration dialog in an unscaled and non-resizable window. Several options and the OK/Cancel buttons are completely cut off – hitting Alt+F4 is the only way to close this useless dialog!

For good measure, enjoy that grand classic of broken UI scaling, Apple iTunes for Windows (version 10.7). Note the cut-off labels followed by vast amounts of whitespace:

The renovated iTunes 11 UI is somewhat more usable at 120 DPI, but that must have been by accident rather than by deliberate effort. The font on the help pages is still unreadably tiny, and the new welcome screen shows the old text truncation scandal:

Discussion (Rant)

What can Microsoft do about a developer base that routinely ignores usability guidelines defined 11 years ago? GUI layout is far from the only instance where obsolete techniques and outright hacks proliferate, as Raymond Chen knows only too well. I still run across programs that install to "Program Files" and then try to write user settings to their installation folder. Others dump massive local caches in the user’s roaming profile.

A very high degree of backward compatibility between versions helped Windows succeed, but the downside is now becoming obvious: a pervasive attitude that keeping up with new APIs is unnecessary, that Charles Petzold’s 1999 book Programming Windows is all you need, that every 10-year old code snippet and registry hack can be blindly reused in production code.

The resulting poorly-made applications damage customer perception of Windows itself, just like the crapware that’s frequently preinstalled by OEMs or bundled with installers. Conversely, Apple’s total control over hardware, its new app stores, and its policy of limited backward compatibility have contributed greatly to the perceived quality of its ecosystem.

Just like the Microsoft Surface is designed to raise the quality of Windows hardware, the new WinRT API and its locked-down app store are designed to eliminate bad Win32 programming habits, among other goals. The horrors pictured above would either be impossible in WinRT, or else rejected during mandatory app store certification.

As a fan of open source software I’m not exactly thrilled by this “walled garden” approach, but as a user of commercial software I think Microsoft has made the right decision. Relying on third parties to act responsibly without external pressure clearly doesn’t work. (And judging by the Nexus devices, Google is coming to similar conclusions.)

6 thoughts on “Fixing Windows Programming”

I wouldn’t call WinRT crap and I think the overall goal of Microsoft’s new strategy is sound, but I definitely agree that they’ve been very arrogant and heavy-handed about the transition. Replacing the existing .NET APIs with an incompatible, C++ focused API punishes exactly those loyal developers who followed Microsoft’s own recommendations during the last ten years.

I’m guessing Media Player uses DirectX and explicitly addresses physical screen pixels, not scaled display units. Anyway, apps can always have bugs. The point of a well-curated app store should be to publish only apps without obvious bugs.

After a couple of months, Microsoft doesn’t seem to be doing a very good job at that, though. I hear lots of complaints about the generally poor quality of Windows Store apps. Microsoft just seems to pocket money without bothering to ensure good quality. What a wasted opportunity.