Yep. Sorry to have to inform you. REST is totally over. The cool kids are moving on. We’re building “Hypermedia APIs” now. Such is life.
Way back in the day, COINTELPRO was at the forefront of America’s fight against “subersive” organizations and individuals. One goal of COINTELPRO was to create tension and division amongst radical groups, in order to disrupt their operations. Techniques such as Concern Trolling are really effective at this kind of thing.
In 2008, for the Republican National Convention in St. Paul, a document was passed around:
At an anti-RNC conference held over the weekend of February 9th and 10th, a broad spectrum of groups revealed what are being called the “St. Paul Principles” of unity for resisting the 2008 Republican National Convention (RNC). This is a departure from the sectarian squabbles that have plagued past years’ anti-convention organizing. Pitting groups of differing political beliefs against each other has been a frequent tactic of state repression since the days of COINTELPRO. By drafting the principles together, the co-signing organizations are taking historic steps to actively extinguish divisiveness from their respective groups. The principles will ensure respect for the soon-to-be-permitted march on September 1 by people planning non-permitted activities, and in turn, participants in the September 1 march will adhere to the principles and do nothing to sow division among the many activists coming to the Twin Cities to protest the RNC. The principles are: 1. Our solidarity will be based on respect for a diversity of tactics and the plans of other groups. 2. The actions and tactics used will be organized to maintain a separation of time or space. 3. Any debates or criticisms will stay internal to the movement, avoiding any public or media denunciations of fellow activists and events. 4. We oppose any state repression of dissent, including surveillance, infiltration, disruption and violence. We agree not to assist law enforcement actions against activists and others.
Please draw your attention to the third principle. The reasons behind this rule are interesting:
So, keeping that all in mind, why are we arguing about what REST means all the time? Yes, it’s annoying that the common usage of REST is not actually REST. Yes, it’s really hard when someone is wrong on the Internet. Yes, words do matter. However, it’s a question of what’s most productive with our time. Every moment we waste arguing over what REST means could have been spent discussing how to properly build APIs instead. But why bother being productive when we can be critical?
The real problem is that REST is just bad branding. This isn’t Roy’s fault, he wasn’t thinking about such things when trying to write his thesis. But really, from an outside perspective, a ‘real RESTful API’ does two things:
HTTP does most of the heavy lifting in terms of bringing us into REST compliance. So why are we talking about how to transfer representations of state?
The phrase “Hypermedia API” is much more direct: it’s an API where hypermedia is at the center. Those RESTish APIs could never be called ‘Hypermedia APIs,’ as it’s quite obvious that they don’t use hypermedia. It is not quite clear that they don’t transfer state and representations, though. ;)
Ultimately, it really comes back to the first point, though. Arguing about this is just wasting everyone’s time. It’s time to take a deep breath, step back, and just let REST go. Language changes. It happens. It might be a little bit sad, but life will move on. Let’s build fantastic APIs instead. <3 <3 <3
Oh, and I didn’t actually kick this off, credit for that goes to Mike Amundsen and O’Reilly with Building Hypermedia APIs with HTML5 and Node. Once something has an O’Reilly book about it, it’s legit. ;) Additionally, the term has been bandied about in the past, in various presentations and talks, but I feel that now’s the time to really step forward and start calling a spade a spade.