Dare Obasanjo wrote about Cloud Computing and Vendor Lock In where Dare commented on Tim Bray’s Get In the Cloud which Tim described a couple of issues. One of them, called a tech issue was, “The small problem is that we haven’t quite figured out the architectural sweet spot for cloud platforms.” I would say we have not figured out the architectural sweetspot for “any” platform, cloud or otherwise.
It seems that every API we program to, whether cloud based or not, is still a custom, one off API. It appears to be that way since the dawn of software programming and still continues that way, even when we are in the clouds.
What I am talking about? I know people cringe about analogies to software development, but this one contains the single point I am making. Do you know what an 8 pin DIP is? DIP stands for dual inline package and an 8 pin DIP is one “standard” package (or interface) for integrated circuits (IC’s). The keyword being “standard”. There are millions of different types of 8 pin DIP IC’s out in our world today used in virtually anything electronic. Much like our accompanying software, however, there is one crucial distinguishing difference between the two. Can you guess what it is?
Those millions of IC types can fit into “one" package, or put another way, exposed through “one” interface and that is what the 8 PIN DIP is, an interface. Through that one interface type or package, I can access millions of features and functions. Further, through using multiples of those packages/interfaces, I can make almost anything I want, from a motherboard, to a robot servo controller to circuitry that makes my Blackberry a Crackberry (oops that’s just me, the carbon unit) to circuitry that guides a rocket to the moon.
How come we have (still) not figured this our in our software world where we continue to hand craft one off interfaces that seemingly are tied to the implementation, even though we don’t think that (i.e. the vendor lock-in described by Tim’s article). Brad Cox seemed to have that figured out in his concept of a Software IC years ago and further in his book on Superdistribution. A man before his time, I would say.
What’s my point? My point is that there is going to be an inevitable conclusion at some point in time where “how” you interface with any given piece of software functionality is going to be more important than the functionality itself. Know what I mean?
Imagine you woke up this morning and you could access all software libraries through an operations based API like, Query, Create, Update, Delete, Copy and Move. That was it. That was your “complete” API and all software libraries, components, features and functions exposed that API where the general pattern is create a request comprising one or more operations on specified items. Submit the request to the API service for processing. Interpret the result returned by the service. That’s it.
Remember I am just talking about the interface exposed by the software library and not its internal representation. In other words, a standard API used by everyone. How would that change the way we would consume libraries (or components or services or features or functions) to develop software today?
Don’t get me wrong, I am not saying we are not heading in this direction, we are. There are several examples of this today, but it is not ubiquitous or universal or all encompassing as it could be. As a .NET developer and using the .NET framework class library of some 30,000 types, I can tell you it is not that way today. In fact, it does not matter what framework class library I use to be clear I am not picking on Microsoft. I am sure that at the PDC with some 38 sessions on cloud services and the announcement of .NET 4.0, we will see some interesting developments there, I am just hoping it is towards the direction of a standardized interface for cloud services.
Maybe it is just wishing thinking that I will see in my lifetime a standard interface or package like the 8 PIN DIP for software libraries where through one "standard" interface I can access thousands of library functions. Then again, software industrialization is occurring at a dizzying pace and I can’t help feel that it is just around the corner. History in the making is the phrase I believe and I hope to be a part of it.