When (Not) To Use RIA
Sorry, I said I'd write this over a week ago. Don't the weeks fly by though. It seems I blink on Monday and then it's Friday. Oh, the treadmill of life.
In the mean time Ferdy has written on the topic of when using RIA is the right choice. It's the kind of in-depth article only a man without three children could write. Worth a read if you get chance. Ferdy sums it up fairly well:
My claim is that RIA technology is justified when the interaction requires it
In essence, as Ferdy noted, there isn't really any clear way to decide whether to use RIA or not. It all depends.
For those of you wondering what RIA is, it's Rich Internet Applications and is primarily Flex, but also things like Silverlight.
Once you fall for the lure of RIA it's all too easy to see how it could fit any problem and just use it for everything. That's bad.
Just as important as knowing when to use it is knowing when not to (which is the same thing I guess).
- Don't use RIA if you don't need to.
- Don't use RIA if you aren't sure the audience will always be able to.
- Don't use RIA for a plain website just because you think it will make it look cooler.
- Don't use RIA if you want the site to be reliably indexed by Google et al.
Sorry I can't offer anything more definitive. There just isn't a definitive guideline to follow. Working, as I do, alone, I have the luxury of making the call in most cases, so have never needed think about it to such a degree.
Mixing The Two
As we speak I'm working on a website that mixes both RIA and traditional web technologies. The site allows children of school-going age to create posters about their experience with the outdoors and nature. They can browse existing posters using a normal HTML-based website. If they want to make their own then they register and login using normal HTML forms and then up pops a Flex-based app in a new window.
I could probably have done the whole site in Flex, so that they browse entries, register and login via Flex too. I didn't need to though, so I didn't.
On the flip side I probably could have created a poster-making app in pure HTML. It would have been a nightmare of a job though, not been as nice a product and taken four times as long to do it. So I chose RIA.
Interesting. I was a bit surprised about your definition of Rich Internet Applications as being Flex and Silverlight type technologies. I looked at Wikipedia and it agrees with you, saying that RIAs run in sandboxed VMs.
I develop with technologies such as Google Web Toolkit and consider myself as developing RIAs as I build desktop-like applications that run in a web browser even though the technology is effectively JavaScript.
Reply
According to a comment on Ferdy's post that I linked to this is up for debate over at Wikipedia.
Is something written purely in DHTML classed as RIA? I don't see why not, I guess, but it's just not what I personally would class as RIA. To me RIAs are what step up to the mark when DHTML can't deliver. With the advent of HTML 5 this might all change, but, for now I think there's a gap between what DHTML can do and RIAs can. Sure, you could probably do most things I've ever done in Flex in DHTML, but it would take an expert in JavaScript to even come close.
Jake
Reply
Hmmm... there's definitely a gap (always-narrowing, however) between what DHTML can offer versus Flex/Silverlight/etc.
But to limit the definition of RIA to only those VM-based technologies seems flawed. If you do, then you could say "the iPad doesn't support RIA." Which just doesn't make sense.
Reply
I am confident I could create everything you have created in Flex with Google Web Toolkit coupled to the Ext GWT widget library (http://www.extjs.com/examples/explorer.html#overview) or similar.
I would not even need to be a JavaScript expert because I would be writing it all in Java :)
Flex is a good technology but it needs a plugin. A GWT app when deployed is pure JavaScript (Java compiles to JavaScript) and would run on any modern browser including safari on the iPad without a plugin.
Reply
Let's start with a simple test then - http://www.codestore.net/workspace.nsf - how about a pure JS version of that?
Reply
Show the rest of this thread
To conclude that Silverlight, Flash,Flex, and AIR are the extent of RIA development is to miss the Whole Web 2.0 world of JavaScript UI Frameworks [think jQuery, EXTjs, DHTMLx, JackBe, Bindows, etc], Google Gears for Offline operations, and the wave of multi-browser, multi-platform apps. And these apps are appearing on Android, ChromeOS and Palm webOS mobile environs.
HTML5 with its Canvas, SVG, and Offline operations will further extend the RIA deliverable through "HTML apps"[actually, now a far cry from our concept of what a Web page delivers]. Many are becoming standalone apps much like Air.
Reply
Jake, great article, concise and to the point.
To the other commenters. I don't really get the whole RIA definition discussion and why people are so sensitive about it. I think it should be crystal clear that both Jake and I were talking about technologies like Flex and Silverlight. The discussion is about when to use those, not comparing all possible RIA technologies amonst each other.
Plus, I am skeptical of anyone claiming that DHTML-based frameworks can approach Flex or Silverlight in terms of capability and productivity. If I am wrong, please do point me to a javascript-based deepzoom, 3d product store, or Digg labs demo.
Sure, the introduction of HTML5/SVG and fast javascript might close the gap eventually, but we are talking about here and now.
Reply
I am not putting down Flex or Silverlight in any way. It just seems strange that something like GWT has been missed out. Normally when people talk about RIA, GWT is included. For example here is an event in a couple weeks on RIA I got an email about: http://riaction.sg/
I just have not come across a Flex/Silverlight definition of RIA before.
Reply
I agree with Jake, only use it when you need it.
Can we see the poster app please?
Reply
At some point I hope to show it (off). Depends if they'll let me.
Reply