Is "Smart Client" a "Dumb Idea"?

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 :)

Published Thursday, November 03, 2005 9:10 AM by Rob Howard

Comments

# re: Is "Smart Client" a "Dumb Idea"?

Thursday, November 03, 2005 10:47 AM by Jay Miller
Amen! This is exactly what the company I work for has realized over the past couple months. We are now approaching each new project as a web application first and only falling back to a smart client application when we have to.

# Re: Is "Smart Client" a "Dumb Idea"?

Thursday, November 03, 2005 1:11 PM by Anonymous
Yes and no. As you point out it depends on the software application.

When AJAX controls mature in ASP.NET then things will be even better, but for now many complex applications just become too messy being web based for both the developer and the EUX.
Many users find web sites just as confusing as regular OS based applications. Fortunately many web transactions are simple.
There are also many business applications that have to cater for mobile workers and an "always on" connection is not always practical, efficient, or cheap.

Another 5 years though and we should get there.

# re: Is "Smart Client" a "Dumb Idea"?

Thursday, November 03, 2005 4:24 PM by Milan Negovan
> "if I bought my wife a Mac..."

That's a good idea! :) I did buy my wife an iBook and have been doing a lot less "tech support" at home since then.

# re: Is "Smart Client" a "Dumb Idea"?

Thursday, November 03, 2005 5:23 PM by Douglas Reilly
I mostly agree, though I wonder about the emergence of Ajax in the world of Pocket PC Devices and similar smaller devices.

# re: Is "Smart Client" a "Dumb Idea"?

Thursday, November 03, 2005 5:53 PM by Serge van den Oever [Macaw]
Because I don't really believe is XAML getting to the desktop very soon (or Microsoft should package it in a critical service pack for XP), I'm currently looking in other possibilities to build richer internet applications. Ofcourse everyone is looking at Ajax technology, and you can do really cool things with it. There are already some powerful Ajax platforms like Backbase and Ajax.Net, and ofcourse everyone in the MS world is looking forward to Atlas. Another movement is the support of Ajax technoloy in the well known web component sets. Telligent itself is partnering with ComponentArt Web.UI which is using Ajax technology in their 3.0 version.
The problem I have with Ajax and the component sets: you are so dependend on the capabilities and quirks of all the browser implementations.

Another approach is the usage of Flash. Flash runs on most platforms and hosts in most browsers. There is one codebase, so it hopefully runs the same on all platforms. Another good thing is that Flash is selfupdating since version 7. You can almost be sure people have the latest version. There are currently some interesting developments goin on with Flash 8.5 and the Flex 2.0 platform. You can now build Flash Rich Client Applications the "developer" way. Have a look at my weblog and at http://labs.macromedia.com. Flash development using the Eclipse development environment in a language comparable to XAML.

I'm really interested in how people are looking at the Flash platform for building Rich Internet Applications. Is it mature enough? Is working offline feasible?

# re: Is "Smart Client" a "Dumb Idea"?

Friday, November 04, 2005 3:10 AM by Dennis van der Stelt
@Rob : So many times I see applications that are just data-entry applications. When those are web based, the developer can create just anything he/she likes, without taking notice of any standards, like tabbing through textfields and such.

I go for client (or Windows) applications when
- you need to enter a lot of data
- you need a close-by and fast connection to something like Office
- you need really fast response types, for example when you have a lot of tab-pages.
- I need the power of the client

I can probably think of more, but it's still pretty early here, and at the end of the week :)

I go for webbased applications when
- You can't have everyone install this application
- It's out in the open to everyone. That's what internet is for
- You want to present your site/application in a special way.

That last bullit will hopefully be gone when WPF/XAML comes in and people will learn how to build nicer apps then the current gray square with close button in upper-right corner :)

Currently my customer wants an application that supports a lot of data entry. A result of the data entry can at many times be a lot of data in Excel. The data entry is done by clients of my client.
I think this is excellent for a smart client and VSTO to Excel. Web based would make the data entry and the Excel connection a lot harder. Not that much to me, but for the client and her customers themselves.

# re: Is "Smart Client" a "Dumb Idea"?

Saturday, November 05, 2005 11:11 AM by Erik Porter
Nice post for sure! I'd day I'm in 90% agreement. It definitely depends on what you're trying to accomplish. It will be interesting to see how Atlas turns out. If done right I think we'll continue to see increases in web applications over smart clients (there's already quite a large gap). That said, I think all of this stuff follows the chaos theory. Up and down and up and down. I think this will be the case with web applications vs. smart clients for many years to come. ;)

# re: Is "Smart Client" a "Dumb Idea"?

Tuesday, November 08, 2005 8:00 AM by Mark Bower
Dennis gets it. Here are some places where I think smart client works better today:
- Branch network scenarios where there is typically a very slow shared connection to central hub. Think retailing, bank branches etc.
- When you need to access local devices: smart card/swipe card readers, signature pads, touch screens, or other specialist devices.
- When you need to integrate with client-side software (e.g Office)
- When you need users to be able to continue working in the case that the network in not available. E.g. emergency services, some healthcare apps
- As Dennis says, when the app needs to be very responsive to data entry and validation, or when you need sophisticated data visualization, sorting, filtering.

# re: Is "Smart Client" a "Dumb Idea"?

Tuesday, November 08, 2005 4:36 PM by Jeff Gilbert
I completely disagree. Web technologies are inherently broken, as they are built on broken technologies. Why must we continue to patch HTML with greater and greater levels of abstraction, when fundamentally we have to accept that what we're building on was never meant to be used in it's current form?

HTML needs to die. Let's start to use languages, concepts, and frameworks built for the purpose we're actually using them for. Web applications as they stand today are a poor stand-in for what an application can be; no matter how useful they may be, they could have been built better, faster, and easier with tools created explicitly for their creation.

XAML/WPF, or some other similar device is the most viable option to move us into the 21st century. We can build rich, stateful applications without having to trip over browser idiosyncracies, alternate scripting languages on the client, and viewstate hacks. Let's not affirm web technologies simply because they represent an easier deployment story; for what we gain in deployment we lose in the opportunity cost of innovation and client experience. Let's work to resolve the problems inherent with rich clients and use a paradigm that was truly built for what we need.

# re: Is "Smart Client" a "Dumb Idea"?

Saturday, November 12, 2005 1:31 AM by Techie
I am not sure if I agree with using web based apps for everything. I have heard this deployment free excuse over & over again, but really with technologies like auto update, click once etc. are these things really that big of a problem.

If you have used Outlook, MS Office, iTunes.etc., you would agree that thick/smart client apps bring a lot to the table in terms of user experience. While Ajax & RIA will certainly make web apps an appealing option, I really see value in targeting browser apps for the internet visitor & intranet users. If you are in the app env for more than a few hours a day at work, you want a regular thick/smart client app..

Just my 2c.

Thanks!!

# re: Is "Smart Client" a "Dumb Idea"?

Tuesday, September 05, 2006 3:10 PM by Sahil Malik

Very good insight Robert. The only point I disagree with is "Web applications are easier to write".

Debugging Javascript is like being bitten by a thousand mosquitoes in a dark room without air conditioning in the summers of New Delhi.

Debugging C# is like being half buried in sand on a beach in hawaii with a tall mai tai with a straw pointed to my lips.

# re: Is "Smart Client" a "Dumb Idea"?

Tuesday, January 09, 2007 11:58 AM by Pedro Pérez

Even if I understand the principles of web-based applications, I'm not a big fan of them, mostly because I don't like depending on "third-party" software.

Doing web-based applications can simplify the deployement, but each browser update is a risk that has to be taken. Is my app IE7 "friendly"? or Firefox? What about access from a PDA?

I also agree with Malik, some web apps are difficult to write, you have to control postbacks and back buttons (As a back can rethrow an insert!), and customers always ask for the control over the browser closing (if you know how, please let me know it)...

I like a lot XAML because it can "overlap" the two worlds, and make the code more flexible, but we will see the adoption of this technology.