Why Internet Explorer 10 Metro should have a different User-Agent

So, you may not know this yet, but Windows 8 has these two different “user modes”, one is the normal desktop windows experience that we’re all accustomed to and the other is a more “smartphony” or “tablety” experience called Metro. The usage is a little bit disjoint and confusing for my tastes, but that isn’t really the issue. The issue relates to Internet Explorer 10 (IE10), and how it behaves and operates on Windows 8 in desktop vs metro mode.

The Problem

You see, when running IE from the Metro experience, IE10 behaves in a different way. The UI is different, and one of the more notable differences is that no ActiveX plugins will work, at all, period. If you’re running is desktop mode, then IE doesn’t have this limitation and works pretty much as it does on Windows 7. Fine, a hard line decision that seems to stem from their push to get people to write HTML5 and Metro apps, but I’ve got no real issues with that either. The issue I do have is this: there is no way for a web app developer to tell if IE is running in “metro mode” or not. This is a problem.

You see, I work on a product which requires a native plugin to work. There is no HTML5 way to monitor a screen for changes and then capture those changes, compress them efficiently and then send them to a server to be shared with other people you have elected to share them with. This is the kind of thing that is only possible through a native code that can interface with the HTML on a browser page, and so our product requires a plugin that makes available an ActiveX control that our HTML web app can communicate with. So, for our product to be able to work on Windows 8, you’ll need to be running on IE10 from the desktop, not in “Metro mode” (or Firefox or Chrome, we have plugins for those browsers as well that work just fine). However, since we have no way of detecting that you are in Metro mode, then we can’t put up friendly UI to explain that we won’t work in Metro mode. To our code, everything just looks like you don’t have our plugin installed, and we will desperately try to install it, to no avail. The easiest solution to this, for me, seems to be some sort of addition to the User-Agent string that IE10 in Metro mode publishes to indicate that it is in Metro mode.

X-UA-Compatible: requiresActiveX=true

Microsoft has attempted to add something, but, unfortunately it isn’t acceptable. You can add a HTTP header to a response, or a meta tag in your HTML to indicate that your page requires a plugin. This will cause IE running in Metro mode to display something like this:
IE10 Metro redirection to desktop mode
However, this UI is fairly easy to miss, goes away quickly, and doesn’t allow for any indication as to what parts of the website might not work due to the lack of plugin support. All of which could be handled by the web app were it able to detect that the features were unavailable.

Plugin Free Web

In doing some research on this problem, I came across some sentiment that plugins don’t belong on the web. I find this disconcerting. I understand it to a point, there are certain things that are becoming possible with HTML5 and the hope is to push people in that direction instead of relying on browser plugins (ie. Adobe’s Flash). The problem is where web applications need to do things that are outside of the browser sandbox and will likely NEVER be possible using HTML technology alone (ex: Web-based Application Sharing). For these applications there will always need to be some sort of bridge from the web application to a native component, be it a plugin or a native app that should be launched to take over the rest of the interaction. Even still, if the stance for one particular browser is, “no plugins, tough luck” then there should at least be a way for web developers to be able to detect this browser so that they can present clear information to their users about what is going on and what they can do.

I am rushing this post out a bit, and I’m sure I’m missing some key points, but I hope some people from MS will chime in with comments on this, or even better, make some changes to IE10 to fix this problem. I also hope some other web developers will chime in with comments of how this problem is effecting your applications as well.


Not too long ago Jeff Attwood offered to give away some of the domains he had registered as potential domains for what would become stackoverflow.com.  I called dibs on HumbleDeveloper.com and after some effort to try to figure out that GoDaddy didn’t want to be helpful in facilitating a transfer within registrars, Jeff transferred the domain to me.  Which is awesome!  Thanks Jeff!

Eventually, when I get some free time…which I have precious little these days while working and taking 2 grad classes…I plan to turn it into something the world truly needs.  Another programming related blog.  But this one will be awesome, honest :)

Until that time, the page will be a tribute to Jeff’s awesomeness.  Thanks again, Jeff.


Compilers: Principles, Techniques, and Tools Cover from Amazon.com

Charles Nutter:It is a glorious day in JRuby-land, for the compiler is now complete.
That is some cool stuff. I think it is very cool that while a lot of people are pitting Java and Ruby against one another, that there are other people making an effort to bring them together.

In related news, I’m taking a class at the Harvard Extension School this fall on Compiler Design and Implementation. So far I have been enjoying it quite a bit. We are using the “Purple Dragon” book, which has been tough to read in places but worthwhile to get through. It has been a long time since I’ve had to read something that has this many induction proofs in it :).

Cat Wrangling

Paul Krill:

Can forming six committees result in simplification? OASIS believes this is the way to go with its SOA efforts.

Forming six separate committees for this effort does seem to be a bit of overkill. I like the idea of SCA, and I want it to gain some traction. I’m a bit concerned that this handful + 1 of committees will just create a disjoint handful + 1 of specs that are impossible to follow and keep up with or that only get implemented piecewise. I really hope that doesn’t happen, because then the effort will be a waste of time.

Please, learn something from the WS-* crap storm.

New Firefox

Call me an eager beaver, but I downloaded the new Firefox, which you can get from here now. So far so good. I was quite pleased that only 3 of my extensions were not compatible, and only one of those, LiveHTTPHeaders, is one I’ll miss.

I haven’t really played with it much yet, but some of the new features don’t look too bad, especially the integrated spell checker.

Technorati Tags: ,

The Switch

Well, I realize that I am a few steps behind some people, but this weekend I decided to take advantage of North Carolina’s tax free weekend and Ashley’s status as a “student” to get a 17″ iMac tax free with educational discounts bundled with a free (after rebate) iPod Nano and HP printer/scanner.  It was a pretty good deal, and I have been wanting to check out the world of Mac for a while now.  Ashley’s laptop is painfully slow and she really doesn’t need a laptop anyways, so I thought the iMac would be the best/least expensive way to approach the problem.

It is a damn sexy machine.  I’ll give Apple that much, they know how to make things pretty.  It is pretty cool what you can do when you make it so the machine isn’t intended to be field upgradable.

Of course now Steve Jobs is likely going to announce a bunch of cool stuff at WWDC, but whatever he announces, I’ll likely not get the deal I did yesterday.

I welcome my new computer into my home.

Technorati Tags: ,