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