Future in the clouds

All timestamps are based on your local time of:

Posted by: stak
Posted on: 2008-11-26 00:28:48

I've been thinking more about cloud computing recently. I still believe what I said about the ideal state of computing last year. I'm just more sure now about where specifically it's headed. And I think that most companies are going the wrong way.

The key thing, I think, is the separation between data and logic/computation/processing. Most companies that offer or are planning to offer cloud computing services are focusing on computational power. Amazon EC2, Google's App Engine, and whatever Microsoft Azure is going to turn into all offer cloud-based computation. I think that this is pretty pointless. On the other hand, things like Amazon S3 (i.e. cloud-based data storage) are incredibly useful.

There are very few advantages to using a web-based version of an office suite. The main advantages are: (1) real-time collaboration potential and (2) ability to access it from anywhere. The first is not inherent to cloud applications; any desktop-based application can do the same thing. The second is really a result of cloud storage, which is what I'm advocating. There are disadvantages to cloud computing as well: interacting through a web browser instead of a native app is much slower and more limiting; and there's heavier dependencies on reliable network connectivity. A well-written thick client, can, I think, always beat a well-written web app.

So as I described in my earlier post, a central repository for personal data with version control and transparent backup is important. This data must be accessible from any computing device, and can be manipulated by any number of different applications. Ideally the data storage would be completely independent of the data manipulation. You could sign up for any cloud storage service and access the data from any application. This requires a common data transfer protocol. If each cloud storage service provider uses a custom API, then no application will work with all service providers. If, however, they agree on a standard API, then any application will work with all of them. Imagine having your data accessible via a URI like "cloud://ec2.amazon.com/~username/file.ext#version". Want to switch providers? No problem - just migrate to "cloud://gfs.google.com/~username/file.ext#version". The protocol used to access the "cloud" scheme remains the same, so the app still works just fine.

I imagine that different storage providers will offer different features. Some will undoubtedly be free and advertising-supported. Others may charge you directly. Others may provide storage for free, but charge app developers who connect to their clouds (the app developers would make money by charging you for the app). Some may provide stronger encryption or more reliable backup facilities. There's plenty of differentiators for competitors in this space, and so it becomes important for the user to be able to switch between providers based on their needs.

Another thing is that no application is perfect - we've all run into some feature or another that one app does that we wished was present in some other app. Take the (fictional) example of two presentation editors. One of these makes it really easy to create and edit the presentation, and the other provides support for funky things like simultaneously playing the slideshow on 5 different screens over a network. Naturally you want to be able to use the first app to build your presentation and use the second one to actually present it. This is impossible if both apps use their own proprietary data formats; if they both operate on the same data standard, then it is possible.

Note that the last paragraph applies to desktop-based storage too, so it doesn't really matter if the data is in the cloud or not. But in order for the computing ecosystem to evolve in the way I hope it will, common data storage and transfer standards are immensely important. I think it'll take a while for the big companies to get their heads out of cloud computing and into cloud storage. Until that happens, there's a huge opportunity here for somebody to start developing this ecosystem. There's a lot of problems that need to be solved, particularly to do with efficiently syncing the data with devices that are using it, and allowing extremely fine-grained permissions for access to the data. However, these are not intractable problems; most have actually been solved for specific subcases already, it's just a matter of generalizing and packaging those solutions into a cohesive whole.

Then you just have to (1) provide a storage service that solves these problems (you can probably even piggyback the implementation on S3 or something), (2) publish an API that allows access to the service, and (3) support third-party apps in accessing that data. If you can do this fast enough, and there are enough useful apps using your protocol, then by virtue of being the first one in the space, your API will become the de-facto standard and everybody else will have to follow suit for backwards compatibility with those apps (this is where open data formats are important, since you want those apps to be useful with other data that isn't in cloud storage yet). Once there's a couple of other storage providers in the market, the ecosystem starts growing. This is probably one of those things where you'd end up owning a slice of the market. Your slice would decrease in relative size as the market grows, but the market growth would result in larger absolute value.

Posted by Varun at 2008-11-27 19:11:34
While I'd love to use the cloud as my day-to-day computing platform, the fact is that the computer I interact with most (otherwise known as my mobile phone) is horrendously slow and downright awful when it comes to rendering ability. (I think Gizmodo did a review just a couple of days ago where they evaluate web browsers and came back with a slightly more scientific, if biased, version of "they all suck - but some suck less".) Back to my argument. Those are the devices which would most benefit from being coupled to the cloud since they are most resource constrained. If you have a larger form factor, like a laptop or a desktop, then chances are it is already running some variant of x86 and is subject to the corollary to law of x86 inevitability: easier to use the existing thick-client ware.

Mango is a good step (and I'm envious of my cousin's Bold as a result), but the real cloud experience will come when mobile platforms are as capable of displaying and interacting with the web as desktop platforms. And that's still a few years away.
[ Reply to this ]
Posted by stak at 2008-11-28 00:40:28
Note that browsing the web is not the sum total of all computing activity. Not even close. I'm mostly talking about useful computing here, where you're producing something rather than simply consuming the Internet. And you're not going to be doing much of that mobile devices to begin with; the limiting factor is user interface paradigms rather than CPU power.
[ Reply to this ]
Posted by stak at 2011-06-10 09:21:49
Relevant article. iCloud isn't quite what I had in mind when I wrote this post, but seems like a good first step. Hopefully all the proprietary cruft will eventually be boiled off and we'll be left with just the essence: cloud storage accessible with standardized APIs that any app can use. If Apple doesn't do it first, somebody else is going to make an open source substitute for iCloud that should do the trick.
[ Reply to this ]
Posted by Varun at 2011-06-10 22:35:17
Hasn't Amazon ended up standardizing this in many ways? Other providers (Ubuntu, for one, I believe) actually offer EC2-compatible computing platforms, and I think Rackspace offers a S3-compatible cloud storage. For the consumer end, Google's Sync offers a pretty fantastic solution for syncing PIM data.
[ Reply to this ]

[ Add a new comment ]

(c) Kartikaya Gupta, 2004-2024. User comments owned by their respective posters. All rights reserved.
You are accessing this website via IPv4. Consider upgrading to IPv6!