Hypermedia is not a new concept, it has been around in various forms since the 1960s. However, in the past seven years there has been a significant resurgence of interest in the concept. This blog post contains my reflections on the past few years, where we currently are and where we might be headed in the use of hypermedia for building distributed applications.
We are currently seeing a significant amount of discussion about building hypermedia APIs. However, the server side only plays part of the role in a hypermedia driven system. To take full advantage of the benefits of hypermedia, the client must allow the server to take the lead and drive the state of the client. As I like to say, it takes two to Tango.
I recently had the opportunity to be interviewed on the Deep Fried Bytes podcast about practical uses of hypermedia for desktop and mobile applications. Hypermedia is one of those topics that we are all familiar within the web browser, but it tends to get forgotten when people start writing client applications. There are many ways to leverage the declarative layer of indirection that hypermedia brings.
There have been a number of attempts to define a maturity model for building RESTful services. The idea of the maturity model is that is gives an indication how closely the service complies with the constraints of REST and hopefully demonstrates the trade offs to be expected when choosing to not follow a particular constraint.
Just catching up on some posts in the Yahoo group rest-discuss and there is some great wisdom in there.
Roy Fielding wrote this post recently on the proliferation of APIs that claim to be REST but are breaking some of the fundamental constraints of a REST style architecture.