@madpilot makes

Browser version switching – quick fix?

I have just finished reading the two A List Apart articles (by Aaron Gustafsen and Eric Meyer) on the concept of using browser meta tags to specifically target browsers. Go and read the articles to get the full story, but the basic premise it to devise a meta tag that stipulates which browser version the site is targeted at, eg:

<meta http-equiv="X-UA-Compatible" content="IE=8" />

It’s an interesting concept to say the least, and I’m quite torn – the standards-nazi in me wants to yell from the roof tops how stupid an idea it is. The time-poor developer in me is jumping for joy, because I could target a specific set of browsers and KNOW that is would forever more work in said browsers.

The biggest problem I see is that browser vendors will need to ship multiple layout engines with each release – the number of which grows at a rate of n. So after a couple of releases, imagine how big the binary installs (and source code) would be? Just as an example, Firefox 2.0.x is currently up to point release 12 – that is 12 difference rendering engines since mid-last year.

Couldn’t the browser developers use a decision tree approach to minimise the codebase? No, not really, as this would potentially add bugs into previous versions – that is programming 101. This would break the previous renderer, defeating the purpose of this idea.

I really see this as THE show stopper. Why are the browser makers going to add to their work load? They are stuggling to build to the standards specification as it is. Programming is hard, this just makes it harder.

Having said that, if the browser makes can work a way around this issue, it does fix the problem, which is one that I’ve been piping up about for ages (I thought I’d written a blog post about it, but apparently not). When IE 7 came out, the goal posts moved – sure IE 6 was broken, but at least we had had 5 years of understanding HOW it was broken. Now all of a sudden, this new browser comes out and things change (exactly the issue causing this kafuffle). Firefox releases a new browser every couple of months – sure they are point releases, but there are still rendering bug fixes in there – so the goal posts are just moving they are being flung at a rate of knots.

I’m not saying that the browser developers should go dormant as Microsoft did, but maybe, just maybe being able to lock down a target to work against would make our lives a little more pleasant? I know the open source world has issues with the concept of “stable” code, but this effectively gives us web developers a “stable” baseline to work with – yes there will be bugs, but at least, if we work around the bugs, the hacks won’t break in future versions.

To those that argue this would encourage lazy programmers, maybe, but there are still a lot of people out there that are using tables and spacer gifs to mark up their websites – there will always be slackers, but there will also be those who strive for more. Why should those that are pushing the envelope be punished by a browser upgrade?

Will there still be a problem after February 12?

According to this article, a forced IE 7.0 rollout will occurring about three weeks. So the only people using IE 6.0 will be places that forcibly deny the update (it’s opt-out, not opt-in as it was before). One could argue that such a mechanism, as meta tag switch would have meant that the long suffering IT staff charged with blocking Windows update would have been able to strike that task off their list, as IE 7.0 would drop back to IE 6.0 mode for these users. Therefore, the question should be would this technique ALLEVIATE the problem?

Things the need to happen to make it work:

  1. We need to still be able to use standard mode. If we don’t specify a meta tag, it should default to the latest and greatest rendering engine
  2. The browser vendors need to work out a good way of serving up multiple version of their engines that don’t conflict with each other – maybe some sort of download on demand thing?
  3. If a browser finds a site targeted at a newer version it doesn’t know about, it should try to render it anyway – it is up to the web developers to make sure it degrades nicely (they have to at the moment).
  4. The browser vendors still need to care about standards – they still have to play nice, because this fix doesn’t improved CROSS-BROWSER compatibility.

As long as we, as web developers and they, as browser developers still strive for the holy grail, and they can work out how to have multiple rendering engines coincide with out out having to maintain a separate 500Gb harddrive just to contain them, it might not be as bad an idea as everyone initially thinks it is…

7 comments

  1. I'm torn too - on one hand, it seems like a stupid idea. On the other, the two people advocating it are so many leagues ahead of me in terms of standards thinking that I figure I must be missing the point :(
  2. It certainly takes some thinking over to fully understand how it would work. I started out hating the idea, now I quite like it.



    Being able to target a "stable" browser - that is, a specific version of browser with known bugs and workarounds - makes for a more professional build.
  3. I tend to agree; this isn't as bad as it seems. However, I'm firmly of the opinion that if you've specified a valid DOCTYPE then the page should render with the latest engine with no further directive required.



    The use of this tag should be as a last resort to handle cases such as where the browser environment is deliberately being held at a particular release for policy reasons, or to keep a site's behaviour consistent while easing the transition to a new browser engine. It would also be useful where a site's development has ceased completely in order to keep it looking sensible for future viewers.



    The main thing, for me, is that if a site is being built on sound, standards-aware principles the default behaviour should be to render with the latest engine.
  4. I keep ending up with the thought that it's the default behaviour that really messes this up. If no meta tag specifies otherwise, then the browser should default to "render according to standards".



    But, they're going the other way around. So I just can't support the idea.
  5. Still not sure...



    1) what happens when no defined

    2) will this stop standards implementation

    3) will this become a lazy developers excuse not to move a site forward in techniques and design etc

    4) death of some aspects of progressive enhancement
  6. Gary: Replies to your points:



    1) This now seems to be the bone of contention - most think that it should default to the latest rendering engine. Apparently MS is going to default it to IE7.



    2) It shouldn't - it is just a tool to ensure what we are doing now works



    3) See paragraph 8 of my post :)



    4) I don't think so, you can still choose to ignore the meta tag technique.
  7. From a website application development perspective I think it is a God-send, we are on the tail end of probably the most complex web app we have written. It would be nice to have it locked in to the capabilities of the browser it relies on.



    But yes the potential bloat on future browsers worries me as well.

Leave a comment