I would like to hear other people's advice on when one should build a web application versus building a thick client.
Over the last few years, I have participated in several discussions about whether an application should be built (or an old application upgraded) with a web browser interface. Usually these were internal systems used within an organization, not mass-market shrink-wrap products, and they were not actually on the public Internet. I do not want to limit the discussion to these types of applications solely though.
There are obvious cases where an application should be one or the other (e.g. no web based video editing software). On the other hand, Javascript libraries are making more rich experiences in the browser less difficult to implement everyday.
Have Javascript libraries and advanced server side technologies made things such as right-click context menus, drag and drop, etc. doable on the client side without a large effort? At what point does the extra complexity of writing for the web override the benefits such as ease of deployment and cross-platform compatibility, particularly if you are not trying to create the next Stack Overflow, but instead just building an internal application?
Does the fact that an internal application has a limited and captive audience more or less override any concerns over improved usability that a thick client can provide?
I go Web app when I don't want to:
- be supporting a thousand environments each with their own quirks. Specifically, viruses, trojans, software interfering, and making it work the same everywhere.
- worry about applying upgrades and taking lots of calls
- dealing with clients who lose their data
I pick a thick client when the computation is intensive per transaction, or there is significant data transfer per transaction.
I like fixing everyone's problems with one upgrade. It might not be for everyone, but it's where the quality of my life and those I work for goes up. Making a web app work on a few different browsers may be easier than a ton of different operating systems in different conditions.
With the advent of Flex/Air you can provide an entire application experience in the browser. The browser is becoming the universal interface, whether it's installed locally or in the cloud.
Web apps have their cons too. I just am more motivated to build web apps as the pro's seem to outweigh the cons for the projects I am choosing.