Intelligence in the Cloud
There's a general misconception as to what, exactly, the "cloud" really is. I think most people imagine it as just a large cluster of computers, hooked up together as a large database or map/reduce storage system sitting behind a load balancer so that it can respond to requests as scalably as possible. That's definitely part of it, but there's much more to the cloud than that.
The cloud can be intelligent.
Don't think of it as just a large disk drive in the sky where we store MP3s, address information and our email, and sync occasionally with our various computers. The cloud - or really each cloud as there's many of them out there - is made up of hundreds or thousands of individual computers, each with the ability to do intelligent tasks.
Right now these tasks are inward facing, simply doing activities like spidering the web and indexing the results (Google), or they serve as places to flexibly host external applications (Amazon EC2), or maybe do in fact do little more than serve as a central syncing storage space (Apple MobileMe). But those individual clouds could be the basis of so much more. I'm thinking of intelligent agents running on all those linked computers, doing tasks that we ask them to do, monitoring the internet for us, processing data and responding to our requests both on demand, and on schedule.
The problem is that so far we can only create full applications that are designed to be hosted on specific instances of the cloud, such as custom clusters, or hosted services like Googles App Engine or Amazon EC2. Because each cloud is siloed off from the others, there's no way to use those clouds as a single entity. You have to use various websites to access different functionality, and hope there's some sort of data interchange format that can help these services communicate.
However, I can see a future where a standard for secure scripting emerges, so that just like my music or files can be stored and retrieved on any server, my scripted tasks and applications could be stored and run on any server as well. This was impractical before there were clouds of computers running virtualized OSes on multi-core CPUs. Nowadays however, scripts are relatively easily sandboxed, and we're quickly learning (with examples from languages like Erlang) how to divide up those tasks to run efficiently on multiple processors as well.
Imagine instead of relying on random one-trick-pony "Web 2.0" sites which may disappear as soon as their funding runs out, you get to own and manage your cloud-based tasks and applications yourself. Less like installing WordPress on your own hosted server, and more like having your own Greasemonkey or cronjob-style scripts running on one or more computers in the cloud. We already have similar systems already - our email or IM, for example, is a process running on the server listening for messages for us from other servers, before then contacting our local client. Imagine instead of these services functioning as dedicated applications, they instead were autonomous and addressable agents running in the cloud on our behalf. It's quite cool to think about and is the basis, I'm sure, for many a science fiction novel or movie already.
This brings me to what spurred me to write about this now - the demo of Mozilla Ubiquity released yesterday. In it, they combine somewhat natural language with predefined scripts that run in the browser that help with various common desktop tasks. It's a great demo, which shows a trend to extend the command line/address bar/search box beyond just the simple request-response paradigm that the web has used up until now. But it has its limitations both in terms of platform, and data. If I leave my desk, I leave all that functionality behind (and my effort in learning how to use it). In order to be truly "ubiquitous", those scripts will have to run in cloud.
I can easily envision a standard - call it OpenScripting - where tasks, agents, bots, or even full-blown apps written in a certain way can be run in any of the clouds supporting that standard. The equivalent of JavaScript in a desktop browser with the DOM and browser APIs, but running in a server somewhere. The scripts would have to be portable and secure, so that for instance, an agent monitoring a website in another country could be moved to a computer at the edge closest to that site, reducing latency and improving performance without compromising the computer on which it runs.
Well, much of that is probably still fantasy and easily a quite a few years off, but to my main point about the cloud: It can be intelligent, and that intelligence is what's so exciting about cloud computing, making it in my opinion, not just a buzzword, but really the future of the web and computers.
-Russ