Cloud OS

From P2P Foundation
Jump to: navigation, search


Paul Bucheit:

" The basic idea is that apps and data all live on the Internet, which is has been renamed "The Cloud" since that sounds cooler, and your laptop or whatever is basically just a window into that cloud. If your laptop is stolen or catches fire or something, it's not a big deal, because you can just buy another one and nothing has been lost (except your money). Many people characterize this approach as using a "dumb terminal", but that's wrong. Your local computer can still do all kinds of smart computation and data manipulation -- it's just no longer the single point of failure.

To me, the defining characteristic of cloud based apps is "information without location". For example, in the bad old days, you would install a copy Outlook or other email software on your PC, it would download all of your email to your computer, and then the email would live on that computer until Outlook corrupted its PST file and everything was lost. If you accidentally left your computer at home, or it was stolen, then you simply couldn't get to your email. Information behaved much like a physical object -- it was always in one place. That's an unnecessary and annoying limitation. By moving my email into "the cloud", I can escape the limitations of physical location and am able to reach it from any number of computers, phones, televisions, or whatever else connects to the Internet. For performance and coverage reasons, those devices will usually cache some of my email, but the canonical version always lives online. The Gmail client on Android phones provides a great example of this. It stores copies of recent messages so that I can access them even when there is no Internet access, and also saves any recent changes (such as new messages or changes to read state), but as soon as possible it sends those changes to the Gmail servers so that they can be reflected everywhere else (such as my home computer). To the greatest extent possible, the information all "lives" in the cloud, and all other copies are simply caches which may be discarded at any time. (BTW, Apple is lame for not allowing a native Gmail app on the iPhone -- email is the one place where Android really outshines the iPhone for me)

Continuing with the Gmail example, it's not just your data that resides in the cloud -- the entire application lives there. This is the part that causes people to erroneously describe cloud based apps as a "return to dumb terminals". Just because an application "lives" in the cloud doesn't mean that your local computer isn't still doing work. When you use Gmail from your web browser, it downloads large chunks of Javascript code to run on your computer doing things such as rendering your inbox, handling keyboard and mouse events, pre-fetching messages, etc. The advantage of having this code run on your computer is that it can respond to your actions within a few milliseconds instead of the hundreds of milliseconds it could take to reach Google's servers (thanks to the relatively low speed of light). Which parts of the application run on your computer and which run on Google's computers? Ultimately, it does not matter, and can change over time (and in fact the split is different for different interfaces -- the basic html interface does not need any Javascript) As an end-user, you simply use the app, and let Google worry about making it all work, keeping it up to date, etc.

Because we're now treating the executable code and system configuration as data that lives in the cloud and is only cached locally, it also makes sense to do away with the old notions of installing and administering applications on your computer. And of course we also need a security and sandboxing system that prevents the code from breaking your computer (as is so common in the Windows world). In the web/Javascript world, this happened somewhat automatically because web apps evolved from simple web pages, and obviously you don't have to install or uninstall web pages -- your browser simply fetches what it needs to display, optionally caches parts of it for improved performance, and discards resources that it no longer needs (since it can always re-fetch them later on).

Cloud-based apps don't necessarily have to be written in Javascript and run in your web browser however. iPhone and Android apps behave in much the same way. Although they can be "installed" or "uninstalled", from a user perspective, that process isn't substantially different from adding or removing a bookmark, and in fact many of those apps are little more than a thin wrapper around an embedded web browser. A combination of technical and review policies prevent those apps from doing anything dangerous to your computer (unlike a Windows app, which could install a new device driver, replace a core system library, install a root-kit, etc).

One way of understanding this new architecture is to view the entire Internet as a single computer. This computer is a massively distributed system with billions of processors, billions of displays, exabytes of storage, and it's spread across the entire planet. Your phone or laptop is just one part of this global computer, and its primarily purpose is to provide a convenient interface. The actual computation and data storage is distributed in surprisingly complex and dynamic ways, but that complexity is mostly hidden from the end user. For example, interacting with my FriendFeed page involves the coordination of thousands of individual processors and disks owned by a dozen different entities, including you, Facebook, Amazon, Google, your ISP, and many intermediate ISPs. The same is true of the services provided by thousands of other web apps.

This global super-computer enables us to do things that would have been impossible not long ago, such as instantly search billions of documents, access our email and other info from almost anywhere, easily share ideas with thousands or millions of people, collaboratively edit documents with people spread around the world, leak embarrassing diplomatic cables, etc. It also makes it easy to launch new services and applications with almost zero money, which has created a new generation of low-budget startups and expanded the world of high-tech entrepreneurship to many more people.

Inevitable, some curmudgeonly types will say this is all bad, and indeed it is not without some downsides and complications, but overall I believe the development of this global super-computer is one of the most important technological advances in history." (