Mindless Coding.

On September 28, 2002 by aquarion

Throwing code at a problem doesn’t solve it. Mindlessly following the trends solves it even slower. Start trying to combine mindless coding with sheep-like trend following and I start to wonder why I bother implementing anything.

This goes just as much for the RSS/RDF/ESF/TLA argument as for the (.*)back discussion. RDF is a specification for describing resources. XML is a method of representing data. RSS 0.9 was an XML format for representing the last few items on a site, which was then developed into a method for syndicating site data (though what I would call perversion on the – originally positive – description tag. As far as I’m concerned, I’d say that RSS /0.9./ was a good implementation of the original idea, but RSS2 (and 1.0 for that matter) has stopped being a format, and started being a specification. The line is thin, but important, and it’s been crossed. And as soon as it was crossed (Which was when Dave Winer released 2.0) I started working on ESF. I shall explain the difference between what I’m calling a specification and a format.

A specification describes a method of doing something. For example, I spent the last couple of hours clearing my desk. The specification for that was “Set out several containers, mentally label them, and throw things into them as necessary”. I defined the containers as “Bin”, “Computer bits”, “Washing Up”, “CDs/DVDs”, this was a format. The specification defines how to define the format. RSS 0.9 was a format, because it had set tags which you put data into, it defined – fairly rigidly – what data went into which bin. And it defined this using XML, because XML is fairly easy to parse.

2.0 (I didn’t even look at 1.0, because I knew that the people who did 0.9 didn’t do it, and therefore didn’t mentally flag it as “official”) is a specification. It defines a method by which other people can define formats as well, Dave did it himself with the blogChannelModule. Yes, folks, it’s the namespace argument again. Adding the namespace suddenly made RSS a scary thing because I, as a developer that has to try to understand this crap, now have a potentially infinite number of tags, all of which somebody, /somewhere/ will want me to support. It also means that RSS, far from doing one thing well (which it did), can now do an infinite number of things, many of them identical, at the whim of some tinpot developer. Or, because I don’t trust single people to come up with perfect standards alone, Badly. Let’s take an example. Let’s, in fact, take the blogChannelModule, because it’s the first public example I know of.

The blogChannelModule allows you to add to your list of subscribed blogs to an RSS feed in opml format. And your list of friends. And a random link you happen to want to point at. Dave has, in fact, invented a way of sharing your current blog reading list. Woot, Yay, and pass the tax rebate. Except that so does the Foaf protocol. Yay for multiple protocols doing the same thing. Lets hope the best man wins, yes?

The problem I have with namespaces is weight of data. Obviously, I can ignore whatever data I don’t want, but in a couple of years if RSS2 really takes off (it might not) then it’ll be possible to have hundreds of namespaced “extensions” or “features” ranging from how you can find out about the feed’s favourite music, top fifty cute cat pictures, current projects, Top ten angry cat pictures. All interesting information, but not necessary to get a list of updates, which is the most common use of the standard. There has to be a better system for the semantic web than drowning everyone who wants to just get the latest stuff in megabytes of pointless data.

“Only support what you like”, will be the response, which totally misses the point. The point is that we are surrounded by cargo-cult programmers, who will mindlessly implement all new things they can do just so they can say they’ve supported it, and it’s going to mean that their RSS feeds become huge. Not that, I should point out, that cargo cult code is inherently bad, I’ve no doubt that the “Ooh, shiny new spec, lets play” accounted for part – if not most – of the events of the last week, but it’s vital to remember that it’s incredibly hard to take features /out/ of a released system.

Oh, and while I remember, a question. What does RSS stand for?


No Responses to “Mindless Coding.”

  • Pol

    RDF Site Summary
    RDF is Resource Description Framework

    so

    Resource Description Framework Site Summary

  • Aquarion

    Answer One. This was defined as the meaning by the RSS-Dev list, who created RSS 1.0. Next answer?

  • Pol

    This was however the meaning defined in the RSS 0.91 DTD which Netscape originally published to allow RSS to exist.

  • Pol

    And if I thought as fast as I typed I would have realised that I was reading the wrong bit and that it was Rich Site Summary

  • Anonymous

    Interoperability is the first step to unified standards. First you have a standard. Then you have a better standard. Then somebody figures out a way to dynamically move between the two standards, eventually everybody gives up and you end up with a mediocre middle-of-the-road standard which encompasses the common bits of both existing standards without the functionality of either. See the CSS/JSS evolution for an example of where this happened in the past.

  • Ian Hickson

    I wouldn’t say I had thrown code at the pingback vs trackback problem, per se… :-)

  • Aquarion

    Yes. It lead to the fact that someone implimented *first* without watching what was happening leaving every web designer having to support fucking stupid legacy breakages for the next five years.

  • Aquarion

    Well, no. You wouldn’t :-)

    I do have a reply to the white paper you published, but it requires a bit of polishing.