I’m a big fan of standards – they provide a framework for consistent service delivery, and smooth the path for better interoperability. I recently came across two statements/ideas that have given me a lot of food for thought around standards.
The first is the idea that standards can slow things down and inhibit innovation. We’ve all seen how long establishing a standard can take, and in the meantime people come up with their own approaches anyway. Added to this is the friction that can occur during the standards development process. You can see how a counterintuitive statement like this starts to make sense. While standards are a good way to ensure everyone is on the same page, getting to a consensus on a standard can be a long and difficult road and once you get there you then find that the standard doesn’t cover your use case!
The second is a joke along the lines of:
“Standards are like toothbrushes – everyone understands that they are a good idea but no-one wants to use anyone else’s”.
While the joke is very amusing it, serves to highlight the first problem. Lack of uptake on standards usually occurs because a standard doesn’t fit individual organisations use case – you can’t please everyone – and/or because it took too long to arrive at an acceptable consensus on the standard.
What does this have to do with APIs? Technically, REST is an architectural philosophy rather than a standard. This means that while there are wrong ways to do REST, there is no ‘one right way’ to do RESTful APIs. We end up with everyone doing their own thing, and mostly being RESTful, which then leads to de-facto standards based on what the successful API providers are doing – what I call the ‘What Does Google/Facebook/Twitter/AWS Do?” standard.
Is there a place for standards in APIs?
In short, the answer is no, however, a strong argument for standards to facilitate specific cases e.g. like OAuth, OpenID Connect, UMA etc. There is also a strong case for initiatives such as Open API, providing a common language for describing APIs.
Falling back on the ‘What Does Google/Facebook/Twitter/AWS Do?” question, the key to a successful API is probably not a standard, rather the important thing is to make sure that whatever approach you take it results in a usable, consistent API.