Anne van Kesteren


Opera gets bug reports for bugs that are actually bugs in another browser and Opera did right. Right, the canvas story. That is nothing new though. Remember top:75? Lots of people use(d) CSS code like that and it “works like a charm” in their favorite browser. It now works in Opera and Firefox too, in quirks mode that is. Actually, I think every browser has to support that in quirks mode given the usage of it. (Unless you are not in it for actual browsing.)

There are some differences though. With canvas for example it is an actual bug in Firefox that will be fixed at some point. Treating top:75 as top:75px is the way error handling in Internet Explorer used to work (it is now banned to quirks mode there too). When error handling is not defined, the market leader basically decides how it is going to be done. Parsing HTML documents is going to be complicated because of that. (And cool to watch.) So there is bugs and undefined error handling. The latter is a pain. Reverse engineering is a complicated task, although I must admit I enjoyed doing it with contenteditable.

To ensure interoperability you need a good specification and above all a test suite. Atom is quite a clear written specification. Not much interoperability though. And Phil is just testing the simple things. One problem with Atom is error handling. What if the value of the type attribute is Text? Or foo? What if atom:updated contains a value that is not conforming? Should processing be stopped or should the element be ignored? Et cetera.

RSS has bigger problems. There is no clear specification. There are no good test suites. It is unclear, because of the specification, how to process certain constructs, et cetera. RSS is like HTML. Though not for long as HTML is being improved with test cases and error handling for parsing; there you go. OPML has the same problems. iTunes extensions for RSS have namespaces which are case insensitive. (No problem for Mark’s Universal Feed Parser 4.0.)

Oh, and then there is SVG. Not to mention SMIL.