Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/raedan/public_html/textpattern/lib/txplib_db.php on line 14
State of Flow: Web-Apps Considered Wasteful::journal

Web-Apps Considered Wasteful

Lance Walton - Sunday August 28, 2005

These days it seems, the default is for everything to be a web-app. Strong arguments have to be presented for building a ‘rich’ or ‘thick’ client, while those demanding the web-app also seem to be increasingly demanding a richer experience with it, always of course, in the context of shortening time scales. The result is an extraordinary stack of technologies combined with a wide range of patterns/idioms and adhoc solutions that come together to form a mediocre user experience and a boiler-plate rich codebase.

When I started my software development career in the early 1990’s, I built applications that ran on Windows, Unix and VAX/VMS machines. While writing these apps, the majority of my time was spent grappling with the core problem that the app was trying to solve – bond or fx trading, systems administration, care-home health provisioning, etc.

For the last six or seven years, I have been mainly building web-apps. While writing these apps, the increasing majority of my time is spent grappling with the problems of writing web-apps – presentation, client side validation, temporary state management, issues due to the request/response mode of interaction, etc. This is despite using many of the frameworks whose sole purpose is to ease web-app development. These include Struts, WebWork, Tapestry, Turbine and several others.

These days it seems, the default is for everything to be a web-app. Strong arguments have to be presented for building a ‘rich’ or ‘thick’ client, while those demanding the web-app also seem to be increasingly demanding a richer experience with it, always of course, in the context of shortening time scales. The result is an extraordinary stack of technologies combined with a wide range of patterns/idioms and adhoc solutions that come together to form a mediocre user experience and a boiler-plate rich codebase.

The problem is that web-apps are generally less able to provide the experience of a thick client with anything like the same development effort. In addition, web-apps significantly change the focus of the development effort from the essential, often minor, complexity of the problem domain to the accidental complexity of the web-app domain.

Although I have been aware of this for the past five years or so, I have not been able to compare writing a real application both as a web-app and as a thick client application. This changed recently when an application that I initially developed as a web-app was redeveloped as an Eclipse RCP application – an important point to note is that it is still a multi-user, client/server application.

I don’t believe that the choice of Eclipse RCP is the critical factor; Swing would almost certainly have been equally good from a development point of view and the use of JGoodies, for example, would have made the GUI quite spiffy. Also, the use of Java is probably not a significant factor, although I admit that I do not have experience of web-app frameworks in other languages e.g. Seaside for Smalltalk looks much better than anything available for Java. Ruby on Rails also looks interesting. In addition, I have no doubt that something beautiful could be built in a language such as Lisp, along the lines presented by Peter Siebel in Practical Common Lisp chapters 30 and 31. These frameworks may well improve web-app development productivity.

Even if there are better frameworks in other languages, the richness of the user experience is still going to be less in anything but the simplest of web-apps, when compared to thick clients.

The single biggest factor in the success of web-apps has to be that users somehow expect less of a web-app. If you doubt it, ask yourself whether your web-app would be acceptable to the users if it was re-implemented as a thick client without adding the usability features that would then be easily available. Users seem to know that web-apps are limited and accept this. They should not.

My experience indicates that it is significantly quicker and easier to achieve a considerably better result with a rich client. I also believe that the reasons for the initial success of web-apps (immediate and consistent deployability, security, privacy, etc) are no longer relevant.

If organisations want to improve the efficiency of their Java software production, they really should take a serious look at the possibilities afforded by thick clients, particularly with respect to technologies such as Eclipse and Java Web Start