There's a long and mostly good article about various RIA technologies over at eWeek. I say mostly good because the author, Jim Rapoza, gives a pretty unbiased view of a lot of technologies. It's a rundown that we (the entire space) needs more of and that I don't feel qualified to give (for obvious reasons). But the problem is that Jim limits the term RIA to primarily desktop technologies with the exception of Silverlight which is included in the desktop RIA roundup and Curl, where I can't tell if he's using the browser plugin for Curl or the desktop version.
Let's first bite off the question of what desktop applications constitute RIAs. In general, I'm pretty broad with this definition. I think things like Mozilla Prism, Adobe AIR, Curl Nitro, and Microsoft WPF are all examples of desktop RIAs. WPF is the hardest to place because it's the most "native" of those examples seeing as it's the next generation of Microsoft's .NET framework for building Windows applications. In general, I think RIAs as a whole should be:
- Using web technologies
- Have a focus on both performance/data as well as very usable, next generation user interfaces (the "Rich" part of RIA).
I also think that the best RIA platforms should have:
- A good designer/developer workflow story
- At a technical level business logic and user interface should be very cleanly separated so that the UI can easily be enhanced.
It's the last two that I think pushes WPF over the top.
Coding for the desktop in the browser
So with that definition of RIAs, we get a bunch of technologies. Some are RIAs on the desktop, like the ones included in the eWeek article. But the longer term, older, and some would say more future-compliant are the RIAs inside the browser. That's what Web 2.0 was built around and that's what continues to get a lot of attention. As a result it's VERY, VERY important to differentiate between browser RIAs and desktop RIAs and to compare apples to apples instead of apples to oranges (browser RIAs to desktop RIAs). This is where people seem to confuse Silverlight the most.
The eWeek article starts off like this with regards to Silverlight:
However, while Silverlight's browser and operating system support is impressive, as an RIA platform, its scope is much more modest. In tests, Silverlight proved to be a fairly basic and even old-school approach to building and using RIAs. In fact, Silverlight can't be considered a direct competitor to more advanced RIA platforms such as AIR. If anything, Silverlight is more of a direct competitor to Flash.
That's both semi-accurate and completely misses the point. Actually, it's kind of scary that the newest entrant into browser RIAs is being called a "basic, old-school approach to building and using RIAs". Are browser RIAs that boring? While I'm a huge advocate of desktop RIAs, I think the browser should still be getting a bunch of the attention. And in fact, the browser is still where most of the energy is and as a result a really good RIA platform will build on what they know in the browser and leverage that in their desktop clients.
Look at Adobe. We've got the Flash Player in the browser and you can use ActionScript as well as the Flex Framework to build browser RIAs. Then you can take that exact same knowledge/code and start building a desktop application on AIR. Look at Microsoft. You can build a C# and XAML application in Silverlight then take that code and start building a desktop application in WPF. Look at Java. You can write Java code along (soon) with JavaFX and run it in the browser or as a regular Java app. Seeing a pattern? Same thing with Curl. You can use the Curl language to build a Curl application in the browser and now with Nitro you can take that code and build a desktop application. Mozilla Prism is the most basic example because all you're basically doing is taking a browser application written in Ajax and turning it into a desktop application. The browser space is also where a lot of the Ajax frameworks exist and where companies like OpenLaszlo exist, so there's room for all of those to grow.
It's a big, big world and it's only getting bigger. And yeah, maybe it's a pain that RIAs have started to fragment a lot. But in the end, competition is good and each of these technologies within both the browser niche and the desktop niche have their own strengths and weaknesses. It's how those evolve that will be the most interesting and because of the close relationship between the browser RIAs and the desktop RIAs, we need to keep an eye on both.
So that's my take on the RIA space. What did I mess up? Talkback away.