Chicken-and-egg browser making

Published on:

We have seen this before. Dave Hyatt shares the joy of implementing CSS in Safari:

A few days ago I was visiting Dave Shea's site and I noticed that the three parallelograms at the top (zen garden, blue spark, and modernalus) didn't line up properly in Safari.

I quickly reduced the HTML+CSS and discovered that the problem was really elementary. Safari didn't support relative positioning of floats. It would just ignore any relative position you specified on a float. [...]

... the fix was a no-brainer...

I made the fix, fired up Dave Shea's site, and the problem was solved. [...]

Then today Don was idly going over the list of issues at Mark Pilgrim's site to see what we'd fixed since v85. We were chatting on the phone and he said, "Hey, the tabs are mispositioned on Mark's site. There's a vertical gap underneath them."

Someone makes a browser according to a specification document full of must, must not, may, should, whatever that leaves room for interpretation. Other people make other browsers, on the same spec with their own interpretations plus a bit of re-engineering on existing browsers. Some designers start fiddling with browsers, trying to code to the spec but forced to accommodate the browsers quirks, since it's what their visitors will use anyway. The innovators among them explore, create and document browser hacks, which quickly become widespread. As years and spec versions pass, the re-engineering story becomes more complex for browsers makers when, while testing their product on existing sites, they are tempted to follow the crowd vs. re-read (and maybe re-interpret) the specification.

I don't know if we have seen the end of this story, but Dave Hyatt made a sound decision:

I now believe that Safari's rendering (gap and all) is correct, so until a spec tells me otherwise, I'm changing nothing. NOTHING.

He chose the spec path vs. a site design (and a rather prominent one, mind you).