Top of this document
Go directly to navigation
Go directly to page content

Conversation | reboot9

The Future of applications

Desktop, Web or Widgets?

Everyone agrees that software applications are changing in a fundamental way, but no one seems to know exactly how. The massively hyped Web 2.0 phenomenon is all about moving applications to the web and using equally hyped AJAX techniques to simulate the experience of using a desktop app. One of the earliest examples was web mail, which has been followed by online calendars, web processors and even spreadsheets. But soon people were arguing that moving everything to the web was overkill; instead we should “webify” desktop apps, giving them the connectivity and mobility of web apps but with the slickness and responsiveness of traditional software.

Notes from the conversation have been added at the end of this article

And then there are those who contend that any app you have to download and install is doomed to failure. Certainly there’s something to this: witness Grouper and iMeem, both of which started out as rich clients but ended up repositioning as more traditional web portals. On the other hand, there are many counterexamples, the most prominent of which is Skype. Maybe the answer is adding offline capabilities to web apps, so you can use them even when you’re not hooked up to the net and synch to a server when you reconnect. Or Firefox extensions, which combine many of the advantages of desktop and web applications and might take the world by storm if they weren’t restricted to a specific brand of browser.

Existing Approaches Compared

Clearly webified desktop apps, offline-enabled web apps and Firefox extensions trump standard desktop and web apps, and they can be considered genuine improvements, not alternatives. In other words, old-school desktop and web apps are on their way out. The newer approaches offer incremental progress but are all lacking in certain areas. And with clear trade-offs involved (can you have ubiquitious data access without yielding control over your data to some third party?), it’s probably impossible to gain all the advantages without suffering some of the drawbacks. Some people feel that the ability to run everywhere makes up for the shortcomings of web user interfaces, but not everyone agrees. Extensions are superior in many ways but lack ubiquity and have the major (some would say fatal) flaw of running in an environment (the browser) that is less robust and battle-tested than a full-blown operating system.

Naturally the right way to develop and deploy an application depends to some degree on what it does. The first apps to exploit the web model were straightforward information storage, management and retrieval tools. Companies don’t hesitate to develop these ad hoc to solve specific tasks like digitizing a product catalog or customer database, so the ease of developing web apps for data entry (forms) and presentation (dynamic web pages) is a big plus. Sophisticated editing or design apps with a highly dynamic user interface are a different story. Nonetheless, there is clearly convergence going on, and even the slickest most sophisticated UIs are starting to move online.

Meet the Contestants

What would the ideal application look like? It would:

- Be fast and responsive

- Install invisibly and go away when you don’t need it

- Run on any computer (or device)

- Have enough control over the local machine to provide the best possible user experience

- Entail minimal risk of exposing the user to viruses and spyware

- Make your data and applications available no matter where you are

- Give users total control over the privacy, security and perennity of their data

A pretty tall order, but perhaps not unattainable. The only real candidates to provide a platform that will support this type of application are Microsoft, Google, Adobe, Apple and Mozilla (a conclusion similar to the one reached by another intriguing Read/Write Web article). Until recently, Sun would have made this list as well, but Java has completely lost its momentum in the last couple of years, and it doesn’t seem like most people see it as a serious contender anymore. (Some insiders have told me that this view is starting to become prevalent even inside Sun itself.)

On the surface, Microsoft would seem to have the strongest hand. I can say from experience that it’s a hell of a lot easier to program a sophisticated app using .NET than with a nuts-and-bolts language like C++. Its class library is extensive and elegant. In fact, .NET is very much like Java with a slightly better programming language (C#) and better user interface facilities. There are even efforts to turn .NET into a multiplatform environment. Nonetheless, .NET seems to suffer from the same fundamental problem as Java: it’s what the Germans would call a “Warmduscher” (literally someone who takes warm showers). C# doesn’t give you the same control and performance as C++, but it’s a lot heavier to code in than an interpreted scripting language like JavaScript or Python. As with Java, deployment is also a big issue. Installing .NET is a time-consuming and clunky experience.

The bottom line is that both C# and Java serve software developers better than end users. They don’t fulfill many (if any) of the criteria listed above, they just make software development a whole lot easier. As a result, users have little incentive to install the requisite platform, so software written for it struggles to achieve critical mass. It’s quite likely that any platform this heavy simply has to be pre-installed to have a real chance. (Why this isn’t the case with .NET is a mystery to me, seeing as the vast majority of personal computers are shipped with Windows, but whenever I want to use a .NET application, it always seems to require a newer, better version of .NET than the one that I already have.) This is why, for all their respective merits, Java failed to take off and .NET looks to be on the same dead-end path.

Google is the heavyweight primate of the web world, but it’s actually the weakest contestant in the application architecture stakes. I wasn’t even going to include them here until I stumbled recently onto Google Desktop. The latter has long been one of those applications that I’m planning to try out but never get around to. What pushed me over the edge was the desire to check out their new widget infrastructure. My initial impression is that, while I find the widget approach very appealing (more on this later), Google’s offering still needs a lot of work if it is to compete in the big leagues.

Installation pain is a lot better than .NET but still far from the instant availability of web apps. In fact, it’s probably quicker and easier to install Firefox, which is runs practically everywhere (Google Desktop is Windows-only). Google is using their excellent local search technology as a trojan to get their operating environment onto people’s computers. But the two don’t have much to do with each other inherently, and there are no killer apps among the widgets I saw. To top it off, their sidebar runs only on Windows and feels a bit leaden. Perhaps Google can become a real contender in this space, but if so they’re going to have to pull off some real Google magic: widgets that install instantly (no bulky runtime, please), respond smoothly and run everywhere, for starters.

The real frontrunner is arguably Adobe. Flash is the most widely deployed runtime on the planet, reaching 98% of all desktops. This gives Adobe the most important asset of all: ubiquity. Meanwhile, one of the biggest drawbacks of Flash, its closed nature, has been tempered recently with Flex (a markup-based UI language that compiles down to Flash) and the open sourcing of ActionScript. And yesterday (as I write this) they released the first alpha version of their killer platform play, Apollo, which frees Flash applications from the confines of the browser and gives them access to the file system and other local resources normally reserved for desktop programs. It’s certainly easy to imagine software vendors opting for Apollo with the assurance that their apps will run on any platform, inside or outside the web browser and have that sexy Flash look.

Meanwhile folks are rapidly waking up to the fact that Adobe’s main competition is actually not Google or Microsoft, but Mozilla. Firefox is far from ubiquitous, of course, but Mozilla has an ace up its sleeve as well: XULRunner. The latter (hopefully with a spiffier name) is slated to become the underlying runtime for Firefox 3.0 as well as a standalone platform for developing cross-platform apps. It’s already being used by such high-profile companies as Joost, the new TV-on-the-internet play from the makers of Skype. One cool thing about XULRunner is that inherits all of Firefox’s fanatical devotion to web standards. Another cool thing is that the runtime will be shared across apps, so if I install a XULRunner app, I’m secretly getting the runtime as well. A few killer apps like Firefox, Joost, Songbird, AllPeers (and whatever revolutionary new software is quietly brewing in someone’s basement in Bangladesh or Bucharest), and Mozilla will be as widely deployed as Flash. And while Mozilla’s user interface language, XUL, looks drab in comparison to Flash, they also support SVG, which is a true standard that enables the development of very slick, dynamic user interfaces.

The future of applications might thus be XULRunner extensions that function much like Firefox extensions, but don’t require that you use a specific web browser. (Provided we get a solution to the annoying requirement that Firefox be restarted whenever a new extension is installed.) The advantage, when compared to pure web apps, is that extensions have much more (in fact, total) control over the local machine. They are also good at providing features that layer on top of every website visited, like blocking scripts or ads. Web apps, in contrast, tend to work as isolated silos.

The biggest weakness of both Adobe’s and Mozilla’s new platforms is that they require manual installation of apps. This is because they need to make sure that their runtime is on the target machine. (Though unlike Microsoft or Sun, they are lean enough to package it with each app without causing unacceptable bloat.) Whoever gets onto a critical mass of desktops first will be able to start shipping apps without the runtime, which could lead to click-and-run deployment, just like web apps. At that point we’ll be very close to the software utopia I described earlier.

Through the Crystal Ball

In the long run, I think that obviating the need to install software will have the most revolutionary effect on the application landscape. As geeks, we tend to forget that the vast majority of users are terrified by the prospect of downloading new applications, for both technical and security reasons. And even the tech savvy among us spend an inordinate amount of time troubleshooting problems stemming from some new software goodies we’ve inflicted on our computer. And (highly efficient) slobs like myself end up with a hard disk full of crap since we don’t take the time to remove applications until our disk starts getting dangerously full.

The solution is simple: preinstall anything that might cause problems, with extensive testing to ensure that there are no conflicts or other unpleasant surprises. And limit downloading to web applications, which do their thing in a restrictive sandbox and go away when you’re done with them. Interestingly, this seems to be exactly the path that Apple is taken. Power users may bitch and moan about the lack of openness and extensibility on Apple’s devices, but the reality is that there’s less and less that isn’t covered by the combination of Apple’s excellent operating system and iLife suite, normal web apps and desktop widgets. The only problem is that the tight control that Apple maintains over its hardware and software, the very strategy that makes its applications so appealing, is a huge barrier to achieving critical mass across the entire personal computing landscape.

The common thread that unites these scenarios is the notion of apps as widgets that download and install automatically, like web apps. Innovations like Mozilla’s offline storage and WHAT WG’s client-side storage will give these widgets more of the capabilities of desktop apps and Firefox extensions, but without the total control over the local machine that makes the latter potentially dangerous. Despite the early lead of Google, Yahoo and NetVibes in the widget space, Adobe and Mozilla are in the strongest position to drive this approach into the mainstream. Apple is something of a dark horse and could trump the competition if its slick combination of hardware, software and auxiliary devices (combined with the lackluster reception of Vista) finally drive its market share out of the single-digit doldrums. Despite the perception that Microsoft, Google and Yahoo are battling for supremacy on the web, none of them has a compelling offering for software developers who want to create cross-platform apps of this type. Unless they have something up their sleeve, we may be about to witness a radical changing of the guard.

Notes from Conversation

- Local data is not necessarily more secure than remote data. Computers can be stolen or compromised. Remote data serves as a backup so it is less likely that data will be lost (stolen or damaged hardware). General-purpose encrypted remote storage like Amazon S3 might be more attractive than specific remote storage like Gmail since it is more opaque to the hosting company (harder to spy on).

- The long-term trend is to have broadband internet everywhere (in planes, WiMax, etc.) so offline access will eventually be irrelevant.

- Jungle Disk provides local access to S3 storage.

- Corporate policies sometimes do not allow storage of data outside the corporate firewall (ruling out remote storage).

- Services like Jotspot provide web applications inside the corporate firewall.

- Advantages of web applications running inside their own process (e.g. Webrunner from Mozilla). Able to use operating system UI (taskbar, etc.). Interaction with clipboard. Custom stylesheets. Processes are isolated (one app can't bring down all others).

- Google Gears, local storage for web apps. Need to look at API. Is it open or proprietary?

- Tabs are not ideal for organizing webpages mixed with applications.

- With regard to Silverlight/Apollo, are they a threat to the open web or is open data and interoperability (REST, JSON) more important?

- Thin clients are no longer that thin because they actually run a lot of code (e.g. Apollo).

- Open standards will win because they are the best guarantee of interoperability.

Slides can be found here: www.allpeers.com/blog/downloads/The%20Future%20of%20Applications2.ppt

Here's a cool example of what you can do with Webrunner and Google Gears: starkravingfinkle.org/blog/2007/06/webrunner-gears-offline-desktop-reader/