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.