CTO Articles

Home > News > CTO Articles

Published in IT World
June 05, 2007

The Grand Unifying Theory of Enterprise Computing: 2.0

Standing here in 2007, one thing is abundantly clear. Anything worthy of attention must have a "2.0" tacked on the end of it. I hate to be left out of such trends so now is my time to make a contribution to the meme.

Many moons ago (or so it seems), I wrote an article called "A grand unifying theory of enterprises, applications and everything"[1]. In that article, I drew an analogy between theories of Enterprise Computing and theories of Physics. In short: Physics and Computing are alike in that there are theories for how they both work "in the large" and theories for how they both work "in the small". Unfortunately, although the large theories work very well "in the large", they don't work "in the small" and versa visa. Think Remote Procedure Calls versus Asynchronous Messaging. Think Newtonian Mechanics versus Quantum Mechanics. Very good theories. Work excellently in their "sweet spots". Cannot be reconciled into a single theory. I am prone to finding that interesting. It goes with the territory.

I am not alone in drawing analogies between the physical world and the world of computing. Pat Helland - himself a recent target of the "2.0" phenomenon[2], has made a striking correlation between computing theories and the models of time espoused by Newton and Einstein[3].

I am paraphrasing Mr Helland here and co-opting his analogy into my own. Computing "in the small" uses a Newtonian model in which time is synchronized at all points. All the bits talk to each other in the "now". This is the world of objects and functions and sub-second call and response. Either the entire system is "up" or it isn't. Attempts to make this model work "in the large" across networks have proven time and again to fall foul of the fact that "now" is unavoidably relative. Parts of the system can be "up" while parts are "down". Events that happen at time T may have to travel for a long time before they get processed, resulting in T having moved on to T1 by the time the event arrives at its destination ... And so on.

If the details of all of this do not interest you, here is the takeaway: you cannot design away the network - you can only hide it behind tall banks of dollars bills. There are those who do not believe this of course. Everything - including truth - appears to be relative to a given point of view.

Anyway, enough idle philosophizing! Where is the "2.0" part of this story? Well, since I wrote the aforementioned article, a quiet revolution has begun to form on the horizon. A revolution in which processors cease to get faster and faster and instead, begin to proliferate in number. A revolution that could see your average PC packing hundreds of processors within a few short years[4]. This is interesting because there is a school of thought which holds that the best way to leverage such a machine is to treat each processor as if it lived alone: divorced in time and space from its cousins. Programming languages like Erlang take this approach - known as "shared nothing" - in which processors work together by slinging messages asynchronously back and forth...No assumptions of co-location. No assumptions of shared concept of "now"...

You probably see where my built-in unwarranted extrapolation engine has gone with this? Could this be the development which finally (finally!) causes computing "in the small" to use the same conceptual model that works so well for computing "in the large"?

Perhaps the Grand Unifying Theory cometh at last?

[1] http://www.itworld.com/nl/ebiz_ent/12022003/
[2] http://blogs.zdnet.com/microsoft/?p=459
[3] http://blogs.msdn.com/pathelland/archive/2007/05/15/...
[4] http://www.itworld.com/Tech/2327/nlsebiz070515/


seanmcgrath.blogspot.com