I posted an article about three months ago called “Google Suggest and GMail are a step backwards,” (you can read it here) and many people read the article and thought that I meant something that I didn’t.

I’ve had time to think about the issue some more, and I’ve talked to people about it, and I think I can make my opinion clearer this time.

This entry is more technically oriented than my last entry, and you can probably read it more easily if you’re familiar with programming and software development.

Part 1: A brief evaluation of web applications

I acknowledge that web applications are popular. Most of my friends use webmail for all their email. They do it because it’s easy, and they can check it from anywhere, and it provides most of the features that they want in an e-mail client. Currently, webmail (and other web applications) is useful to lots of people.

I think web applications have become popular for a single reason: web applications can be used immediately from almost any computer. Additionally, users like web applications because:

The first three reasons are issues of what software developers call deployment. Deployment is the process of getting a program onto a user’s computer so he or she can use it. The last reason is an issue of security.

So, people mainly use web applications because they are quick to open, safe, easy enough to use, and they work anywhere. They have problems, but not enough to prevent them from being used as commonly as they are.

Part 2: Using web applications sucks

As I described in my original article about GMail, web applications are usually less useful than desktop applications:

We all see web applications with these problems, and we accept them. It’s hard to make web applications that don’t have these problems. I think most people with experience in desktop and web development would agree that these issues are easier to avoid in desktop applications.

I think many people would say that GMail is a “good webmail program.” As I discussed in my original article, GMail lacks many features that Mozilla Thunderbird has, for example. There are people who say Thunderbird is not a good mail program. From this we can conclude that people generally have a lower standard for a “good webmail application.” I think that most people have a lower standard for web applications in general, as well.

Part 3: Developing web applications sucks

It doesn’t matter what framework or language you use - developing good web applications is hard, even considering that a “good web application” means less than “good application.” HTTP and JavaScript and HTML and web forms have been patched together over the years to allow richer web applications, but it’s still much harder to add a sortable table of data, or a dynamically updating search, to your webapp, when compared to a desktop application.

HTTP is a stateless protocol. People get around this using HTTP sessions and cookies, but the resulting behavior is not very cool (broken Back buttons, meaningless URL’s, etc.). Handling individual requests and responses does not map well to the idea of a coherent “application,” and using such a system as the basis for complex applications is unnatural.

JavaScript is a terrible platform for writing client-side webapp code. I think most people agree with this. Browser incompatibilities, lack of a useful standard library, and performance cost developers lots of time and prevent the development of useful features. Additionally a great deal of logic needs to be written twice - once in Java or PHP or ASP, and once in JavaScript, to provide a better experience for the user. This can literally double development time.

Finally, the limitations provided by HTML and CSS prevent useful user interfaces from being developed without a great deal of work. Desktop development frameworks have built-in support for complex, useful ways of displaying data, such as interactive tables, trees, graphs, and so on. While it’s possible to do these in JavaScript using the HTML DOM, it’s much harder.

Part 4: Desktop applications already work

The main point of my original article was that Mozilla Thunderbird already has all of GMail’s main features for sorting and reading mail, and that IE already has a dropdown box like Google Suggest. My point wasn’t that we should be using Thunderbird instead of GMail.

A huge amount of time has been spent refining desktop development. The applications we use like Thunderbird, OpenOffice, AOL Instant Messenger, weren’t written in a few months; they are the result of many, many years of desktop application development, both conceptual and physical. I think most people agree that modern mail programs are easier to use and more powerful than older mail programs like Pine.

As we move to web application development instead of desktop application development, we are losing a great deal of this progress that has been made. Features that are already present in desktop programs are being re-implemented only for the sake of making a web application.

Part 5: We could have it all

Desktop applications are easier to develop and to use. Web applications are safer and easier to deploy and open.

To make desktop applications as fast and easy to deploy as web applications, we would need to radically change the deployment methods we have now (such as installers). To make desktop applications as safe as web applications, we would need to develop them in a secure language, such as Java, C#, or Tcl.

To make web applications as easy to develop and to use as desktop applications, we need to completely re-implement features which are already present and mature in desktop applications. And, this implementation must work across browser compatibilities, and must be based on HTTP, HTML, and JavaScript, which were not designed for such applications.

I made a table to demonstrate:

We need…
To use desktop applications To use web applications
Drastically improve deployment methods and use safe languages Completely re-implement the standard libraries available in desktop frameworks, on top of standards whose design conflicts with such features

Part 6: Conclusion

I don’t think we should abandon the web, and I think being able to check your e-mail anywhere is great. However, I think we can develop a method of making richer, better applications while still keeping the benefits of traditional desktop applications. I don’t think the Web is this method.