I've been readinlg a lot of articles about "rich web applications" recently. (for example, here ). I can't help worrying that knee-jerk adoption of such things could greatly reduce the usability of the web, though.
I think it's fair to say that a great majority of computer users know how to use a web browser. It's certainly the most used piece of software on my computers, and those at the college where I work. Following on from that, it seems reasonable to assume that the conventions of the web browser user interface are the most familiar conventions in software usability. It's easy to spot the impact of web idioms on other software if you look - Microsoft added a "back button" to their desktop file management tools "Windows Explorer" and "My Computer", for example.
There are many other aspects of the web user experience that are less obvious, though. The little "throbber" in the corner of the window that shows when slow activity is taking place, a big button to stop things that you no longer want to continue or that are just taking too long. User control of whether to open a new window or reuse an existing one. The ability to resize windows to personal taste. The ability to save a whole page or any part of it to local storage for viewing offline later, print any page ... I'm sure you can think of more.
These are the kind of things that I miss when I use a "desktop" application these days. At least nine times out of ten I just want to read a Word document, so why does Microsoft Word always open it for edit? And what changes has it made, that it needs to ask me whether to save changes when I exit. Why do so many "desktop" applications lock up (with no "stop" button) if a resource such as a removable disk is unavailable? Why can't I just stretch a window to see more at once?
So, back to my worries. All around the web you can now find demonstrations of so-called "rich" web applications written using plug-ins such as Flash or Java, browser scripting such as JavaScript or DHTML, or browser extensions like XUL. What a great many of these seem to have in common is that they start from the assumption that they can ignore or disable all the things I find most usable about the web. Flash applications with no "back" or "undo". Applets that lock up if a resource is unavailable. JavaScript software that pops up sub windows without my control. Long operations with no indication of movement or ability to stop them. No control of window size, fonts, colours, or images. Forms you can't print. No way to copy text or save to disk, text that can't be found by search engines ...
I know I'm just one quiet voice in a storm, but if you are thinking of developing any kind of "rich" web application, please, please, embrace all the aspects of the web experience we all love so much rather than rejecting them for your own preferences and assumptions. Don't make your application an irritating, restricted and unfamiliar alternative to the web browser experience, make it a comfortable extension to the web browser experience. If you don't allow your customers the control they are used to on the web, you will alienate your users and risk being out-evolved by a more compatible product.
Say you need a full blown (Financial) Portfolio Management System. Such a complex system can be administered best from an application.
However if the firm want to display Portfolio performance and various reports to clients, then a web based deployment is more appropriate. In this case, there is more to display and less of interaction.
For the latter, a RiA is much better, imho, than your standard Model2 arch which ultimately boils down to HTML for display.
Given that client side PC's have a fair amount of processing power these days, the server (in the above scenario) simply acts as a data repository.
The rendering (and functions such as sorting of columns) is performed on the client side.
The problem is when the development teams gets too evangelistic and try to deploy the entire desktop application as a RiA. Here we get back that point as to why Java applets failed , in the first place.