Cloud computing. One hears this term everywhere. Every application will soon be a cloud-based web application. No more desktop applications. No more Office or Photoshop for Windows or MacOS, they will just all be web apps that live in the magical cloud. This will be a world of Google ChromeOS, Azure, App Engine and Google Doc’s. I call BS on this nonsense.
The first, and most obvious question is, why? Why web-apps and cloud computing at all? There are a couple of different answers to this, but great user experience is not at the top of the list. The web-app world is one of lowest common detonators; when you need to build an application quickly with minimal development overhead, web-apps and cloud computing infrastructure works great. WebApps are simple, cheap and provides for ubiquity of access. A great example is FaceBook; you can use it from any OS running a reasonably capable browser and building a similar service using rich-client technology made no sense when the service was in its incubation period.
Facebook is also a great example of a service that, from a purely user-experience standpoint, would probably be substantially better with a rich-client frontend (imagine having true drag and drop, being able to reorganized lists as you see fit and not being subject to random and inexplicable UI changes made by FaceBook’s devs). So inadequate is the current web-based user experience with FaceBook that at least 4 projects, I know of, are working on providing a rich-client frontend to FaceBook.
In cases where an application or service is built only as a web-app or cloud service, it is usually serving, first and foremost, the interests of someone other than the user. When we hear Google, IBM or Oracle (or just about anyone else) talk about applications in the cloud, it is to serve their interests of promoting anything that deemphasizes a competitor or an entrenched technology and provides them a method to lock customers to their platform. When we look at services like FaceBook, it’s to simplify development costs and provide global ubiquitous access. Even in the case of Microsoft’s SharePoint, it was developed (originally) as a web application due to the comparatively low-cost of development.
That doesn’t make any of this great or even good, from a user experience standpoint, and the proof is in the pudding: most web apps are a usability nightmare and the general interweb experience today is one of intrusive and resource sucking flash ad’s combined with flash and Silverlight media players (coded as native plug-ins, of course) and totally inconsistent user interfaces.
So why would I, as a user, want to give up my rich client applications in favor of a web/cloud replacement? Price. Advertising supported services don’t cost a dime out of pocket. Of course, we are back to annoying advertising, the outages, the lousy user experience and, generally, a discussion of lowest common denominator. This is why rich-client applications aren’t going away: if you need a really outstanding email and calendaring solution, there is no web-app today (and likely in the future) that can touch Outlook. You want the best media players, the best games, the best spreadsheet, the best CAD package, the best photo editing solution, then native apps are where you end up. Even if you could implement these apps well in a browser, you would simply end up with the browser becoming just another container acting as a virtualization layer.
If you want proof of the importance or continued success of rich-client applications, look no further than the iPhone. The iPhone should be a poster-boy for the always on, web connected, post-desktop cloud computing world. But the iPhone SDK looks shockingly like a conventional desktop OS SDK. This is because it is, and for good reason: a true (non active-x, flash, Silverlight) browser/web app can’t and won’t ever provide the same level of performance or access to OS provided features. That’s why even Google Earth is a native desktop rich-client application!
Cloud platforms, like Azure and AppEngine are important as enablers of new back-end scenarios, just as the web browser enabled a whole class of application to exist that might otherwise never have come about. However, those that claim the cloudification or broswerfication of everything are selling a world vision to suite their needs or desires, not necessarily those of users. Web and cloud computing are additions to the computing landscape, not replacements for existing technology. The PC didn’t replace the mainframe, SOA didn’t replace n-tier architecture and Cloud Computing is not going to replace the need for conventional infrastructure or desktop applications.
Certainly, classes of desktop applications may go away (quick’n dirty VB6 apps hopefully), but ultimately, computing is an additive world. New ways of doing things are intermingled with old methods, those old methods are renamed with shiny new names and, or course, there is always some displacement. But, as one of my mainframe centric customer loves to say, “we have been doing this cloud crap for 40 years”.