Wednesday, January 26, 2011

RE: The REST Bubble

The below is a response to this blog post by William Vambenepe

Haven't looked at the API in question yet.. but after reading the above and the other one about Amazon potentially proving REST unnecessary I think, in the interests of fairness, it's worth clarifying a couple of aspects of REST which seem to be being overlooked.

First off - "doing REST" or "being RESTful" doesn't have much concern with achieving short-run simplicity or making life easier for your clients, that is a miss-conception. In fact, creating a RESTful application for machines (i.e. an "API") is, at this point in time, probably more challenging for both client and server; as there are still some relatively unknown quantities and considerations - specifically in media type design and/or selection. For example;  there is no HTML of the machine web. Yet.

Second - What is an explicit objective of RESTful design (particularly hypermedia) is the long-term evolvability of your application/system. This REST stuff isn't esoteric or religious, it is solid theory based on high quality analysis of the most robust distributed system ever produced by a bunch of talking monkeys. If in doubt you could always read the dissertation where the term came from.
Cloud APIs and their clients represent a new and fast emerging part of the web. We are yet to see how many of these applications' (eco)systems react and behave as they attempt to enact change over time.

RESTafari prophecy holds that the less RESTful applications will struggle to manage change and avoid breaking tightly coupled clients. This will negatively impact the speed and cost of innovation - making them less competitive over time.

In the end, longer-term case studies will do a much better job of illuminating whether or not REST actually delivers on the (business) value it promises, and whether the "simpler" solutions for the short-term continue to be sustainable and cost effective in the long run. Until then, you're probably jumping the gun a bit.

Designing, building and cultivating a system that efficiently evolves over time could present a significant long-term competitive advantage for API providers that get it right. I think that's worth some consideration.

I'll finish with a quote from the great Bob Marley:
"Facts an' facts, an' t'ings an t'ings: dem's all a lotta fockin' bullshit. Hear me! Dere is no truth but de one truth, an' that is the truth of Jah Restafari."