Home > Development > features
Raymond Camden
RIA for me is all about expanding the experience for the user. Those "gray beards" amongst us remember the old days of just being happy seeing plain, static text show up in the browser. We've come a long way since then. While dynamic web sites have pushed us way beyond the simple pages of the old days, RIA is helping us now provide the same level of dynamic interaction on the client side as well. I think this is wonderful as it improves the entire process (server and client)!
While we have a great opportunity here to help users, the challenge is to not actually make things more difficult. LIke any new feature, the web is rife with examples of poorly designed and hard to use applications. It is not enough to learn how to make HTTP requests and change content dynamically, but rather how to do it well in ways that help the user and not scare them off.
At the same time, developers are presented with a large variety of development choices, and while options are good, it can be more than a little bit daunting for the new RIA developer to learn the skills necessary to bring their sites into the Web 2.0 world.
Raymond Camden is the owner of Camden Media, Inc, a web development and training company.
Christian CrumlishIf You're So Smart, Why Aren't You Rich?
Although Adobe apparently coined the initialism RIA in 2002, I didn't first hear it until 2005, positioned as a reframing of Ajax enthusiasm into a broader context, putting the emphasis on the richness of the experience and not the technology or combination (Ajax, Flash, Flex, Laszlo, and later XAML, and so on). But the term still begs the question: Rich in what sense? Responsiveness, immediacy, convenience? production values, chrome, animation?
The Yahoo! Design Pattern library. I have the privilege of curating features a large collection of rich patterns that help designers and developers think through the "interesting moments" that make up each interaction.
Frequently paired with Yahoo! User Interface library code modules to deliver these rich experiences using Ajax, the patterns themselves are written in a technology-neutral way so that they can be applied to other methods. The new Astra library, for example, offers Flash solutions to many of the same rich patterns, and YUI itself has started offering hybrid components.
I still prefer Ajax methods in most instances, especially the Hijax approach promoted by Jeremy Keith, in the sense that it builds on the "native" markup and other standards of the web, but that's just me. To the ordinary end-user, the techniques creating the enriched experience remain invisible, as they should.
In my role as Yahoo!'s pattern detective, I often pose questions to our entire worldwide user experience design community to tap experience, brainstorm solutions, or gather input for a pattern, so when I was asked to contribute a brief essay on what RIA means, I figured I'd get a bigger crowd o' wisdom if I went beyond the prejudices in my own head. Maybe even find a consensus on what "rich" means in this context.
Most folks ended up mentioning Ajax and usually Flash as well. Senior interaction designer on the community platform Bryce Glass immediately shared an IM transcript with me, in which he said, among other things, "RIAs are rich-internet-applications? (I think.) they describe applications built USING.. Ajax techniques BUT, it is possible to build RIAs using other methods (Flash, AIR, um - other stuff..)" and "ajax itself is not a 'technology' -- it's just a term that describes a buncha techniques (javascript, CSS, xmhtlresponse(), blah) -- think of Ajax as 'the Web-ish' way to build RIAs.. (unlike Flash, which is the adobe way to build them)."
Not bad!
Flex force experience designer Dee Adams says RIAs are driving changes in how designers work: "Where a process like registration on the Y! network may have been cumbersome before (because of error handling, messaging, and overall usability of the forms) we've since upgraded the experience to make it far more palatable. For the first time we're seeing a definite merge between the visual and interaction designer roles when developing a RIA product. How will these rich interactions be represented in the interface? What kind of real estate will be given to key components? It's producing more hybrid and cross-functional designers in our industry."
But senior interaction designer Andrew Braxton stresses that "Internet applications themselves are nothing new (webmail clients have existed for some time. 'RIA' is generally used to describe a browser-based (as opposed to a desktop-based, e.g. iTunes) application that uses some other intermediary layer of technology (AJAX, Flex etc.) between the server and the browser, negating the need to make HTTP calls.
"In user experience terms this means that a user experiences realtime results to their actions. In a sense this is nothing new either since Flash and javascript have been used to enhance web experiences with RIA-like qualities for some time.
"I would posit that more and more users are expecting the Web to be dynamic (due to faster connection speeds and more dynamic user experiences on other platforms and devices, such as the iPhone). Hence the need for the industry to coin a phrase to describe applications that can deliver a more dynamic or 'rich' experience."
Michael Brown, a principal interaction designer, focuses on the I in RIA, distinguishing rich applications that access remote APIs from those that don't. "In my opinion a rich internet application is an application that in not dependent on the presentation layer, whose data is delivered via an internet connection. A rich web application is a modern looking interaction-model application that is meant to look and function like a desktop application but is delivered in a web browser.
"Many people refer to any or all ajax application as an RIA because they look cool and modern and function as an application, while behind the scenes some of the presentation logic is utilizing a local api. To me this is a RWA. If that same ajax application called a web service api to render its functionality I would place it in the RIA category."
But looking cool of course isn't enough. Technical Yahoo! Chris Saari, who was the engineering lead for Yahoo! Messenger for Vista, notes that the key is appropriate use of the techniques: "To me RIAs are about providing the best possible user experience in a given situation. One RIA doesn't fit all occasions (differences of operating systems, user agents, hardware, and bandwidth) but RIAs have two common themes: Connectivity of some type being core to the function (the I is for internet!), and the use of 'not strictly necessary' UI techniques to improve the experience: transitions, tweens, etc.
"One interesting example is the Google iPhone Maps app. Google Maps is a canonical early RIA, it made the world AJAX aware, yet they improved the experience even further on iPhones by putting it in a native UI shell that is appropriate to the iPhone limitations and capabilities."
If there's a consensus (leaving aside the designers who told me that RIA refers to Rural Inoculation Association, "the noble group of folks dedicated to reducing the spread of various livestock maladies," and Rare Isotope Accelerator, "connecting nuclei with the universe") it's that rich in the context of RIA means a fluid, convenient, engaging, delightful user experience that works better than the halting, page-at-time, form-submission dominated interaction model of what I guess we now think of as web one-dot-oh.
In 2008, "rich" is table stakes.
Christian Crumlish curates the Yahoo! Design Pattern Library and is the Information Architecture Institute's director of technology.
Tony MacDonellApplications, inform us, entertain us, and empower us, they are the base of all computing experiences. While we need them to do what we do, the majority of the headaches the average person faces while using computers, comes from the way applications have been developed and deployed over the years.
Traditional applications are tethered to your computer. Often, they are tethered to your operating system, and the file system that operating system exposes. They require installations that are long and tedious, and almost all the content they generate or consume is stored locally on the computer, making it difficult to share with others.
The problem with all of this, is that it forces us to develop an understanding of the underlying layer below the application. In order for us to get work done, or experience something great, we need to know about file types, codecs, drivers, and other things that really have nothing to do with the task we are trying to accomplish. We all have to be computer experts as well as experts in our fields.
In contrast, the World Wide Web has brought about a huge change in computing for the average person. We can have great digital experiences that are easy to find and easy to use. With the advent of standards that web browsers have been developed against, people can expect to be able to experience content on the web consistently, anywhere, at anytime.
Early on, we used the web to inform ourselves, but now it is also being used very effectively to entertain as well as empower. Rich Internet Applications(RIAs) are a new breed of application that have emerged, bringing the best of the web, and the best of the traditional desktop application together.
A Rich Internet Application's key job, is to move the ability to do work to the web. The process that I use to do something, must be available to me everywhere regardless of what operating system I may be using. My data, or the content I create must also always be available to me, moving my entire workflow from my computer to the cloud. This fufills the "Internet" designation in the name Rich Internet Application.
When applications and their associated data truly reside in the cloud, radical new possibilities emerge. The ability to share data, or collaborate with others becomes much easier. People can collaborate on tasks in real-time or asynchronously, as well as use streaming video, audio, and text to communicate with each other as they are working on something.
Great Rich Internet Applications also abstract the idea of "files". Your data is stored contextually, and is usually searchable within that context. You never really deal with raw files when working with an RIA, you deal with your ideas instead.
These workflows can be radically more productive, as they keep the focus on getting work done, and require no knowledge of the underlying platform on the part of the end user.
The term "Rich" is a reference to user experience. Rich Internet Applications do not sacrifice functionality or usability by being in the cloud. Modern web technologies such as the Adobe Flash Player, AJAX, Microsoft Silverlight, and Java, are a few popular technologies that can be used to create application interfaces for the web, that are just as effective at getting the job done as their desktop counterparts.
The traditional web relied heavily on a few interface controls we have all come to know well. Things like links, combo boxes and forms are great for dealing with interactive "pages", but aren't all that helpful when you are editing images, streaming video, mapping GPS data, or making phone calls. New user interface requirements have driven the aforementioned technologies to allow designers and developers to explore the possibilities of brand new ways to interact with these types of data and processes.
All of this is great stuff, but there are still times when having an application on the desktop might make sense. I may actually want an application to have access to data on my local machine, or I may be such a power user of an application that I want it open all the time on my computer. I may want to be notified of something passively as I am working on something else, and web applications are traditionally bad at doing that.
Many of the Rich Internet Application technologies provide the ability to run RIAs on the desktop. Adobe, for example offers Adobe AIR, a technology that extends the Adobe Flash Player and incorporates support for AJAX and PDF as well. It allows you to build Rich Internet Applications that run on the desktop as native apps on any operating system. Microsoft offers Windows Presentation Foundation(WPF), JavaFX will allow you to run Java Apps locally, Mozilla offers Prism, and Google offers Google Gears. These are all technologies that bridge the gap between RIA and the traditional desktop.
The laptop and desktop computer are hardly the only place where we expect rich experiences, and want to access our data. Great Rich Internet Application technologies must also stretch their presence to devices including the mobile world as well as the home theater. Most of the technologies mentioned offer the ability to develop for a plethora of devices. This space is emerging, but it may likely be the most critical of all. The race for ubiquity here is on and far from decided.
Rich Internet Applications are starting to have a serious impact on the whole software industry. I wrote this article using a Rich Internet Application called Buzzword. It is an amazing example of how Rich Internet Applications are starting to move into some of the most common and coveted areas of application development (in this case, word processing). It is truly exciting to be involved in a revolution in computing that truly makes work easier, more accessible, and more fun for everyone.
Tony MacDonell is a founder of Teknision Inc, a company that specializes in developing RIAs and Rich Media experiences, founded in 2001.
Andrew MulleriHotelier's online reservation application for the Broadmoor Hotel was the first commercial RIA that I recall seeing. The application, built in Flash, offered minimal richness but made up for that by helping to demonstrate the pitfalls of traditional web based applications through being able to interact with server data without having to perform a page refresh. From a single screen you could check room availability direct from inventory, see details for room types, and book and pay for a hotel reservation.
What is so cool about the Broadmoor application is that while it was groundbreaking, being described as "rich" back in 2001 it was authored with Flash 5 using ActionScript 1. A year later Flash MX and Flash Remoting were both released and Macromedia coined the term Rich Internet Application (RIA). With the hindsight of today's technology can you imagine building such a thing that way today!
Offering the features and functionality of desktop software typically with a lot more flare, the RIA is pushing the boundaries of what we expect from the browser. The RIA to me has always been about the user experience, and the better the experience the less visible the RIA should be - to the user the application should work without them thinking about the complexities of how.
And while the browser is now running everywhere, so too is the Flash Player and that's what has made the richer experience possible. Deployment via the Flash Player has meant a cross-browser cross-platform experience that reaches around 95% of the desktop. Developers are now considering switching from a single desktop to delivering their product via the browser so that they can embrace more users, letting the ubiquitous Flash runtime become the platform instead.
Applications like Buzzword and Sliderocket are proving that word processing and presentations are no longer restricted to the desktop. The same application can be deployed on a variety of operating systems without the necessity to maintain multiple code bases - with Adobe AIR promising deployment to the desktop of RIA code, authored once deployed to either browser or desktop on all major platforms. (This was authored in Safari on Leopard using Buzzword)
Trainer, mentor, developer, blogger and presenter, Andrew Muller has been involved with the production and development of Rich Internet Applications in Australia since 2002. Certified Adobe instructor for Flex, ColdFusion, Flash & Connect; Andrew is also an Adobe Community Expert.
Rich TretolaThe following is the technical definition of a Rich Internet Application that I have included in books that I have written on Flex 2 and AIR.
"RIA is an application that runs in the traditional browser but utilizes an intermediate layer that can bypass the traditional Page Refresh that has been a standard of most current web applications. The most common tools that can achieve this intermediate layer include JavaScript used in Asynchronous JavaScript and XML (Ajax) applications, as well as Flex or Flash using the Flash Player. Other RIA solutions include OpenLaszlo (which utilizes the Flash Player as well as Ajax), XUL (which is dependent on a Mozilla-compatible browser), JavaFX from Sun, and the Microsoft Silverlight."
My non technical opinion on RIA is that a well designed RIA can be a truly engaging experience to the user. It will allow the user to flow to many areas of the application without feeling the agony of click and wait which was the norm when browsing the internet since its inception. RIA can also seamlessly include multimedia (audio, video, screencasts, etc) , 3rd party tools (maps, messengers) to enhance the users experience. There is an obvious danger of doing these things because you can rather than because you should so as difficult as it is for a developer like myself to say, user experience designers are the key to building RIA that really shine. Time spent doing research on how to build the user experience you are trying to obtain will not be time wasted.
Rich Tretola currently holds the position of Rich Applications Technical Lead. He runs a popular Flex and AIR blog at blog.everythingFlex.com.
Andrew TriceWhat really is RIA?
This is a common question for the development industry in general. In its most basic sense, RIA is an acronym for "Rich Internet Application", but that doesn't really shed much light upon what a RIA actually is. The goal of this post is to help shed some light onto what RIA means to me.
What is the defining characteristic of a RIA?
Rich User Experience:
I think the most defining characteristic of a "Rich Internet Application" is a rich user experience. This does not necessarily mean a slick interface, or asynchronous data transfer, a stateful client interface, or any specific technology. While these may be common characteristics of RIAs, they do not define them. It boils down to how the application is used, and what it is being used for. A Rich Internet Application provides a great experience for its users. It should be easy to use, engaging, and targeted to perform its task very well. To many this means a "desktop-application-like-experience" delivered through the web. This may include common features such as drag-and-drop data manipulation and imaging/drawing/charting capabilities, but it is not a requirement to include any of these.
What are common characteristics of a Rich Internet Application?
As I mentioned above, the only real requirement of a RIA is the rich user experience. However, the richness of experience can be achieved through many common techniques:
Stateful Client and Asynchronous Data Transfer
Although not a requirement of RIA, it is very common that Rich Internet Applications employ stateful clients and asynchronous data transfer to achieve their tasks. A stateful client interface is exactly as the name describes; it maintains state of the application completely on the client side. It does not rely on the server to maintain information about what the current user is doing. This enables the ability to simplify backend logic to be more service oriented and asynchronous. The back-end services can perform specific actions or logic based on parameters passed into them, regardless of who invoked them. The user interface also does not need to wait on the backend logic.
Asynchronous data services are performed behind the scenes, while the user interface is still accessible to the user. The user may not even know that a remote service method has been invoked. This enables the user to keep using the application seamlessly, which helps lend to the desktop-application feeling.
Additionally, asynchronous data services typically only contain data, no UI declarations; it is up to the stateful client to determine how the data will be displayed. This typically reduces the size of the requests back and forth to the server, and often results in reduced server load and better interface responsiveness. Not to mention, the client application does not loose its place when the service request has been made. The user can keep working with the application, and can show active feedback to the user, such as a loading animation while the service request is being executed.
Drag-and-Drop UI Paradigm
Also not a requirement, but a common paradigm implemented within Rich Internet Applications is "drag-and-drop". Ask anyone, especially non-technical people, what is easier: typing into a bunch of forms to enter information, or dragging an item onto a "cart" and having the information automatically populate? The answer is clearly drag-and-drop. This technique varies based on the technology implementations and restrictions, but its benefits can been seen clearly. Dragging items onto online maps, dragging commercial goods into shopping carts, creating "drag-able" objects in online office productivity applications, and even "drag-able" elements in online image editing applications are all rich features that are capable because of the drag and drop paradigm. This type of capability didn't exist in mainstream online applications until the "RIA Revolution". Now you see it everywhere.
Drawing and Analytical Tools
Not every application has these either, but they really add a lot when they are used properly. Many RIA technologies enable the capability to manipulate graphics onscreen at runtime. This enables charting and complex data visualizations, and in some cases, even 3D modeling. An image is worth a thousand words, and these types of capabilities enable your application to say a lot. Without the bloat of large tables of data that the user has to analyze in order to see the trends; the user can simply look at it, and instantly see what is going on.
What technologies are used to create Rich Internet Application?
Lots of them - there is no single technology that is best suited for RIA. There are lots of great technologies that enable various capabilities. The choice of technology should be determined based upon your needs, and your application users' needs. Typically I prefer Adobe Flex on the front end because it makes a lot of these paradigms easier, and enables rapid development cycles, but there are many options:
I know I didn't name every option, but the truth of the matter is that you have an option. There is no definitive "right choice" for all occasions. The desired capability and features of your application, in conjunction with your available development resources, technical requirements, and current infrastructure should determine which technology suits your needs most adequately.
On the back end, there is not any requirement for RIA. You are not limited to any specific application server or language. I have personally worked on RIAs that employ ColdFusion, Java/J2EE, .NET, and PHP, and I know that there are numerous other options out there. As with your client-side interface technology, your backend technology should be determined by the needs of your application, your resources, and your infrastructure. Are you serving dynamic data? Are you streaming media? Are you employing real-time messaging? Are you upgrading an existing system, or building one from the ground up? Does your organization support open source initiatives? Does your organization prefer commercial products that have technical support? What is your budget for technology? There are many variables in the equation, and many solutions to the problem. RIA is not locked in to any one specific technology, nor do I expect it to ever be.
Is Web 2.0 RIA?
No! Web 2.0 is a marketing buzzword. I truly believe that "Web 2.0" originally meant the same thing as RIA, however it has been completely overused and abused. Web 2.0 has been degraded to a reference for common graphic design elements such as rounded corners, gradients, transparencies, and reflections. I don't doubt that the term RIA will also become overused and abused, but the ideas behind RIA will not. It all boils down to the application, the user experience, and the ability to for the application to perform its task well.
Is RIA always the right choice?
The choice of RIA depends on the context. In many cases, yes it is the right choice. In many cases, it is not. RIA is best suited for applications, not web sites. There is a definite distinction there.
I think a limited amount of RIA concepts, such as asynchronous lookups for text boxes can be helpful in a web site, however too much could potentially kill the web site and make it difficult to use. RIA is great for office productivity applications, business/data analysis applications, media applications, graphics applications, and online mapping, but it does not suit every need and every purpose.
Many RIA technologies cause sites to have problems being indexed by search engines. RIA technologies must be designed with search engine optimization in mind for them to work properly with search engines.
When employed properly, applications benefit from RIA principles and technology. As with any technology, RIA methodologies can be overused and abused, and it is up to the discretion of the developers and providers to implement them correctly. The developer/provider company *should* know their users/customer/consumers best.
Andrew Trice is the Principal Architect for Flex & AIR for Cynergy Systems, based in Washington, DC.
Gabor VidaI view the concept of an RIA as having two important characteristics; connection and connection.
On one hand, an RIA takes advantage of a connection - an internet connection, a connection to data. The fact that the application is on the internet is not enough. A great RIA leverages its connection to provide value. Being connected to a network adds a layer of possibilities that traditional applications do not have.
The most obvious is ubiquitous distribution - the data is important, the hardware you use to access it is incidental. Great RIAs will even change their interface and features depending on how you access them. An application should provide value through many different touchpoints.
The real magic happens when these applications take advantage of their connection to the internet to enhance features. Connected applications involve collaboration and communication. Easy access to an endless range of data allows applications to connect data types together ways that foster entirely new views of information.
The second great form of connection is connecting with the user. A great RIA connects a valuable service to it's user in a way that is memorable and entertaining. An RIA takes cues from a very wide range of disciplines: psychology, human factors engineering, consumer behavior, graphic design, storytelling. All of these varied disciplines come together in the interface to immerse and involve a user.
Applications traditionally exist to solve a problem; provide a service. Rich internet applications strive to provide this service with a healthy does of fun and wonder.
An application should start out feeling like play and then reveal it's depth and value and finally end up feeling like a cherished and trusted tool. The "Rich" part of Rich Internet Application forges this connection.
Gabor Vida is the president of Canadian RIA development firm, Teknision.

"If You're So Smart, Why Aren't You Rich?"
That may be the best use of a Batman: the Animated Series reference ever.