Just Say No!
Published at 9:14pm on 09 Nov 2006
When Microsoft announced that they were finally updating the aged Internet Explorer with a new version, many were initially skeptical. Could this be a glorious turn in the road for the world's worst (and most popular) browser, or would this be just another rushed-out bodge job like IE6 before it...?
In February 2005, Microsoft announced that they would be releasing a new version of their flagship browser Internet Explorer - not just for Vista as had been previously mooted, but for existing Windows XP users as well.
Reactions to this were mixed. On the one hand some developers saw this as a good thing - the compliance of IE6 to the standards laid out by the W3C is generally regarded as appalling. Where most competing browsers have converged over the course of frequent revisions to the point where their HTML rendering capabilities are near-identical, IE remains the odd-one out. Almost everything works slightly differently on IE, and at nearly six years old, it's not exactly up-to-speed with the latest innovations either. Surely any modernisation must be a good thing, right?
Those in the former category hoped that IE7 would finally deliver on the promise of proper standards compliance and security. Those in the latter category expected a quick paint job, some glitzy features such as tabs and RSS support, and maybe one or two CSS tweaks to give the impression that Microsoft suddenly care about web standards or compatibility.
But then something weird happened. The IE Blog, far from being a cynical marketing platform, turned out to be run by some genuinely nice, thoughtful people - the actual developers behind the new Explorer. Week after week they released titbits about how the project was going, and about their trials and tribulations as they struggled to achieve all the things that people were asking for.
And the blog allowed comments! Microsoft were finally listening to their users, and giving well-reasoned responses and reassurances to questions and criticism.
One by one the cynics were swayed. Maybe this time things really were going to be different! Perhaps at last the end was in sight for developers who had to spend so much of their time clawing their way around IE's "peculiarities".
And now, after months of anticipation, it's finally here. And the verdict...?
Same old shit - different version number!
Is it an improvement over IE6? Yes, it is a huge step forward in terms of features, security and standards compliance. It's also a huge kick in the balls to any developer who has spent the last five years trying to build standards compliant sites that work in IE6.
For IE7 is neither one thing nor the other - its CSS support is much better than that of IE6, but still quite dissimilar to Firefox and its brethren. The result is that any sites built using CSS will break in largely unpredictable ways in IE7, even if they worked fine in IE6 or Firefox. Here's why:
For the last few years, developers have worked around IE's differences by exploiting its well-documented bugs in order to feed it alternative styles which compensate for rendering glitches. There are a number of "hacks" that allow CSS to be selectively shown or hidden from IE, while all other browsers see something else. One of the first things the IE team fixed was the CSS parsing engine, making its behaviour more similar to other browsers, and so breaking the hacks. IE7 now sees the same styles that other browsers do - mostly.
Presumably the IE7 developers did this because they wanted IE7 to take advantage of the fancy effects in other browsers, such as rollovers and translucency. The problem is that their other fixes and improvements aren't nearly up to the same standard. Many effects, such as transparent PNGs are now implemented, but in the case of PNGs the performance is incredibly poor compared to Firefox. Sites which used to look a bit nicer in Firefox, but still worked in IE6 are now completely unuseable in IE7. I've seen sites that use a lot of transparency actually crash the IE7 browser - Charcoal Design in fact was one such site. Other improvements mean that layouts that were carefully tweaked for IE6's quirky behaviour are now expected to rely on IE7's new "standard's compliant" layout, that's still quite broken in many cases.
IE6 introduced the concept of standards versus quirks mode. Basically if you include a proper doctype in your pages then IE6 will try to render them using its idea of standards-compliant CSS - such as it is. If you don't then it will render pages the same way as previous IE browsers. This was a clever idea, and one that has made developing pages for IE6 very much easier than it might have been. Essentially a developer can choose to make their page behave the same way on all IE versions (by using quirks), and then only have to tweak the differences between Firefox and IE6, or to make the behaviour more similar for IE6 and Firefox by using standards mode. It doesn't eliminate the effort of tweaking the pages, but it certainly makes it easier - and more importantly it means that old pages written for IE4 or browsers that predate the doctype concept still look fine in IE6. It even allows other browsers such as Firefox to try to render such pages more faithfully to the original designer's intentions by emulating IE's non-standard box model when no doctype is detected.
It was such a good idea that the IE7 team decided to use it again. Quirks mode pages look the same in IE7, IE6, IE5... etc, but standards compliant pages will use the new CSS features and fixes. Sounds great - until you realise that those developers who used standards mode in IE6 (and then worked around the bugs with CSS tweaks) are screwed. If the hacks they used to tweak the CSS have now been broken, their page will use Firefox compliant CSS that probably has issues in IE7 due to the still-broken standards support. If by chance the hacks they have used are still supported then they are equally screwed because their carefully tweaked styles for IE won't work on the new CSS model. So basically the only sites that stand a chance of working are the ones that opted for quirks mode - IE7 supports pre-IE6 web sites better than it supports post-IE6 sites.
The only developers whose sites which will see substantial improvement (without penalties) are those that opted to ignore IE altogether and not try to work around its flaws - another kick in the balls from Microsoft - those who are punished most heavily are the ones who dared to acknowledge that IE wasn't perfect and try to work around it - anyone who ignored it completely and pretended it supported their site when it actually didn't get rewarded, and those that ignored the standards and built broken sites that only worked in IE are at least left in peace - their sites looks exactly the same under IE7.
There are many who have advocated this last approach. Microsoft are still the undisputed kings of the browser market at the moment, with something like 70 - 85% of all users running some version of Internet Explorer (depending on who you believe). I have been told by supposed experts that 'real web designers build for IE and hack for the other minor browsers as an afterthought'. Perhaps it was an assumption that this was the prevailing attitude that led the IE team to make the design decisions that they did.
I am a real web designer, and like all 'real designers' that I know, I develop for Firefox or Safari first and only then add the necessary hacks for IE. I do this because I know that if I build a site using standards-compliant code then it will work on 90% of browsers (even if together they only form 15% of the market) and that I can then (relatively) easily work around the bizarre bugs and behaviours in Internet Explorer to make it work for that too.
While it is true that for pragmatic reasons we have to support IE whether we like it or not, if I was to design for IE first, I would still have to work around all its weird bugs, but once I'd finished I would have a site that works reliably in exactly one version of IE for Windows, and I'd know that since all browsers (including IE) are moving towards better standards compliance, my site would become increasingly broken on an increasing number of browsers as time goes on.
So what should the IE team have done? Am I saying they should have left all the bugs in place? Of course not! But to fix them in a way that breaks backward compatibility was a terrible mistake, and one that could have been easily avoided.
The concept of doctype sniffing was a good one, and worked well for IE6, but by its very nature it cannot be done again. The IE team cannot create a new doctype for IE7 because the doctypes are determined by the W3C, and relate to the content type (the version of HTML being used) not the browser - using them to determine browser behaviour was really only a short-term hack, albeit a clever one.
The correct solution would be to add something like new conditional comment syntax, or perhaps a <meta/> tag that indicates to IE7 that you have designed your page to support it. The default behaviour of IE7 should be identical to IE6, both in quirks and non-quirks modes, right down to the CSS parser bugs. The exception would be for non-layout-affecting changes such as support for alpha PNG's, or unsupported HTML syntax such as the <abbr/> tag. If IE7 detected the special comment or meta syntax then, and only then would it add in the new functionality. In this way, savvy designers could take advantage of the new functionality progressively as and when they were ready, without having to cope with their site suddenly breaking under each new browser release.
As for implementing the new standards compliant code itself - why did the IE team bother doing it the hard (and ultimately unsuccessful) way that they did? There are plenty of open source standards-compliant rendering engines out there already, and since the whole point of IE7 is to match features with Firefox, why not build the new engine on top of Gecko or KHTML/Webkit, instead of trying to force an ancient and unwieldy code base to do things it was never designed for, and apparently isn't well suited to. By maintaing the old IE6 engine faithfully for compatibility, and then plugging in an existing standards compliant engine with a simple switching syntax, Microsoft would have got the best of both worlds, and probably saved a few months of development time. Instead they've just compounded the mistakes of the past and left web developers with three totally different browser platforms to support, instead of two.
Microsoft has a remarkable and terrible power. When they release software it can affect not only those who run it, but even those who don't - even those like myself whose operating system's don't support it. Because whilst I will never actually have to use IE7 if I choose not to, it's very existence makes my life as a web developer more difficult. So I urge you to just say no to IE. Download Firefox or Opera, or Konqueror, or any of the myriad of superior (and free) alternatives.
Whilst there is no question that IE dominates both the past and present of the web, I don't believe that IE - as it stands - has any place in the future of it.
Disclaimer: The opinions expressed here are those of the author and are not shared by Charcoal Design unless specifically stated. The material is for general information only and does not constitute investment, tax, legal or other form of advice. You should not rely on this information to make (or refrain from making) any decisions. Always obtain independent, professional advice for your own particular situation.
I couldn't agree more. I work at a website, and I don't code very often but IE drives me up the wall. Not only is it the most unpleasant-to-use browser, but it's also the worst to code for. I can't wait until Safari and Firefox have 50% market share together. Well, here's hoping.Reply
Posted by msr at 02:06am on 11 Feb 2007
Quite simply you shouldn't use fancy css. Trying to be fancy is what leads you having to use hacks in the first place
no fancy css = no hacks = no breakage
- design for IE6 and using the most basic css possible.
- only use css-p from existing tested templates.
- watch you really simple design work in every modern browser ;)
- design for one web
- IE6 is going to be around in 10 years time
yeah i know "use the most basic css possible for the next 10 years" isn't exactly the sexiest thing in the world, but it's just the market reality. if you're professional about your work you'll accept this fact and just get on with it.Reply
Posted by Steve Boyd at 1:51pm on 15 Mar 2007
Steve Boyd wrote:
"Quite simply you shouldn't use fancy css. Trying to be fancy is what leads you having to use hacks in the first placeno fancy css = no hacks = no breakage- design for IE6 and using the most basic css possible.- only use css-p from existing tested templates.- watch you really simple design work in every modern browser..."
And how should I define "fancy"? Is using css font styling fancy - should I use font tags instead? Should I use tables for layout?
Presumably not. So where do you draw the line?
The answer, obviously, is that you consider css to be fancy if it doesn't work properly in IE - in which case your advice essentially boils down to "Don't use technologies that aren't endorsed by Microsoft".
Since I'm not prepared to let Microsoft dictate the limits of the state of the art, nor am I prepared to reward them for building the world's worst browser by designing sites to take advantage only of the features they provide, that policy isn't acceptable for me.Reply
Posted by Nick at 6:32pm on 15 Mar 2007
Steve Boyd wrote:
"Quite simply you shouldn't use fancy css. Trying to be fancy is what leads you having to use hacks in the first placeno fancy css = no hacks = no breakage- design for IE6 and using the most basic css possible.- only use css-p from existing tested templates.- watch you really simple design work in every modern browser ;)- design for one web- IE6 is going to be around in 10 years timeyeah i know "use the most basic css possible for the next 10 years" isn't exactly the sexiest thing in the world, but it's just the market reality. if you're professional about your work you'll accept this fact and just get on with it."
Many of us who write code would love to write simple basic css for our applications and sites. Sadly this is not achievable in most cases as the design spec or client decides it has to use the 'fancy' css you describe.Reply
Posted by Jamie at 12:28pm on 02 Apr 2007
I'm TRYING to write simple - that's the problem
Currently I'm trying to code a simple nested menu that will work in IE7. I'm not doing it for the sake of "fanciness," but for functionality - a drop-down takes up very little screen real etate, and I need to pack a lot of options into a small space.
There is a very simple way to do this with CSS, which I learned about here:
IE is the very reason I CAN'T "use the most basic CSS possible." IE doesn't understand the simplest method of coding this, and forces me to do something "fancier" and a lot more frustrating.Reply
Posted by a reader at 3:26pm on 09 Oct 2007