News is just in from Microsoft that Internet Explorer on Windows Phone 8.1 Update will support legacy webkit-prefixed features.
Now, obviously I can’t speak for Microsoft or the IE team (Bill Gates despises me since I beat him in a nude limbo competition at Patrick Lauke’s birthday disco a few years back) but this brings a wry smile to my little face. It fell to me to write the blog post announcing that Opera was going to support some -webkit- prefixed CSS and be hated by the Internet for the 2.6 seconds it takes before someone more evil pops up.
Those in the know could guess this was coming. At a CSS Working Group meeting in February 2012 (search the minutes for “Vendor Prefixes”) this exchange took place:
tantek [Firefox]: At this point we’re trying to figure out which and how many webkit prefix properties to actually implement support for in Mozilla … Currently we have zero. Zero is no longer an option for us.
Florian [Opera], Sylvain [Microsoft]: Zero is not an option for us anymore either.
The reason that IE are doing it now, and we did it then, is simple. WebKit browsers, like other browsers, shipped experimental CSS with a prefix. When the CSS property was considered stable, all browsers apart from WebKit removed support for the prefixed version. WebKit browsers, however, did not remove the prefixed version, supporting it in parallel with the unprefixed syntax so that sites that had been made before the “standardising” of the property would not break.
Moreover, lazy developers only tested on WebKit browsers, so didn’t even add the -ms- prefix for Microsoft, -moz- prefix for Firefox or -o- prefix for Opera, so those browsers got a markedly worse experience.
At Opera, we did what we could with a relatively small team to contact site owners and developers and ask them to change it, but there were simply too many to deal with. It was much more effective simply to “support” those -webkit- prefixes that were the analogue of things we already supported; for example, we simply aliased -webkit-border-radius to border-radius.
Magically, lots of iPhone-only sites looked a lot better in Opera. As you can see from the screenshot comparisons in the IE blogpost, the same happens for them. It’s difficult to argue for ideological purity when a simple aliasing makes the user experience so demonstrably better – and one thing I’ve learned at Opera is most users don’t care two hoots for ideology if their favourite site works better in another browser.
It’s tempting to blame the mess on lazy developers, and they are without doubt at fault for enjoying the advantages of the Web without respecting its core principle of cross-browser compatibility. But some of the blame lies with WebKit developers, and (to a lesser extent) with the CSS Working Group for blessing vendor prefixes (though of course, browser makers just did this sort of crap anyway: scrollbar-face-color lurked around for years in IE without a prefix).
I’m very glad that the Blink rendering engine (which Opera, my employer, now uses) has abandoned vendor prefixes (and Firefox appears to have done the same.)
But, as managers around the world like to say when laying staff off because of bad management decisions, “we are where we are”. Legacy -webkit- prefixes hide in the dim recesses of sites used every day, and users deserve good experiences.
So good luck to the IE team; I’d do the same, because I’ve done the same. But I stand by my poetic words of 1 September 2012:
Vendor prefixes are like skidmarks on the underwear of web standards: sometimes unavoidable, but best washed and rinsed out as soon as possible.