I’ve been building websites since around 1995 and professionally since 2001. Since the early days of spacer.gif and <frameset> there has been one constant pushed onto every site I’ve built - 100% of functionality must be compatible across 100% of user-agents. If I had a penny for the number of times I’ve developed a cool feature, showed it to the project manager and been told that we don’t have the resources to make it work in legacy browsers, well…I’d have a lot of pennies. Conversations would go like this:
Me: “Hey check this out - I built a drag and drop script for the shopping basket”
PM: “Sweet! That’s awesome. Does it work in <insert rubbish browser>?”
Me: “Well no, but if we I more time I might be able to get it working. Even if I couldn’t we could just roll it out on <insert good browser>.”
PM: “But it doesn’t work on <rubbish browser>.”
Me: “No, but the old functionality would still be there. It wouldn’t break.”
PM: “But…it doesn’t work in <rubbish browser>.”
Repeat ad nauseam.
Maybe I just worked at the wrong companies. Maybe I still do work at the wrong company. Everything I build now (at work anyway) MUST be compatible in IE6. I’m sure 99% of web professionals will tell you the same. Companies are just not willing to ‘throw away’ that (slightly dubious) 25% market share of legacy browser users. I spend more time fixing CSS and JS bugs in IE6 and 7 then anything else. It’s not because I’m a bad developer (well I don’t think I am), I adhere to standards and the only bugs I have to fix are generally down to browser specific problems rather than my code. Now I’m sure some developers will stop me here and say that a good developer will consider browser deficiencies from the very start, and in fact, a lot of developers I know build sites for IE6 first. Great in theory, but sometimes it just doesn’t work like that. So once again - we’re back to topic of the moment - support for IE6. I say IE6 here, but I don’t want to aim these comments just at IE6 - IE7, although slightly less ridiculous still has a host of problems with it’s rendering engine, and even early versions of relatively ‘safe’ browsers like Safari and Firefox are by no means perfect. This is a problem for developers and one that will not go away quickly. It’ll be years before we can safely use technologies like HTML5 and CSS3, mainly for the fact that the people who pay for us to build websites aren’t concerned with making our lives easier or more semantic - their only concern is delivering a stable and uniform user experience to their customers. If I told a new client that we’re building their site using cutting edge technology that will speed up the development process and make the code that drives it ‘better’, they’d say “Great!”, but if I then mentioned that a majority of his customers wouldn’t be able to use his website I’d be out of work pretty quickly.
Developers are trying things out. People have been displaying banners on their site informing legacy users that they should upgrade their browser - a nice idea in practice, but once again I strongly doubt this is a viable option for most commercial websites. To me it looks no different to an advert, and although I haven’t seen any stats, I’m pretty sure the conversion rate is poor (a ‘successful’ banner advert will have a click through rate of between 5 and 10% and even lower conversion rate). A lot of people who use legacy browsers know they should upgrade their browsers but for whatever reason they can’t. A large percentage of IE6 users are office workers who have reduced privileges on their systems and are unable to install a better browser. Maybe their internal systems have been developed years ago for IE6 and upgrading the browser wouldn’t just be a case of just installing it on all the machines, or maybe the system admins are just lazy. For whatever reason, their systems are locked in to IE6.
So we can’t persuade most legacy users to upgrade their browsers, nor can we ignore them completely. In an effort to push the web forward, we need to be able to take advantage of newer technologies while still accommodating legacy users. The only way to do this, in my opinion, is the create sites with different layers of functionality. Technically, it’s perfectly possible to tailor content depending on the user agent and from a logical point of view it makes perfect sense. For legacy users, create a version of the site that visual fits the branding of the company but is basic enough to develop quickly and with the minimum of bug fixes. Give them basic functionality, but nothing that requires serious resources to get working. Let’s use a basic example of a generic ecommerce site:
Legacy Users:
Users can create an account to store their information, browse lists of products and make payments. The most basic functionality.
Users using newer browsers:
As well as the legacy functionality, the users can create and store wish-lists, rate and comment on products, drag and drop products to the shopping basket. The website has an AJAX behavioural layer that pulls in products dynamically, allows live comments, stock notifications etc etc.
Both sites would run with the same server side code and interact with the same database. Instead of spending 60% of clientside development time fixing bugs, you’d only have to use maybe half that time to develop an extra set of rock-solid basic templates specifically tailored to legacy users. Designers wouldn’t mind accommodating a simpler visual style, so long as their Photoshop masterpiece is accurately represented in the full implementation. You could even forward legacy users to a sub-domain - another visual clue that they are being treated differently. This would also be a great analytics tool, you could see how legacy users behaved in comparison to other users and be an invaluable tool for identifying what kind of person uses your site.