Silverlight has copious documentation and very good tool support. Developers typically work on Silverlight applications using Visual Studio 2008 on Windows; designers typically work on the same project using Expression Blend 2, also on Windows. Both of these tools are very good for their target audiences, but not for their secondary audiences. That is, Visual Studio 2008 is great for coding and XAML text editing and can preview XAML pages, but can't do visual XAML page design; Expression Blend 2 is great for visual XAML page design but doesn't support coding. The future Visual Studio 2010 product, now in preview, will combine both sets of capabilities.
I am not especially impressed with the Silverlight 2 local data caching and isolated storage facilities, which are not safe from access by unmanaged code and lack an actual database. (For many occasionally connected applications, you want a local database not only to cache information read from the remote database, but also to store updates to be sent to the remote database when the connection is restored. It's easier, more efficient, more secure, and more reliable to do this with a local database than with a simple caching facility.)
On the other hand, I'm very enthusiastic about Silverlight 2 as an RIA. If I wanted to build a Silverlight Web application and needed a desktop version as well, I would lean toward separately compiling the application for WPF. I would expect to have more than 90 percent of the code shared between the two projects if planned properly.
The Silverlight plug-ins, Silverlight SDK, .Net Framework, and Visual Studio Express Editions are free; Visual Studio 2008 Standard Edition is $299 ($199 upgrade); Professional Edition is $799 ($549 upgrade). Subscriptions range from $1,199 for Visual Studio Professional with MSDN Professional up to $10,939 for Visual Studio Team System 2008 Team Suite with MSDN Premium. Expression Blend 2 is $499 ($99 upgrade).
The first question to ask when picking a desktop RIA is how the application will be used, both as a Web application and a desktop application. Then list the features you need. Are those features present in the RIAs you are considering? Are there ways to add missing features? Are you looking to enable fully or occasionally connected scenarios?
Once you've got your questions ready, you can figure out which RIA is best for your needs.
Would it be better if you had separate desktop and Web applications that shared a common code base? If so, consider a combination of WPF and Silverlight.
Will your application have CPU-bound portions? If so, consider Silverlight and Curl Nitro.
Does your application need to run locally without a browser? If so, consider AIR and Curl Nitro.
Do your developers already know WPF and the .Net Framework? If so, consider Silverlight. Do they already know Flash and Flex? If so, consider AIR.
Do you already have an AJAX Web application? If so, consider AIR and Gears.
Finally, ask yourself if you really need a desktop RIA at all. Sometimes building a second interface for an application is a relatively small effort, if most of the work is being done by a common back end or if most of the code is common to both versions of the application. In the larger picture, sometimes the advantages to users of having separate but optimized desktop and Web user interfaces may outweigh the costs and time involved.
Martin Heller is a software developer and consultant, as well as an InfoWorld contributing editor. He writes the Strategic Developer blog. Computerworld is an InfoWorld affiliate.