Bad day for WindowsITPro bugs

I assume it’s just coincidence, but some days it just doesn’t pay to have Mozilla bugs filed about your site:

As Gerv noted, someone filed a bug on their fancy-schmancy Flash ad not working in Firefox, so we just get the fallback gif. I suspect the resolution of the bug was right, invalid by reason of broken JavaScript, though I don’t think Doron quite pointed to the right bit of brokeness. But I couldn’t keep looking, once I’d opened it in IE: I was hoping to find where the reference to the purported “.mta” file came into the picture (answer: it doesn’t, near as I can tell), and along the way saw the ad. Goodness gracious, don’t we just hate our content? It’s a little square of an ad off on the right side of the page, which slides out a nasty extrusion, like a snake flicking out its tongue (only without the explicit fork), covering the whole width of the page and thus the start of the content you were going to read before you closed the window in horror.

WindowsITPro also came up in passing in bug 290455, which is asking for the “Live Bookmark feed failed to load” to be clickable through to a more detailed error page. I’m not sure that’s really the way to go, but it’s going to take either Vlad getting done with storage and coming back to us, or someone else picking up Live Bookmarks to do some separation of errors first. Bug 278247 is already laying claim to clicking on “failed to load” to reload the feed: we really need to split “failed to load (because you were offline, or your connection was hosed)” off from “failed to load (because it can’t be parsed, or lacks the title|date and link we require)” to do anything. Even then, I’d think it would be better to try packing the error message into a tooltip (“Not found. Click to reload.” or “Parsing error. Click to validate“), hard though it would be to explain “That might be a valid feed which simply lacks either titles or dates on the items, or maybe it doesn’t have any items, or maybe it’s got some structural error, RSS 2.0 with items outside the channel, or RSS 1.0 with URLs that don’t match between the items rdf:Seq and the rdf:about on each item” in a tooltip.

Oh, WindowsITPro? They were the example of not parsing, with an RSS feed with all the element names in all uppercase. Err, hello? XML is case sensitive: if you’d like to publish an article about that, for your “IT Pro” audience, I could probably write you one.

I’m amazed that there are enough super-ultra-liberal-XML-“parser” using RSS readers out there to let them get away with that: as RSS Bandit said to me when I tried to add it, “that doesn’t look like RSS.” Bloglines? You’re not helping us, swallowing that and pretending it’s RSS.


Comment by Roger Benningfield #
2005-04-16 00:01:16

Newzcrawler accepted the feed, too. But I’m not surprised… they tried switching to a more stringent parser at one point, and took a bunch of heat from their customers.

Comment by Aristotle Pagaltzis #
2005-04-16 04:30:43

Liferea says ”wots dat?” when I try to add the feed.

You know, every time I see something like this it reinforces my belief that the up-front pain of universally applied draconian parsing is easily reimbursed by better interop further down the road. I mean, would this have slipped under their radar if whatever software they tested it with (”you did test it, right?”) had choked on it immediately?

I’ll never understand the people who want lax error handling.

Comment by Bjoern Graf #
2005-04-16 09:42:40

As a reader of a feed I do not care much whether the feed is valid or not: I just want to read the content – And I’m pretty positive that Aunt Tillie does not care much about it either.

As developers we should always remember the fundamental ”Be conservative in what you send and liberal in what you receive.” :)

Comment by Phil Ringnalda #
2005-04-16 10:50:38

And there you have the endpoints: authors (sometimes) and programmers want discipline, so they’ll know what’s right and wrong, but readers don’t want to know about your inabilities, so we have lax parsing, all different, so we have output that works here but not there, so the distinguishing feature becomes ”how well can you guess the intentions of babbling?” The best RSS reader is one that can take an MP3 of baby-talk, and convert it to comprehensible text.

Beyond the ”no time to add features, I have to code around 73 more parser errors” problem, an acceptance of bad input by doing bad recovery leads to a stifling of authoring innovation: if you use a namespaced attribute on an RSS 2.0 element, the feedvalidator will tell you to stop that, because there are so many bad parsers that might burp, or if you have a localname collision, fart, and the behavior of good parsers’ bad recovery is completely unpredictable. And thus, Atom. And then, when enough lax Atom parsers exist, Quark, where ”we’ll get it right, and strict, this time.” And then Gluon…

Comment by Bjoern Graf #
2005-04-16 14:51:23

Well, the problem that producers will test in forgiving applications only is always possible. But will valid (as in valid XML, including the right tags for the format etc.) feeds really fail in a parser that is lax but claims to follow the standard, too? I would say the parser is broken then, not the producer. And has Aunt Tillie to suffer from all this?

Anyway, there are a few possibilities to solve (ok, RSS is pretty much lost like HTML pre 4) this problem (in no particular order):

  1. try to parse strict but fallback to a lax parser [1] and report issues found with the feed somewhere somehow – think Mozilla and doc.all (this implementation reports way too much though)
  2. provide an option to use strict parsing only. This would be useful for producers and the pedantic web users (I’m a member of that group – sometimes at least :]) who want to make the web a better place by adherence to standards.
  3. keep the build-in/default Live Bookmark parser strict and provide a way for extensions to ”enhance” it.
  4. find some way to auto-report bad feeds to the producer (this one could be fun…)

Oh, and I am glad that I do not have to code feed consumers but I feel your pain :) With time limitations I would chose a mix of 1 and 3.


[1] lax does not mean that the parser should be able to interpret a random byte stream and spit out something ”useful” (RE: MP3 of baby-talk :])

Comment by Aristotle Pagaltzis #
2005-04-16 15:07:52

What Phil said.


As developers we should always remember the fundamental ”Be conservative in what you send and liberal in what you receive.”

Yes well, that is true, and it would be a great principle if senders were conservative. But they’re not.

There’s a problematic asymmetry because as a sender, how can I be conservative in what I send when all receivers attempt to be liberal? I have no way to know whether what I send is appropriately conservative unless I am aware (as WindowsITPro obviously are not) of at least one conservative receiver (such as the feed validator).

Comment by Aristotle Pagaltzis #
2005-04-16 15:12:35

Oh, and please, please for the love of goodness say ”my grandmother” or ”Joe Random User” or whatever, but stop saying Aunt Tillie. In John Gruber’s words, that term ”is so queer that it makes yours truly a tad queasy.”

Name (required)
E-mail (required - never shown publicly)
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <del datetime="" cite=""> <dd> <dl> <dt> <em> <i> <ins datetime="" cite=""> <kbd> <li> <ol> <p> <pre> <q cite=""> <samp> <strong> <sub> <sup> <ul> in your comment.