Tuesday, April 6, 2010

Keeping it real by faking it

We’ve had an issue batted back and forth in our bug-tracking system b/c of different behavior on Internet Explorer 7 and/or 8, compared to their older sibling IE6. It’s not the first time it’s happened, which means that I’ve learned not to automatically toss the issue back at QA with under-the-breath muttering about someone smoking crack. (Muttering that audibly is not advisable when QA’s on the other side of the fabric half-wall—and is probably not advisable at all, come to that.)

Our workstations aren’t set up as virtualized instances of Windows, so unit testing involves caging a laptop from the System Admin and doing something like this:

  1. Making the code changes in the development environment shown on the left-hand monitor.
  2. Testing the code in the Internet Explorer 6 instance on the right-hand monitor.
  3. Testing the code in the Internet Explorer 7 instance on the laptop.
  4. Repeating as necessary until the code is well-behaved in both browsers.

Unfortunately, a laptop with IE8 wasn't available, or there would have been four monitors involved. (Or, on the other hand, I should say "fortunately," as I would have been scrambling for an extra outlet and network jack.)

Technically, you can sort of install more than one version of the browser on the same workstation, but it’s a hack and doesn’t always produce reliable results. And as my pod-neighbor just discovered, installing IE8 whacked the IE6 changeling, so I’m in no hurry to take that route. So what it boils down to is that for each version of IE (major and minor) that you need to support, you have to have enough hardware to run Windows (not negligible with Vista or Windows 7). Even virtualizing a PC (i.e. splitting its processing/memory/disk into separate instances of Windows all running at the same time on the same hardware) doesn't save all that much money b/c of the beefier hardware requirements and the VMWare license. And you still have to pay for every single copy of Windows either way.

Obviously, what’s needed from Microsoft is a reliable emulator for all reasonably recent versions (major and minor) of its browser. I realize this sounds startling coming from an open source software advocate, but I actually would not mind paying for that software. Not at all. When you compare the cost of supporting Internet Explorer 6, 7 and 8 in tandem, a few hundred bucks would be a screaming deal, even minus the I/T support. If an emulator can accurately show me how my web applications will behave (as well as look) under any reasonably current version, bring it: Tractor-beam my IDE straight into that Death Star, baby!

Alas, for all Steve Ballmer's sweaty cheerleading of "Developers! Developers! Developers! Developers!," it's pretty obvious that his sensibilities are still firmly rooted in the desktop application era. You know, the days when you could mail your user upgrades on a 5.25" floppy and blame them for their problems if they dawdled over installing your latest/greatest. The web (and the world in general) is just a weeeee bit more homogeneous than that nowadays, which means that control over the platform has slipped. It's mostly a good thing, from the standpoint that monocultures are dangerous (mainly to their own long-term prospects). But Microsoft choosing to ignore the fact that--just like its own programmers--developers outside Redmond have to worry about backwards compatibility also condemns the third-party ecosystem to the dangers of monoculture.

Theoretically, you could make your website inaccessible to anyone not running the latest browser version. That's a nice, easy solution. And, after all, programmers are forever being cautioned against giving the user too many choices. No doubt you can Google lots of beans & rice recipies before your ISP cuts off your internet connection for lack of payment...although cooking them after the power company cuts the juice (and you can no longer afford gas for your chainsaw to cut down neighborhood trees) could be a tad problematic.