2007-06-25

Web 3.0 : the best of both worlds

With all the noise around Google Apps, some would argue that online, DHTML-based applications are poised to replace traditional desktop applications ("rich clients"). Well, I don't agree.

The web (i.e. the Internet + a web browser) is a fantastic tool to navigate through information, no doubt about that. But it was never meant to be a platform or operating system to run full blown applications.



The requirements of Internet-based applications
My belief is that, in order to be actually useable, Internet-based applications must meet the following requirements:

  1. Automatic deployment over the Internet. The application can run entirely on the server, be cached transparently on the client, or be installed automatically on the client with a confirmation dialog box (Java applets, ActiveX controls)
  2. Communication with the Internet. The application must be able to communication with servers or services over the Internet, to access or store information as well as access computing resources if required.
  3. Robust user interface, preferably compatible with that of the client platform
  4. Offline support. The application must run while disconnected from the Internet.
  5. Efficiency. The user experience must not be degraded by the inherent slowness of the Internet, nor by an over-simplification of the user interface sometimes imposed by web technologies.
  6. Integration with the client platform. Applications must be able to access the local file system, printers and other devices, and intergrate seemlessly with the client OS (indexing, window management, drag&drop,...)
  7. Robustness and security. Unfortunately, most current technologies employed to develop RIAs are not designed for robustness (JavaScript, DOM) nor security (AJAX, REST).

The limitations of the browser

Here's a (partial) list of the limitations of the browser as an application platform:
  • HTML is a relatively poor presentation framework. Sure, it can do text, tables and bitmaps. But it cannot do simple things such as rounded table corners. Not to mention shadows, translucency, or 3D effects...

  • HTML itself is meant for static pages. DHTML adds some level of dynamicity, as evidenced by the myriad of DHTML- or even AJAX-based web sites. But the programming model is not even fully standardized, and the primary programming language, JavaScript, is antiquated (it's not even object-oriented).

  • The business and navigation logic must be implemented on the server side. This would actually be a good idea if: (1) you never needed more than one open window (2) there was no "back" button in web browsers! Sure, you can work around both, but to the detriment of useablility in some cases. This is due to the web's disconnected, request-based approach.

  • Within the browser, you have no access to the rest of the computer (such as the file system). While this looks like a good idea to protect your system from viruses and the like, it's actually a major limitation of you want to store information on your computer (such as in your "My documents" folder) or interact with other, non-web-based applications or the OS itself.

  • Naturally, if you're not actually connected to the Internet, your web application is not accessible (remember that laptop sales outnumber desktop sales...)

  • Finally, the web is inheritently slow - especially request round-trips because of network latency. So displaying any new information, or responding to the simplest of actions, can take up to several seconds. Of course, you can take Google's approach and multiply the number of servers and distribute them all over the world (so that they're closest to the user), but not everbody has Google's deep pockets!


Attempts to solve these issues

Many of these limitations have already been identified, and a few players are trying to address them in what they call "Rich Internet Application" frameworks:

  • Adobe with AIR (Adobe Integrated Runtime), which relies on Flash for rendering and UI, Flex for client/server communication, and ECMAScript for programming
  • Microsoft with Silverlight, which includes a subset of Windows Presentation Foundation for rendering and UI, an API for client/server (and local) communication, and the .NET Common Language Runtime for programming.
  • Sun with JavaFX

Google is taking a different approach with Google Gears, which tries to solve some of the issues listed above for DHTML/AJAX web applications. Right now, it includes:

  • a local database
  • a JavaScript API to communicate with a server (in an AJAX way)
  • a database synchronization API
Its primary goal is to enable offline use of web-based applications. It does not try to resolve the other issues, such as the limitations of HTML, DOM or the JavaScript language.

And the winner is...

It's clearly too early to tell which of these technologies (or new approaches yet to come) will dominate the market for internet-based application platforms.
But what is almost certain is that we will see a lot of internet-based applications released by a lot of different vendors long before the platform war settles down.

0 comments: