Roy Fielding: English, motherfucker, do you speak it?
March 26th, 2009When I think of a REST web-service, simplicity springs to mind. I understand the web and HTTP, and my development languages (PHP & Javascript) allow me to easily interact with them them. Compared to trying to get my head around “Enterprise SOAP”, and especially from within PHP, REST is easy. Or so I thought.
I stumbled onto a blog post by Roy Fielding in which he bitch-slaps people who call their API “RESTful” when, according to him, it’s not. One might think that as the person who defined the “REST” acronym he is the authorative voice on the matter. However, I challenge you to read that post and understand what he’s talking about.
A REST API should not be dependent on any single communication protocol, though its successful mapping to a given protocol may be dependent on the availability of metadata, choice of methods, etc. In general, any protocol element that uses a URI for identification must allow any URI scheme to be used for the sake of that identification. [Failure here implies that identification is not separated from interaction.]
Insert image of Samual L. Jackson here!
Fielding posted a response to the criticism of his language, in which he explains (how kind!) that he’s directing his blog post at “specialists”, who in his eyes, should be able to understand it.
However, when I send out a message to API designers, I expect the audience to be reasonably competent in the field. I have to talk to them as a specialist because I want them to understand, as specialists themselves, exactly what I am trying to convey and not some second-order derivatives.
What use is criticising somebody when you do so in language that makes it difficult for them to understand your points? Presumably if the great unwashed have failed to grok the disseration, then they’re probably not going to react well to more of the same “academic speak”, and the criticism will either fall on deaf ears or it will not be fully understood (or at all), which totally defeats its purpose.
I think he also contradicts himself in his response. He doesn’t want people to understand “second-order derivatives”, yet he’s pleased that there are enough clever-people out there who can explain it to the thickies (thus creating second-order derivatives).
Fortunately, there are more than enough people who are specialist enough to understand what I have written (even when they disagree with it) and care enough about the subject to explain it to others in more concrete terms, provide consulting if you really need it, or just hang out and metablog.
But isn’t this exactly the communication problem that causes people to missunderstand REST? All the designers of RESTful services who don’t understand him will now rely on other people’s translations (i.e. second-order derivatives), which may make the message fuzzy and wrong.
People who create APIs are often not academics. Why the fuck couldn’t he just explain himself in plain english, with some nice “for dummies” examples, and save us all some time. It angers me that instead of saying, “Wow, a lot of people didn’t understand my post (who want to understand me); let me rephrase and give you some examples…”, he responds by patronising us. What a dick.