Apollo framework, which Richard covered back in March and I wrote about during ETech. Richard also wrote an explanatory post on Apollo. Next was Microsoft's announcement of Silverlight during Mix 2007. Mozilla has plans to implement offline mode in the next version of Firefox and this week Google jumped into the game with their offline framework called Gears.This year there has been an explosion in Rich Internet Application (RIA) frameworks. The first major player to announce one was Adobe and its
Why this storm of RIA and offline functionality? As long as broadband, WiFi and mobile are all on the rise, why are we even talking about Desktop applications? Surely there must be good reasons and use cases for these frameworks. In this post we take a closer look at the intended use and marketing behind these RIA frameworks.
What is RIA?
To understand these frameworks and the use cases, we need basic definitions. We start with the definition of RIA from Wikipedia:
"Rich Internet applications (RIA) are Web applications that have the features and functionality of traditional desktop applications. RIAs typically transfer the processing necessary for the user interface to the Web client but keep the bulk of the data (i.e., maintaining the state of the program, the data etc) back on the application server.
- run in a Web browser, or do not require software installation
- run locally in a secure environment called a sandbox
- can be "occasionally connected" wandering in and out of hot-spots or from office to office."
The takeaway is that RIA is defined as a mix of three things: desktop-like UI online, offline apps that look like online apps, and online applications that can go offline. Together, these things are a bit confusing. But perhaps if we just said: a browser app with a rich user interface that has offline mode, then things would be simpler. So, to belabor the point, an RIA is a browser app - but it works like a desktop app (e.g. a rich email browser app that works like Outlook).
What is Apollo?
Adobe defines Apollo like this:
Adobe emphasizes that their solution as a runtime. The company is marketing it as an RIA framework because it hits all three aspects of the RIA definition. The runtime takes care of the desktop and offline mode, while existing Flash plugins support the same function in the browser. But the company does emphasize the importance of downloading the runtime, which is separate from the browser.
What is Silverlight?
Microsoft defines Silverlight like this:
Silverlight is a cross-browser, cross-platform plug-in for delivering the next generation of Microsoft .NET-based media experiences and rich interactive applications for the Web.
Unlike Apollo, Silverlight is just a browser add-on and is not a separate runtime environment. Instead, it packages a .NET interpreter right inside the browser, making all .Net languages available to developers. And it achieves the same RIA goals - creating rich experiences in the browser while supporting an offline mode.
What is Google Gears?
Google defines Gears like this:
Google's solution focuses primarily on offline mode. From that point of view, it is not really an RIA framework - instead it's an offline mode extension to the browser. It is not standalone, so like Silverlight it just enhances the browser capabilities.
So what are the use cases?
No doubt that these are all impressive frameworks, but what do we need them for? The companies have not gone to the trouble of doing all this just to satisfy the R in RIA. More likely, the primary target is support of applications in offline mode. A classic example is accessing email on a plane. For example, the fact that GMail is not available offline precludes corporations from dumping Outlook in favor of Gmail. Other examples where online apps could make use of offline functionality include project management applications, like Basecamp, and calendaring.
So being able to access some web apps in offline mode is useful. But is it also useful to build desktop applications that look and act like online ones? The answer to this question is far less clear. Why would we do this? the reason must be to leverage desktop functions such as access to local storage and the network. But this is also possible with Silverlight and Gears, right from the browser. So the use case of a full desktop application that looks like an online one, but does not run inside the browser, does not seem to be compelling.
Are all these RIA frameworks overkill?
So the major use case is offline support. While it is true that we still spend time offline, increasingly many of us are almost always online. With broadband, WiFi and mobile devices experiencing rapid growth, being offline is less of an issue. The major gap happens when you fly, although it appears that the solution to this problem is also on the way (i.e. on-board wireless internet access). When the internet reaches the skies, we will run out of reasons to be offline. So where does this put all of these RIA frameworks?
Perhaps it is optimistic to think that offline mode will disappear that quickly - time will tell. But even today, it seems to me that we have already proven that web applications are better than desktop apps at juggling our information.
What do you think about this? What real RIA use cases do see out there? And what platform makes the most sense to you?