I've been thinking about what roles the web and the desktop play in the realm of Rich Internet Applications. I see a couple of big reasons RIAs have become much more popular in the past few months. One is that a good experience has become a primary requirement for the web. I don't really count Ajax as a full RIA technology, but it has raised the expectation level and made people start to wonder how much better the web can be. Designers and developers are working together to create better applications. The other reason is that the technologies are finally available to create very compelling, rich , interactive applications. Flex 2 has opened up the Flash platform to a more developer-centric population and Flash itself has come a long way towards enhancing the web experience. Video is the norm now and sites are taking it a step further by making it a seamless part of the application. In addition, Microsoft has released WPF which allows developers to build Windows applications that look great and WPF/E will bring a subset of that to the web.
The future of software is a convergence of the web/desktop model. We should be able to pull together the benefits of the web and the benefits of the desktop and blend them into rich, interactive applications. Increasingly the "next generation" Rich Internet Applications seem to be moving to the desktop. I talk a lot about breaking out of the browser and there are two ways to do that; by deploying a desktop application and using plug-ins to extend the functionality of the browser. Both have a place in the RIA spectrum and because the two are complimentary, we should see a dual pronged strategy in which applications have a web version and a desktop version for extended functionality. The reason this is possible is because with the two big desktop technologies, WPF and Apollo, assets and code can easily be transferred to create a web version. In the case of Apollo, it is extremely easy to create a web application. Adobe has a better story than Microsoft here with Flex 2 being the backbone of Apollo means that you can reuse big chunks of code in your web and desktop versions making development and maintenance easy for both. Transferring from WPF/E to WPF or visa versa doesn't seem to be that easy.
Web applications are popular for a reason. The browse-to model makes it easy to update code and ensure that everyone has the most recent version. It espouses the Software as a Service model and makes implementation easy. That's very, very important and will never go away. But the browser can only take an application so far. By working inside the browser but using plug-ins that extend the functionality, developers and designers can create great experiences and enjoy all of the benefits of web deployment. They aren't restricted to the largely page based model of the web browser.
At the same time, desktop applications remain important and needs often require a more robust deployment model. But why shouldn't our web applications and our desktop applications be similar? One of the great things about Apollo is that it opens up cross-platform desktop development using web technologies. The future of software is a convergence of the web/desktop model. We should be able to pull together the benefits of the web and the benefits of the desktop and blend them into rich, interactive applications. We are starting to see that, and desktop RIAs play a huge role.
RIAs have really revolutionized the web and made it a more fun and interactive place. Now we have a chance to jump start desktop development and bring all of the lessons we learned from the web to this new arena. All of the design, ubiquity, open formats and standards can become part of the desktop development model. With desktop RIAs we can open the desktop to better experiences and designers that can take full advantage of it in a way that wasn't possible before. This could be a golden age in software development and RIAs will play a big part.