Software applications have two main perspectives the external perspective where interfaces to the external world are defined and consumed and the internal perspective where an internal structure enables and supports the external interface. Let me elaborate on this:
The internal perspective shows the building blocks and layers within the application allowing specific data flow and processing. To further simplify things let’s take an example from the real world and that is a real building block. We can describe it in a technical and physical description that will detail the concrete, foundations, electricity tunnels, air conditioning, and others. The external perspective of the building is the apartments look and feel, available services for tenants, views from the windows, painting color, type of cupboard handle in the kitchen, and others. In general, all the things that people experience when they interface with the building. So if we go back to the software story then the external perspective is the application UI, data feeds, APIs, and other entities external parties come in touch with.
Twitter with their approach in their API has created something special which can be the basis for a new development paradigm on the web and that would be MOA – Machine Operated Applications. As a background, Twitter provides one unified external interface, which is their API and their website UI seems to be built mostly on this API (I might be exaggerating here and they have capabilities in their UI not available in the API but the major functions are also available in the API). The same API is available for others to consume and operate. The API is split ed into two parts: the first part is a general services API which includes search and other user agnostic services which are very similar to other services other companies provide in their APIs. The second part is the more important one and that is the user-driven API where all data and actions available on Twitter’s web application for a specific user are available via the API itself. This model allowed the huge surge in the number of applications built on Twitter at no time, a developer community that many companies would die for while Twitter did it in a snap.
To describe the model I see for Twitter in a visual way:
[ Twitter infrastructure ] – Internal perspective which is hidden
[ Twitter API ] – Unified external perspective for the product
[ [ Twitter UI ] or [3rd party applications]] – API consumers and operators having equal rights to the external interface (3rd party apps are limited in the number of queries per hour but it is not too serious if you consider that the limitation is per user and not global)
So how all this long and tiring story relates to MOA – machine operated applications? Well once an application can be fully operated and consumed via a formal API (Which is Application Programmable Interface) then robots can use it too. And I do not mean today’s web robots who harvest data, aggregate data, and do some kind of analysis. I am talking about Robots that would work autonomously on behalf of real users or companies and will use the product in a meaningful way. For example, I can imagine a robot that will be my social network expander and it will use data from different areas to understand my interest and current network and will expand it automatically by following new people on Twitter. Following someone is a meaningful action in the virtual and real-world and once a bot will be smart enough to do so then things will change. Twitter with its API approach allows this evolution.
A note: the split of perspectives is similar to the way strategy in companies can be viewed where a company has the internal perspective of operational capability and the external perspective which is the market share, brand recognition, distribution channels, and more.