Painting Sheds

At what point does the colour of a shed become important? That PRISM jibe in the HTTP/2 draft keeps grating, every time I run into it. I know it's only five bytes, in a (usually) binary stream, and it doesn't matter which five bytes they are as long as they don't collide with any existing (or theoretical) HTTP/1.x method. But come on, guys, SIGAD US-984XN is so June 2013.

Seriously, though...

Let me digress for a little history of this particular bike shed:

Originally the spec said "SPDY", referring to the original SPDY spec on which HTTP/2 is based. It was updated to look like a HTTP/1.x query that would hopefully cause any HTTP/1.x server receiving it to barf something about 501 or 4xx or something that would clearly tell the sender that HTTP/2 is not spoken at this establishment. The method and request body in that pseudo-request were given as FOO/BAR, which is a pretty yucky shade of hospital green, but it serves as a functional undercoat, and it keeps the rain out of the wood.

Then it was cut down to FOO/BA because that made the whole message 24 bytes long (which is a multiple of 8, which is nicer for implementers). Still a yucky pale green, but one that's easier to reproduce.

Then there were some complaints about using "FOO" and "BA(r)" in an IETF spec (I was among the complainers – what are the odds that some gonzo implementations of HTTP/1.x out there don't already support debuggy/backdoor FOO methods?) We tossed around a couple of strings, focusing on the fact that they should not be mistaken for HTTP/1.x by any dodgy implementations (e.g. ruling out "CON" because it could be taken as the start of "CONNECT", etc.) And eventually we settled on STA/RT. Nice, neutral earthy tones with a complimentary blue trim. And all was good and happy.

For a day.

Then someone who shall remain nameless (but is known online as martinthomson) decided to make a statement and/or topical joke about the NSA and spying and Edward Snowden and all that, by changing the magic bytes to PRI/SM [Note: scroll down to Ilya's comment on that commit]. Haha, PRISM. Yeah, we get it. So now there's a big cock-and-balls crudely spray painted over the side of the bike shed. Which, incidentally, has been included in a couple of implementation drafts now, so there are more and more repositories out there in the wild that include it, so it's getting hard-coded in more places, and gaining more momentum, and soon enough that silly cock-and-balls graffito is going to be so entrenched it will become standardised, and we'll be stuck with it.

But I can't complain, because that would be "bike shedding." Surely there must come a point where the colour of the shed is important. Trivial details in a spec are still details in the spec, and this one is part of a MUST-level interop requirement, so absolutely everyone who implements or interacts with HTTP/2 is going to have to reproduce (or at least look at) that cock-and-balls every time they delve into the spec.

So, a question: do bike-shedding details ever become important? And if so, when?

Please answer in the Disqus comments below, or on Google+, or even on twitter.

Matthew Kerwin

CC BY-SA 4.0
development, web

Comments powered by Disqus