“Rich” desktop clients vs “Thin” web clients

The debate has been raging for some time now: what’s better AJAX applications or network aware desktop clients? Both camps have some good reasons but in general I fall in the web application AJAX camp. Many times when I read write ups on the pros and cons of each philosophy I walk away feeling the author has made some reasonable points. But, every now and again I come across an article that makes outrageous claims with a fairly weak argument.
Recently I came across the following article when looking into bug tracking software: http://www.prtracker.com/support/misc/BrowserBasedApplications.html. It claims that there are “Serious Problems with Browser-Based Applications.” The juxt of the article revolves around browser incompatibilities and client-side caching. Basically the authors argue that the cost of maintaining a web application will soar as the developers must support a growing number of incompatibilities between browsers and on top of all that communication over the internet is simply too slow to support robust and responsive applications.
So are these fair claims? In one hand they are reasonable complaints to make. Browser incompatibilities are notoriously annoying and can cause many hours of frustration and premature balding. But to say that this prevents browser based applications from being as efficient as desktop applications is a bit if a lie because desktop apps suffer from the same problems, just in a slightly larger context as they must ensure that they work across all different operating systems the application needs to be run on. This can be just as painful a task as maintaining compatibility between different browsers. Have you ever tried reading from a serial port in windows and linux? Trust me, it’s not a fun thing to try and maintain. At least on this allegation I think we have to say that both desktop applications and browser based apps suffer from similar maladies. Although it’s probably true that we have to consider cross-browser functionality more closely than cross-os as most of the population uses windows we can achieve a reasonable application by simply ignoring Linux, OS X, and other OS users. There is not such an overwhelming monoploy in the browser market so we are forced to struggle with the incompatibilities that exist between them. Some of these pains can be alleviated by using cross-browser ajax libraries to accomplish much of the functionality our applications provide. This puts the responsibility of maintenance across browsers on the library designers and allows the application writers to do what they do best. It’s a similar approach to how a desktop application may choose to use QT or GTK as it’s standard graphics toolkit instead of the native windows MFC widgets.
This brings us to the second charge that because there is a lack of persistent caching desktop network applications are superior to browser based apps. To begin with this is just flat out wrong. Many solutions have emerged that allow developers to persistently store data on the client side easily and efficiently (dojo.storage comes to mind as one). But it is true that many browser based applications do not take advantage of these facilities like they should.
To be sure browser based applications have a long way to go. Cross browser libraries are still in their infancy and we could do a much better job of making the power of the computer visible to the developer. However, there are also many inherent advantages to browser apps: if you take advantage of web standards you can concievably have your application work on all major operating systems out of the box, browsers are extremely mature presentation devices as a result many good programming practices are possible and there is a large pool of talent available for design, you can access the application from any computer with the internet available (this is great for travellers), and this is just a few of the benefits web apps bring to the table. Both desktop apps and browser apps have benefits and trade-offs but to claim that a browser based app is just flat out wrong for bug tracking is naive. There are lots of very good bug tracking packages that are solely web-based because it is simple for anyone to submit a bug if all they have to do is go to a webpage.