Rich Clients and Web Clients:

Rich Clients and Web Clients: Adam Bosworth has an interesting continuing discussion on the trade-offs between Rich clients ('fat clients') and Web clients. I worked for several years on a product (eRoom) which had a fairly slick user interface built on top of DHTML. It has made me very familiar with some of the key questions.

The key characteristics of a good web client:

It doesn't require any software to be downloaded or installed. This has many advantages: the same application will work on many different platforms; instant gratification for the user; and some shortening of the learning curve. But probably most important if you intend to sell your client to large companies, is they have a (reasonable) aversion to allowing end users to install software on their individual workstations and laptop. It is famously hard to install a complex piece of software on a Windows computer (I know less about what it's like on Mac and Unix but I bet it's no easier) and so it is very easy for people to screw up their computer when installing software.

It uses URLs and the basic navigation metaphor to advantage. For example, you can save a URL of the page you are on on your favorites, or email it someone and it will take them directly there; the back and forward functions of the browser do the right thing, etc. Not only does this make the client a well behaved web app but these are really powerful parts of the web metaphor which make it a better user experience.

So my philosophy is that:

if you are building an app that has both a client and a server, that your default choice should be to build the user interface in a browser unless you have very very strong reasons to go the other way:

If you aren't building the server also then you have no choice but to build a fat client.

If you need to control certain aspects of the client's computer then again you have no choice.

If you require certain specialized user interface capabilities, you may not have a choice - but people really underestimate what they can do with DHTML