What are Resources in an Architecture at Maturity Level 4?

Posted by Patrice Cappelaere Thu, 20 Sep 2012 12:46:00 GMT

RESTFul services can be implemented at increasing levels of maturity.  The next level is not defined yet but if there were a level 4, resources will likely be objects in an Open Graph. An Open Graph is a way to visualize Linked Objects on the Web.  Linked Objects or Linked Data is now emerging from the Semantic Web world to the consumer world.  This has been driven by Facebook recent (2010) offering with the Open Graph Protocol.  This protocol is now open source and supported by many big corporations.  A light version of RDFa is used to describe the various node types on the network.

Interestingly enough, objects can also be connected by Action Links (or verbs).  Verbs can be customized by the web applications to allow for a user centric API.  Everything becomes an activity involving a user, object and a target.  When performed, the resulting activity can be added to the user activity stream and added to his timeline.  Friends see those activities, may comment on them and… it could go viral from there.  The Activity Stream protocol has been defined for Atom and JSON and is now widely adopted.  So rather than simple hypermedia links between resources, we need to think in terms of Activity Links between a user and objects of interest.

The current problem is that Facebook is a closed proprietary system.  Not all web services may want to be in the Facebook realm.  We need to think of a true open way of building services at a similar level but in a distributed fashion.

Still missing to the level 4 architecture is discovery.  This would be the capability to search for Linked Objects and get back the activity handles that would allow a user (or rather a user-agent like SIRI for example) to perform such activities using that web app.  A smart agent could crawl the web, find the options to match the user goals, select the best alternative based on user criteria and return the desired "product" to the original user.  More on this later…

Building Tomorrow's Web Services

Posted by Patrice Cappelaere Mon, 17 Sep 2012 13:06:00 GMT

After three days in Greenville, SC, at the REST FEST 2012, it finally dawned on me that the web services we are building today will not meet the needs of tomorrow’s users.
Actually, the primary users of your web site will not even be human. They are more likely to be user-agents that will interact with many services on your behalf.  Those user agents may be embedded in your iPhone or IPAD.  They already are to some extent (Think SIRI).

Web interactions are changing.  You will not browse a web site directly and download content anymore.  An agent will do that on your behalf but only under some very specific conditions.  It will have to find that site or rather its offerings and but only if they match your needs. 

How will that work?

At the highest level, you may have a need that you want to fulfill.  This need or goal might breakdown in many activity sequences depending on the choices you may be able to make (based on availability and constraints).  Your agent needs to crawl the web and find what’s avtoailable.  Choices can then be made (by the agent or yourself), activities executed and goal be met.

From an API standpoint, enterprise services need to evolve to that model.  We simply cannot resort to publishing resources and use hypermedia (Resource Oriented architecture using REST) as conceived more than 12 years ago by Roy Fielding.  This is unlikely to work unless it matches what the agent is looking for.

As an example, this is a salient problem for NASA.  How to match NASA resources and assets to user needs?

NASA may make MODIS/RADARSAT data available on a web site but how does this match a user need?
User does not know MODIS or RADARSAT.
User wants to perform an activity: {verb} {object} {target}
> get floodmap of Haiti

More advanced science users may something more specific:
> get "radarsat-2 ortho-rectified raw data" of Haiti

User-agents of all kinds will need to be able to find and retrieve activities that the site can perform.

This is basically what I am trying to describe here:


Let’s work towards an Activity-Oriented Architecture rather than publish resources and links.

RIP is out!

Posted by Patrice Cappelaere Mon, 10 Sep 2012 14:43:00 GMT

Here is a 5mn slideshare on RIP: A framework to analyse and evaluate RESTful services.  This will be the basis for a 5mn presentation at REST Fest 2012 at the end of this week in Greenville, SC.