A Rose By Any Other Name
Oscar Wilde once famously remarked that Britain and America were two nations divided by a common language*. Of course, we've all heard the urban legends of Brits innocently employing their vernacular to ask for cigarettes in America, and the misadventures of American tourists dealing with the twisted logic of British place names, remnants of a few millenia assimilating every passing Viking, Norman, Celt, and Roman — not to mention a large portion of the German royal family. (Yes, it's written "Leicester Square", but it's pronounced "Throatwarbler Mangrove".)
[*] = Some credit George Bernard Shaw, although it seems neither man actually used quite those words. [The Top Three Quotation Origin Requests]
Yes, language can be a slippery thing at the best of times. The potential for ambiguity is high even when all parties agree on the terms in use, but when terms are subject to malleability, discourse can quickly descend into a babble of cross purposes and conversational blind alleys. Fabrizio Giudici recently fell foul to such polysemy in his blog, in which he is troubled by an imprecise definition of 'Rich Internet Application'.
It highlights an interesting question: what do we mean by Rich Internet Application? And, more importantly, which of the many and various solutions which go by that name is the most likely to succeed?
Did someone call for a taxonomy?
Wikipedia defines Rich Internet Application as...
Seems simple enough (although I think Fabrizio's list better hits the mark.) Later, however, when the entry attempts to list RIA methods and techniques, we find the following list of technologies...
The astute reader will note that of this list, only three (5.1, 5.8 and 5.9) are inherently web browser technologies. Others are merely hermetically sealed embeds into the web page, or technologies devoid of any formal connection to a web browser at all.
This list highlights the three distinct religions in the RIA space. Three different philosophies searching for the same Nirvana, but differing on where to start and how to get there.
As we're missing any convenient taxonomy for these three religions, and with tongue planted firmly in cheek, let's have some fun by inventing our own (if someone can come up with better labels than these, please don't hesitate to suggest them)...
Browserism is the belief that the web browser (or comparable page-centric markup-orientated HTTP-bound middleware platform) is the future of end user facing software; a belief solely based on observation that the web is currently the predominant tool for accessing the internet. The goal of Browserism is to slowly evolve a common web platform to include the functionality traditional desktop applications have supported since the rise of the Micro Computer in the early Eighties. Browserists get very excited by user interfaces approximating desktop applications circa 1984 ("wow, you can drag the map!") or functionality which reminds them of a Commodore 64 ("gee whiz, I can save data onto the computer's disk itself!")
Ajax is the primary (amalgam) Browserist technology on the client side, with Google Web Toolkit being an example of a companion server side technology. GWT is not alone though, indeed it is impossible to swing a cat without knocking over at least half a dozen 'pretenders to the throne'.
Neo-Desktopism is the belief that the web browser as an end user facing application platform is ultimately an evolutionary cul-de-sac. The goal of Neo-Desktopism is to evolve traditional desktop application technologies (for Java, this would be Swing and AWT primarily, although also includes the JRE itself) to a point where they can float free of a physical local client installation, deploying on demand just like web pages. Neo-Desktopities get very excited when their Java WebStart applications actually start on a friend's laptop first time, without having to spend ten minutes fiddling with their Java installation while gawking at an impossibly long stack trace.
Because it does not require a web browser to run, Java WebStart is an example of a Neo-Desktopism technology.
Listening to a recent JavaOne 'blogosphere debate', in which two guests (C. Enrique Ortiz and Ajit Jaokar) discuss mobile applications, we can clearly hear the Browserist and Neo-desktopism agendas given life. Two competing philosophies, galloping like horses (or should that be meandering like snails?) to complete a course in the fastest time, albeit starting from completely opposite ends of the race track.
One platform (the browser) is ubiquitous, but lacks functionality. The other (the 'free floating' desktop) abounds in functionality, but lacks ubiquity. The browser is meandering towards functionality by reinventing every staple component of the desktop environment in its own, rather peculiar, form. Meanwhile the desktop dithers about aimlessly, undecided as to whether the mechanics of a solution is best served by being lightweight (JavaFX Script, SilverLight), or heavyweight (Java Webstart.)
But hold on, haven't we left out an entire category of application? Isn't there supposed to be a third way? Why, yes!
Pragmatic Neo-Desktopism is the belief that the web browser as an end user facing application platform is ultimately an evolutionary cul-de-sac, but we'd all get fired if we admitted that to our bosses. Pragmatic Neo-Desktopities desperately want to write proper Neo-Dekstop software, but are conscious of the fact that the fashion amongst Dilbert-esque managers is for all software to launch from a URL. So they simply embed heavyweight technologies inside a web page, which, while acting totally without sympathy to the host environment, at least keeps the Dilbert-esque managers happy.
Examples of Pragmatic Neo-Desktopist technologies include Java applets and Adobe Flash.
And now, the rant (normal service is resumed)
You may have already guessed from the above prose, or previous blog entries, where my sympathies may rest. If not, let me spell it out in no uncertain terms.
For all the brouhaha surrounding developments like GWT and Google Gears, all these technologies are really doing is papering over the deficiencies in a technology being used totally in contradiction to its original intended purpose. I cannot tell you with any authority what Tim Berners-Lee was thinking when he created the first HTML based browser, but I'll wager he wasn't expecting that his new 'babe-in-arms' would replace the Word Processor, the Spreadsheet and Adobe Photoshop!
When 'advanced' functionality is required, like drag-n-drop, cut-n-paste, or any other desktop standard from the age of the first WIMP (Windows/Icons/Menus/Pointy thingy), pure markup and Ajax invariably give way to bastardised solutions employing plugins like Flash. Pragmatic Neo-desktopism is essentially where Browserists retreat to when they are asked to implement something non-trivial. And developments like Google Gears are just an attempt to wrestle control back in favour of pure markup/Ajax solutions, so that Browserists can kid themselves into thinking their chosen platform may one day rival the experience of 'first class' desktop applications (like the real Adobe Photoshop) without being propped up by auxiliaries like Flash, etc.
The only thing the browser has in its favour is its overwhelming popularity with the user-base at large. If it wasn't for the fact that every PC, Mac, Playstation 3 and refrigerator has a web browser, nobody would give a second glance to proposals suggesting the twisting and distorting of the web into a delivery platform for rich end-user facing software.
Applets and Flash are a diversion. They offer only a short term sticking plaster for the problem that the web was never designed to host functionally rich applications. And while it could never be said that Flash hasn't contributed to the sum of Human knowledge — the 'bling' it has brought to user interfaces has been as educational as it has been controversial — Flash is still hobbled by spending the majority of its time embedded inside the web, rather than being cut free to offer a rival 'first class' RIA platform of its own. (Is there a "flash:" HTTP protocol, which allows Flash RIA's to launch directly into their own 'player' without loading a superfluous web browser first?)
A desirable Rich Internet Application platform, I'd suggest, will be reached by mutating the current Rich Non-internet Application platform (aka, regular desktop app technologies) to a point where they can live in 'cyberspace' (ug!) rather than on someone's hard drive, while still retaining all the functional richness and user interface finesse of their ancestors.
My concern is that the 'Neo-Desktopism' camp is dithering and dawdling, unable to unify around a common technology either by agreement or the whims of the marketplace, while in the Java camp key issues (JRE size and media support) are only now beginning to be addressed.
I so very much hope that in a decade's time I won't have to load a web browser whenever I want to run Photoshop! When we consider the bountiful array of possibilities that proper 'first class' RIAs could hold, shoveling everything through the clumsy medium of a web page must surely be considered failure?
Here endeth the rant... :)