Sunday 27 January 2008
Different Approaches To Compability Modes
Some people are comparing IE's support for compatibility-mode-switching to Firefox's "quirks mode" and suggesting that they're very similar in principle. In fact, they are not.
Firefox's "quirks mode" is defined as "standards mode, except for a fixed set of documented 'quirk' behaviours". This means that almost all bug fixes apply to both standards mode and quirks mode. Quirks mode is actually getting more consistent and more standards-compliant all the time! (Of course it can never be 100% standards compliant.) Every new feature we add is available in both modes. The code we need to implement quirks mode behaviours is basically fixed and does not grow significantly over time.
IE's compatibility modes are defined as "whatever IE version X did". They are not supposed to change over time so the code required to implement all of them grows substantially with every IE release. Bugs in them are never fixed (except for crash and security bugs, I guess). I'm not sure if new features will be added to modes other than the very latest mode, but since it would be a lot of extra work and potentially destabilize compatibility, I'm guessing not.
Everyone has their reasons and I don't need to debate which way is better. But the philosophy, implementation and consequences of these approaches are very different.
Comments
Well, they are at least not well documented. But I do not care that much about this. I try to use the full standards mode whenever possible.
When saying quirks mode comes closer to the standards, do you mean you're actually removing some quirk from time to time?
Anyway. Since HTML 5 is bound to Full standards mode it will probably be the only mode that's going to be used in 10-15 years. Isn't that good news? I think MS will reduce the amount of their modes as well then.
The meta-solution is just a short-term solution.
We do occasionally remove quirk behaviours, too, but not often, and I'm not hopeful that we'll ever be able to remove all of them.
>way Internet Explorer's compatibility modes will.
Is that necessarily a good thing? If the various browsers' quirks modes keep improving, there appears to be even less reason for authors to fix their documents to follow an official standard.
Of course, if most other browsers supports canvas in their quirks mode, Firefox should probably do this as well. But if IE's quirks mode doesn't support canvas (and its edge mode does), I don't see the point in trying to raise the bar for quirks mode.
Chris wilson stated in a reply post... "In the end, we believe our highest priority is the user... If they install a new browser and their sites are broken, they uninstall the new browser."
Think about it, what hasn't been discussed here is which Operating System IE8 will support. I'll hazard a guess and say it will be Vista only and maybe Windows Seven (or whatever the next version of Windows is named).
And here is the rub, Micro$oft only make their money from selling Operating Systems and not web browsers.
This means that Micro$oft don't want paying customers to purchase a new OS (e.g. Vista or Windows Seven) only for them to find some old, crappy web-sites don't work and then return the OS or decide not to upgrade on a recommendation from one of their friends or a tech review.
So by releasing IE8 only on Vista, Micro$oft will try and force users to upgrade to their latest OS, thereby increasing revenue and profits along the way. You can see the marketing brochure now: "It's safe to upgrade to Vista and IE8 because all your old, crappy web-sites work too".
The way to think of this decision is that it is a Product Marketing decision (i.e. make money) rather than a Software Development (i.e. provide standards compliance) or User-centric decision (i.e. build a better web).
At the end of the day, the fact that web browsers are "free" (in the not having to pay money sense) means that Micro$oft will try and recoup their costs in other areas. This time, through the Operating system.
It's a sad decision for the Web but one motivated by money and, as usual, corporate greed.
Their philosophy is, simply put, a program that used to work on Operating System X should continue to work on Operating System X+1. Even if its doing something illegal or undocumented. Even if the engineers have to detect a specific version of the bad program and special case a work-around when it calls some API incorrectly.
Microsoft is continuing this philosophy to Web Browsers as well - if a web site used to work on Browser Y, then it will continue to work on Browser Y+1. Even if the website is doing non-standards compliant stuff. Even if they have to keep the old web browser engine around to do it.
To say it's a bad engineering decision is completely valid. You could argue that it is indeed a sad decision for the Web. ROC is arguing that it's going to be a huge development and security problem, in a very credible fashion.
But to argue that it's not a user-centric decision (i.e. all the users websites continue to work) is wrong on every level I can think of.
It helps, say, my mother, to have a website she uses no longer work after getting an updated browser? She will be a much happier user because she can't use a favorite site?