While planning for a talk at Cloud Expo Europe a few weeks ago I was thinking about appropriate metaphors for the way APIs are changing the web. Although the title was APIs as glue for the Cloud, I think the core metaphor behind it deserves some explanation: MVC for the Cloud. I thought I'd add some notes here as to what this might mean.
MVC or Model View Controller is an architectural pattern for software that seperates out three import things - Models (or Data), Views (visualisation of that data) and Controllers (operations on the data). Since it's invention at Xerox Parc in the late 70's, MVC has a had a huge impact on software engineering and nowhere more so that on Web Applications - there are MVC frameworks for almost every Web programming language and framework out there.
What I'd call "1st generation" MVC was applied to desktop applications and gave great new flexibility at design and build time but separating these three elements out and allowing independent work on all three pieces. When the software shipped everything got baked together and the end user had no knowledge how the underlying system was stitched together.
Moving to Web Applications there is a "2nd generation" of MVC which takes this even further - M, V and C can even stay separate at deploy time for a web app - this means developers of SAAS apps can independently work on and update their data models, views and controllers without affecting the other components - again all without the user needing to know. We can even allow users to switch interfaces "views" according to their needs - and keep exactly the same underlying logic and data models. Advanced testing frameworks and continuous deployment make it increasingly feasible to decouple almost everything.
However, arguably we're seeing the birth of a "3rd generation" (or is that a third wave?) of MVC which has the potential to have an every broader and deeper impact - Cloud (or Web) scale MVC - all enabled by APIs. To explain this: MVC models have to date been though of as applying to single software applications (desktop or web), but the metaphor extends much further. Namely:
- Models (Data): can mean any data anywhere, held by any company.
- Views (Interfaces): can mean any view onto some data or function - i.e. an iPhone app, a mashup with other data, produced by the owners of that data / function or by somebody else.
- Controllers (Logic): can mean any piece of business logic applied to data, again by the owners of the data or by somebody else.
The implications of this are enormous - instead of a world in which individual applications/services are silos which have M+V+C locked inside of them the MVC connections a can perfectly well exist between applications and between companies. Better stated a company with great data assets can enable access to this data to aggressively grow an ecosystem of partners who provide exiting views (often coupled to audiences) and transformations of this data.
Looking at some examples:
- Companies such as the New York times, Bloomberg or Weatherbug have great data - it's often real time, often broader, deeper and unique value over their competitors.
- Companies such as Animoto, Shazam and Twitter provide amazing functionality which transforms data - Animoto turns images into video, Shazzam turns audio into metadata, Twitter organises a huge global conversation.
- Companies such as Yahoo! and Tweetdeck provide views on data and structure it in clever ways. Further in the case of Yahoo they bring it to a huge Audience.
I'd also include Apple in the later category - creating devices which end up in the hands of millions and aggregate/transform applications and content into convenient forms for apple users. Some companies (potentially the New York Times falls into this category) have assets in more than one place - in the NYT's case great data, but also a loyal audience which trusts its brand.
APIs are the key strategic asset which is needed to make this happen. Using APIs companies are now no longer forced to provide all parts of the value chain of their service themselves - in fact, it has huge value to partner with others and focus on one's core strength. Today companies can likely still be victorious in their market segment without partnering up - but as the Internet evolves it seems likely that:
- The companies with the best data should partner with those who can reach the widest (relevant) audience and who can best transform / manipulate and integrate that data.
- The companies with the best algorithms and processes should seek the best data partners.
- The companies which provide smart interfaces - be they in software, hardware or in terms of audience should bring in the best data and functionality from wherever they can find it.
Such changes might require changes in business models and strategy, but increasingly they look like a natural evolution of the Web economy. As Data and Services move to the cloud the opportunities for focus and re-use of core valuable assets is a potentially huge untapped benefit for many companies.
APIs and the Internet Operating System
APIs are the natural glue which can make Cloud scale MVC happen since they allow a complete decoupling of the different elements needed for meaningful applications. What's also interesting is that MVC generally doesn't exist without a fourth element - an MVC framework which provides the structure within which everything comes together.
At the software level, this 4th element is represented by frameworks such as Rails, Jango, Cake, Spring's Java MVC framework or any of the other many frameworks. At the cloud scale the equivalent seems to be something akin to the Internet Operating System postulated by TIm O'Reilly and others which argues that many core internet functions such as Search, Media Access, Location, Communication and others are morphing from standalone services into a commonly available infrastructure which others can rely on - again often through the use of APIs.
This metaphor seems spot on - common substrates such as twitter messaging and google search are clearly becoming the basis of many thousands of new applications. The idea extends further to services such as Facebook connect and Twitter connect which are quickly becoming a standard way to set up user authentication for new Web applications (just as Paypal has largely become for payments). (Of course in some cases there are concerns about how much power some of the players behind such services may ultimately have, but leaving this aside, they arguable provide the means for a whole new economy of applications.
The Internet Operating System seems to be clearly emerging and taking the analogy further - is beginning to make it possible to build compound applications which string together data and services from many places to create user experiences.
Back to MVC
Although there are ton of possible metaphors for the way the Web is evolving, the MVC metaphor seems to be a good fit for what is happening not only at the architectural level (and what might be happening "on top of" the Internet Operating System) but also at the business level.
It seems a fair bet that web companies over the next few years will need to establish what their core value and differentiator is (M, V or C?) and aggressively establish partnering channels to links themselves into strong partner ecosystems. This also creates opportunities for a wealth of new applications which combine data, functionality and views/audiences in new ways.