There’s a nice summary of the history of GUIs on Ars Technica today. It got me thinking about RIAs: are they a continuation of the evolution of the Web, the Desktop, or both?
When trying to innovate in areas of new technology, I think it is critical that you have the right analogies in mind. I remember when Kevin asked me to join the Dreamweaver 1.0 team. I didn’t want to join unless he recognized that the underlying code was the most important thing. To me, HTML was more like simplfied programming than drawing. He understood that. I joined.
What does this have to do with analogies? Well, at the time, all of our competitors had made the analogy that HTML was like PostScript. According to this analogy, “in the early days, you had no choice but to hand edit PostScript. But once tools came around, no one cared what the underlying PostScript looked like”. In retrospect, this analogy seems silly, but that’s what people said at the time.
RIAs are now at a point where the future is still murky, and people are making mental analogies in order to make sense of things and gather inspration for future innovations.
Here are some things I’ve heard said about Flex and RIAs in general:
- RIAs will make web apps more like desktop apps.
- RIAs are like web apps, but “richer” and more “expressive”.
- RIAs are client-server apps with easier deployment.
- Flex is to Flash as MFC is to C++.
- Macromedia should try to define the “Macintosh User Interface Guidelines” for Flex.
I think all of these ways of thinking about Flex are understandable, but each one can be misleading if taken by itself.
1. RIAs will make web apps more like desktop apps?
This is possibly the most dangerous analogy. We should be looking at desktop applications for inspiration, but the design constraints of the web are fundamentally different than the desktop. If we start from the user interface concepts of desktop apps and work backwards, I am confident that we will end up with Frankenstein-ish UIs that feel completely wrong for the web. RIA innovations should be driven by looking for new solutions to UI issues surrounding the web as it is today.
2. RIAs are like web apps, only “richer” and “more expressive”?
There’s nothing wrong with “rich” and “expressive”, but it doesn’t capture what RIAs should be doing. Are RIAs about special effects? No. Or at least they shouldn’t be. They are about getting the job done in a better way.
HTML-based apps are great, but the UI vocabulary is very limited. As a result, you end up with email applications where every single piece of mail has a checkbox next to it to represent the fact that the email has been “selected”. With RIAs, we should be able to create applications that are more engaging and usable than with HTML.
3. RIAs are client-server apps with easier deployment?
RIAs are about ease of deployment? Sure.. in the way that the web is about ease of deployment. But that’s not the core of what we have to innovate on. And “client-server” sure isn’t the direction to push for when innovating. The rallying cry is deifinitely not “hey.. let’s make RIAs more like client-server apps from the 80s!”
4. Flex is to Flash as MFC is to C++?
This one is basically true, IMHO. But it’s not a great rallying cry for innovation.
5. Macromedia should try to define the “Macintosh User Interface Guidelines” for Flex?
Well, in some ways, we should. For example, scrollbars should all have consistent behavior even when they look different. So we figure out what the behavior should be, we write it down in a user interface guideline somewhere, and we even build a component that encapsulates the desired behavior.
One of the defining characteristics of the web is that all web apps look completely different, and yet they all need to behave somewhat the same if customers are to undrestand how they work.
Coming up with a set of guidelines that captures the “sameness” of RIAs while allowing for the differences is going to be hard work. Looking at how desktop OSs have created UI guidelines can be dangerous, because there is so much more that is expected to be “the same” for desktop apps than with web apps.
So how should I think about RIAs?
When I look at an article like the one cited earlier, it makes me really excited about the possibilites of RIAs. This is admittedly loosey goosey, but I think the best way to think about RIAs is to see the evolution of human/computer interaction as one continuous thread. Look at the pictures in the article and think about the way that human/computer interactions have changed in our lifetimes. The difference is truly astonishing. Add in the innovations on the web. They are not separate from this thread; they are part of the story. The way that people and computers interact has been changing, and will continue to change. For many of us, RIAs are where we have placed our bets as being the most interesting area of continuing evolution and change.
Much as HTML defined a new way of interacting with computers, RIAs will extend this and define a whole new vocabulary for how we can interact with computers, in an easier, more convenient, more intuitive, and more satisfying way.
RIAs are not “web+desktop”, they are something else. To fulfill the promise of RIAs, we will need to solve tough interaction design problems for this new problem space. Like the web, RIAs are highly networked and trivial to deploy, but unlike the web, the possibilities for client interactivity are nearly limitless.