We've been working around bugs in the browsers since day one. It's become quite an ingrained habit, and kicking it won't be easy, but at this stage it's our only option. Otherwise we'll face not only an unbearable workload, but also we'll have little chance of seeing a web in which standards mean anything.
Every web designer has at some point used a workaround in their code. Some of us do it unknowingly, thinking that the way it is is the way it's meant to be. Some of us do it with a sad resignation, all too aware that things should be better than this. Most of us do it so often that we barely notice what we're doing, nor stop to think why, nor of what effects it might have.
Back in the old days, the web was Netscape (or at least, the web was Netscape when it wasn't Mosaic). Working around the bugs in that one browser was fairly trivial. Indeed, it probably never occurred to most of us that there were bugs in its rendering, since the web was Netscape and the implementation was more important than the specification.
But then came Netscape 2, then Internet Explorer, and so on. Added to this there was the need to be backwards compatible with the previous versions. The increase in the number of browsers meant an increase in the number of bugs that we had to deal with, but it was a slow increase, and we could cope with it.
Now we've started to reach the point where we can't cope. Ask the Web Standards Project; they'll tell you how much time we spend just working around bugs. The first and most obvious problem with workarounds is simply that it's no longer possible for us to make them.
Browser workarounds don't just affect our workload though. They are largely responsible for the terrible state of browsers today, for two reasons: Firstly, they allow the major browser vendors to ignore the standards. Secondly, smaller browsers are squeezed out of the market by HTML that only works in the two major browsers.
The lack of standards support in browsers is due to our willingness to make workarounds. The browser vendors with the greatest market share know they can release rubbish because they know we'll make our sites work in that rubbish.
At the same time the web is made inaccessible to the smaller browsers through code that only works in Netscape and Internet Explorer. All software has bugs, but some bugs get preferential treatment. Even if all we do is write to the standards while avoiding triggering bugs in the big two, we're raising the barriers to entry by being more forgiving to the big two than any of the others.
Flouting the standards can even be a benefit to the dominant browser. Today, writing HTML to the standards inevitably means having a page that doesn't work in the browsers. When it's a choice between writing to the standards and having the HTML work in most people's browsers, the browser vendors know what the web developer with limited resources will do first. Again, the less common browsers lose out, regardless of their quality.
Our willingness to make workarounds is largely due to a lack of competition, and it's a vicious circle; it is responsible for the lack of competition. If there were a hundred browsers, all with equal market share, then obviously the only way for us to cope would be to write to the standards and hope for the best. And, if all developers wrote to the standards then the only way for a browser to survive would be to support those standards as well as possible.
Unfortunately we don't have that competition. And the reason we don't have that competition is that we make the web inaccessible to the smaller browsers while giving the larger browser vendors the freedom to release anything they like.
The question then is, how do we move to a situation in which the web is safe for standards-compliant browsers? And put like that, the question answers itself. We must write for the standards if we want to allow browsers to support those standards, and we can't forgive the bugs if we want them to be fixed.
Most of us still have the belief that we have to design for browsers rather than standards, but this task will only become more difficult as the broken browsers keep on piling up. It's already becoming impractical. What's more, it only makes the situation worse. The alternative is that we quit with all the workarounds and watch our sites break in everyone's browsers. Neither is going to be pleasant, but at least the latter might one day result in better standards support.
colin z robertson, 2001-03-06