Microsoft's rich client counterattack

As fellow ZDNet blogger Ryan Stewart notes, web applications aren't likely to supplant rich client applications anytime soon. In fact, with the rollout of Vista, web applications may face a rich client counterattack in the form of a revamped desktop application development model packaged as .NET 3.0.

Fellow ZDNet blogger Ryan Stewart wrote a recent piece that noted Google's non-search ventures haven't met with the same level of success as their flagship search product. He goes on to hypothesize that the problem is that full blown web applications aren't going to be able to pull consumers away from desktop applications.

I am unconvinced that the average user will embrace web applications delivered in a browser. Web 2.0 is a great thing, but despite the buzz surrounding many of these applications, a wider, less tech-savvy user base hasn't materialized. If Google wants to deliver applications to main stream users, they need to adopt a Rich Internet Application strategy. They need to use their talent and their web knowledge to build applications that bridge the gap between web and desktop. People want experience, and they want to access information wherever they are, regardless of an internet connection.

George Ou has made similar arguments, asking why anyone would use the Outlook Web Access client when they could hook up Outlook to use HTTP over RPC and use the full-fledged desktop client. That's certainly my experience, as I only use the Outlook Web Access version when I'm stuck using a fee-based Internet terminal at the airport or at a hotel PC.

The problem, I think, is that we've taken web technology way past "good enough" web interfaces which are sufficient for basic application functionality in areas not currently served by standalone desktop applications. The "big boom" in web applications within enterprises, based on my experience, was mostly driven by a desire to build simple applications where it wouldn't be cost efficient or sensible to make a full-blown desktop application (or where the application was clearly web-centric, such as Search). Today, however, we are now trying to turn web technologies into a complete replacement for desktop applications. Unfortunately, web technologies, in my opinion, aren't suited to the task, and I say that as someone who has been involved in some capacity in web development since 1996, and was known as someone who did crazy things with Javascript.

It's not so much that you can't do some crazy things with HTML, CSS and Javascript. The problem is that doing so is a royal pain in the ass. There has to be a better way than trying to clone the functionality of desktop applications using web technologies that clearly weren't designed to be used in that fashion.

Web development was always sold as "good enough." Google Search got ahead not because it pushed the web interface envelope, but because of an elegant and simple user interface that did a suprisingly good job of finding the results people cared about (in fact, "simple" is a lesson I think Microsoft could most learn from Google). A "good enough" user interface is more than enough for something like search, where all you really need is a text box into which to enter search terms and a "Search" button.

Once you leave this safe zone, however, things start to fall apart. Take a gander at all the Javascript required to make a really functional AJAX application. It's ugly, and worse, it's a bunch of untyped procedural code. Okay, you can "sort of" make objects using functions that set properties using "this" references, but they aren't typesafe, and given that the object "definition" is fluid even after construction (if you accidentally add an extra letter to your reference to a custom Title property, e.g. obj.Tittle, the runtime script compiler won't tell you that you've made a mistake), hardly qualifies as a class definition.

What web development gives you, however, is instantaneous updates (you always access the latest code by connecting to a server to retrieve HTML, CSS and Javascript) and greatly streamlined graphic-intensive UI development using easy-to-code text-based markup languages. No, it isn't as maintainable as true type-safe, object-oriented applications, but it is easier and faster to develop (provided you stay in the "good enough" domain), and that matters.

In other words, web applications have advantages. Those advantages, however, start to get outweighed by the costs as you move into the web version of a "fat client."

This is an increasing problem, now that "good enough" simply isn't "good enough" anymore. People now expect highly-interactive client side applications. Unfortunately, web applications only have a limited ability to offer that. This means desktop rich clients will (almost) always be preferred, when available, though web clients with really hairy AJAX programming may give them a run for their money.

Of course, the hairy AJAX model only stands so long as desktop development doesn't pose an adequate response by finding a way to improve desktop application development to offer some of the advantages of web development. As it turns out (and as I've argued before), I think that is EXACTLY what Microsoft has tried to do with its .NET 3.0 Framework (which encompasses the Windows Presentation Framework (WPF, formerly code-named "Avalon") and the Windows Communication Foundation (WCF, formerly code-named "Indigo")). XAML, which is some ways is akin to developing an HTML page, maps to a type-safe and clean object framework, and WCF will be 100 times easier to use than anything you can manage with Javascript and XML. 

It seems to me that Microsoft has spent a lot of time rethinking rich clients, and developed a framework that will appeal to a lot of developers. It certainly appealed to me long before I became a Microsoft employee (I attended the 2003 PDC while an employee at the WHO in Geneva, Switzerland).

Whether Microsoft's web-inspired desktop development framework (one that moves beyond the web into easy-to-code vector graphics, 3D effects, and timeline animations) is going to attract developers remains to be seen. We won't have to wait long to find out, however. Vista will be here Real Soon Now (a January consumer release is actually starting to seem plausible according to Mary Jo Foley, back from the "Directions on Microsoft" hinterlands), and around that time we'll have the RTM release of .NET Framework 3.0 to enable support for WPF/WCF technologies on Windows XP. If people start to write a bunch of web-aware Rich Client applications that beat the pants off web applications, we'll know if Microsoft's rich client technologies has any effect on the web / desktop application balance of power.

Such a rich client framework would cause ideological consternation for Google given that it is tied to Windows. Others, however, won't be so ideologically constrained, and if others start offering these types of web-aware rich client applications in credible numbers (and if they prove popular), it's may become hard for a public company to stick to its guns.

Yahoo would love to push back against Google. Would web-aware rich clients be the way to do it?