When good standards go bad

Years ago, I was on the editorial board for versions 1.1 and 1.2 an informal standard called SRU. It defined a way to do IR queries over HTTP with XML payloads: you’d send a URL like http://example.com/dbname?someBoringStuff&query=fish, and it would send back an XML document describing the search result — hit count, that kind of thing — and containing payload records.


Since the payload records themselves were also in XML, it was often convenient to just embed them right in the response, where they could be extracted by XSLT or similar. On the other hand, other applications preferred to have the records be XML-safe blobs that could be extracted and treated separately. (One reason for this is that it was the Bad Old Days when much of the XML out there was not valid or even well-formed, so we needed a way to ensure that a single bad payload record didn’t break the whole response.)

Requests could specify how to pack payload records using the recordPacking parameter, which could take the value “xml” or “string“. Other request parameters included things like maximumRecords (include no more than this number in the response) and recordSchema (whether to return the payload data as Dublin Core records, MARCXML, or some other schema).

A few years later, the SRU 1.2 specifications were adopted by a subcommittee of OASIS, a proper standards body, and immediately changed out of all recognition into SRU 2.0, an incompatible specification that has the advantage of being formally recognised as a standard, but the disadvantages of several incomprehensible technical decisions. It became part of a wider all-things-to-all-men initiative known as searchRetrieve v1.0.

Sushi (3)

I’ve mostly been able to ignore SRU v2.0, but a few days ago this observation cropped up on the SRU mailing list (which I’m still on for historical reasons):

The parameter recordXMLEncoding is introduced in 2.0, replacing the 1.2 recordPacking parameter (and a new recordPacking parameter is introduced, with different semantics). […]

The recordPacking parameter in 2.0 has completely different meaning than in 1.2. […] In short, it tells the server whether or not to take seriously the parameter recordSchema: if it is omitted or its value is ‘packed’ then the server MUST supply records according to the requested schema. If it is supplied with the value ‘unpacked’ then the server is free to choose an alternative schema.

what is this i dont even



5 responses to “When good standards go bad

  1. I have nothing to add (my own experiences are the same, in various other standards.)

    “Standards are great; everyone should make one.”

  2. The nice thing about standards, is that there are so many! :^)

  3. “On the other hand, the TCP camp also has a phrase for OSI people. There are lots of phrases. My favorite is `nitwit’ — and the rationale is the Internet philosophy has always been you have extremely bright, non-partisan researchers look at a topic, do world-class research, do several competing implementations, have a bake-off, determine what works best, write it down and make that the standard.

    “The OSI view is entirely opposite. You take written contributions from a much larger community, you put the contributions in a room of committee people with, quite honestly, vast political differences and all with their own political axes to grind, and four years later you get something out, usually without it ever having been implemented once.

    “So the Internet perspective is implement it, make it work well, then write it down, whereas the OSI perspective is to agree on it, write it down, circulate it a lot and now we’ll see if anyone can implement it after it’s an international standard and every vendor in the world is committed to it. One of those processes is backwards, and I don’t think it takes a Lucasian professor of physics at Oxford to figure out which.”

    — Marshall Rose, “The Pied Piper of OSI”

  4. Both good quotes .. but I really like that one Mike. We’ll see how long it can stand in todays environment.. the engineers approach, versus World Gone Crazy :/

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s