Back in April I did an interview with The Server Side where I made this statement in an interview:
“… the level of growth and the adoption [of ASP.NET] and the smart client market, or the smart client adoption in the community its definitely very different. So I think that there is actually a tremendous amount of opportunity [for Smart Clients], I think if Microsoft matures its technology, things like XAML and some of the new things that are coming out, I think there is going to be more and more opportunity for the smart client developers to do some very powerful things, because there is a lot of flexibility that exists on the client machines aren’t being taken advantage of. People are buying these high-end, dual-processor one gig RAM machines and then using a web browses to run their application. When you look at that capability you think, gosh, how can I use that? How can I use that to make my experience for the end user that much better and so you’re absolutely going to see more smart client applications”
I’ve been thinking about that statement a lot lately. At the time I made it the statement of “smart or rich” clients made a lot of sense, but the more I’ve thought about it – and then read about some of the new “web enabled” offerings coming out of Microsoft like live.com – and being part of a company building an ISV business around Community Server I’ve had a change of heart.
Why? Building web applications and more importantly supporting web applications is easier and costs less. It also comes from talking with and interacting with my non-tech savy friends: installing software is misery; most OS specific software is not consistent, i.e. the user interface is always different, and it’s so incredibly challenging to support and upgrade. Watching someone like my wife use a computer makes me realize that she, as a pretty typical user, does about 95% of her computer usage through the browser: hotmail, amazon.com, ebay.com, wellsfargo.com, quicken.com, etc. The other 5% is spent in Word, but even those uses (printing cards, printing labels, etc.) could be easily replaced by a web interface. Case in point, if I bought my wife a Mac as long as it has a web browser she would be absolutely content.
Are there applications that should not be web applications? You bet:
1. Web browser – it’s frustrating that Microsoft takes SOOOO long to ship software. And more frustrating that it took them this long to update Internet Explorer. There is still so much that needs to be done. Especially now that more and more people think of the web browser as the “host” for their software. But, web browsers (FireFox included) aren’t quite there yet. Hopefully now that MSFT is back building web browsers we’ll see some progress again (competition is good).
2. Office tools – Microsoft Office. Buy it, install it, use it, you won’t find anything better. Enough said.
3. Developer tools – Tools for writing software. More specifically great tools like ASP.NET and Visual Studio 2005 for writing web applications.
4. Games – I just can’t imagine CounterStrike running in the browser yet 🙂
Sure, there are lots of other little applications such as calculator, messenger, etc. that belong as desktop applications. Google gets this and I think pockets within Microsoft get this too. But remember, the fuel for Microsoft is license sales of Windows and Office. Anything that threatens that is taboo. And the problem is that the OS and Office tools are close to reaching the “yeah, so what” point. That’s: “yeah, so what, there is another verison of [Office/Windows] available, why do I need it?”
Don’t get me wrong. I’m looking forward to Vista and Office 12, but I’m also a big computer dork who thinks this new stuff is “cool”. The actual end user benefits are incremental and definitely not the gigantic leap forward in stability or usability that were seen in the mid-90s. I’m going to have to pull teeth to get my non-techy friends or my wife to install a new OS or new version of Office — put simply: they just don’t care, it all works already.
A big selling point for “smart clients” is also the “what if I’m offline” problem. The only offline application I care about is email and that problem has already been solved in Outlook. Furthermore, the times I’m actually offline are few and far between and typically at times where being online, such as driving home, isn’t exactly a good idea. Practically any urban center has some sort of wireless connection these days. Offline isn’t really that big of a problem and is becoming less of a problem daily.
Which brings me around to my point. Why should you care about writing smart clients. You probably shouldn’t. If you can write it as web application do it. It’s easier to support, faster to author, easier to distribute, and everyone can run it without installing anything. For example, we update software that our customers use weekly (yes weekly). Every Thursday we update www.communityserver.org to the newest version of our software. We don’t have to install anything on our customers machines and most importantly we can do this as often as we want.
Are there cases where you and I as developers will still author “smart client” applications? Absolutely, but only when it can’t be a web application first 🙂