Gartner RIA MarketScope: A Rising Tide Lifts All Boats

Boats ImageThere’s always a lot of back and forth between the Flash crowd and the Silverlight crowd. And that’s fine; everyone needs an enemy and competition ends up driving everyone to have better features, better performance, and a better platform. But one of the things I’ve always thought was that Microsoft’s entry into the RIA space would end up being good for everyone. Microsoft has a lot of developers but there are also a lot of developers who don’t like and won’t use a Microsoft solution. Those people also need RIAs.

According to the Gartner MarketScope on RIAs it looks like Microsoft jumping into RIAs pushed adoption across the board in 2009. I don’t have the full report yet but here’s the quote from the blog post that stood out:

Now that Microsoft has validated “heavy RIA” in the eyes of many enterprises, interest in RIA technologies is increasing across the board. Frequent Gartner inquiries indicate that clients pit Ajax vs. Flash vs. Silverlight against each other in evaluations for new RIA projects. What does this mean for JavaFX and other technologies? Tough to say for sure, but my bet is that the “heavy RIA” arena comes down to a battle between Adobe and Microsoft, and that there is enough room in the market for both to be successful.

This isn’t supposed to be a happy-feelgood post. I want Adobe and our community to kick ass and continue to be the leaders in the RIA space. But I’m glad Microsoft is raising awareness; it helps when we can talk about why our platform is better for RIAs and not go back to what RIAs are :) .

I’m stoked about 2010. Especially if it’s a battle between Ajax, Flash, and Silverlight. We’re starting to get a big lead in mobile, AIR continues to do well as a desktop RIA solution, and we’re starting to monetize our own RIAs with services like Acrobat.com. There’s been a slight trend towards “native”, which is being led by the iPhone, but don’t discount the persistent desire to create rich, desktop-like experiences with all of the flexibility and scope of the web. The web is still going to win and RIAs will be a big part of that.

Photo by Flickr user jal33

HTML5 Versus Flash Versions

Serge has a great post on Adobe and the open web. I don’t think Adobe gets enough credit for contributing to the open web. That takes a couple of approaches. One is, as Serge said, we participate in a lot of open source and open web initiatives. But we also spend a lot of time and money investing in the web and solving problems that we come across. Cross-domain support is a perfect example. It was a problem we saw coming long before Ajax and we created a solution in the Flash Player to support cross domain requests. I ran down some of the new APIs and changes between HTML5 and HTML4 according to Wikipedia and compared them to what we have in Flash and when we added it.

Not all of this is 100% accurate but it’s the best guess I have at 2:00 AM. I’ll update it as I get new info.

HTML5 Flash Version
Canvas Tag (2D Drawing and Animation) FutureSplash (Flash Player 1)
Video/Audio Support Flash 2 (Audio) Flash 6 (Video)
Offline Storage Database No real offline storage in Flash Player, Adobe AIR added it in version 1
Drag-and-drop Supported in ActionScript 1(Flash Player 5)
Cross-Document Messaging Cross-Domain support in Flash Player 7
MIME type and protocol handler registration I don’t think there is anything analogous to this in Flash.
New parsing rules N/A
New elements such as progress, nav, time, etc Largely covered with ActionScript 2 (Flash Player 7)
New form controls (dates, times, email, url) Shipped with Flash authoring (Flash Player 3/4)

The “War” Between Flash and HTML/Ajax

There is a pretty good rundown of the RIA space and HTML versus Flash/Silverlight on CNet today. If you read through the comments a lot of people trash the article for arguing Apples and Oranges which I think is an encouraging sign that we’ve come a long way. No matter how you slice it, HTML/Ajax and Flash are competitors in a sense. They do very different things but the “5 year convergence” for the technologies looks very similar I think. Frankly, companies like Google and the browsers that have bought into Ajax and HTML must be feeling a little bit frustrated at the speed of innovation that a company like Adobe can achieve with Flash. So there’s tension there. But I hope that we don’t ever get to the point where we have a “winner”.

Flash can do some great, great stuff as a platform. It goes beyond animation because from our platform we’ve built up an ecosystem of servers, tools, and services that enable things like real-time collaboration, powerful video streaming, and system integration. We’ve been able to do that because the Flash Player allows us to do some very, very cool stuff. I hope our direction as a company is to figure out how to get that to merge more into the HTML/JS world.

The first comment on Digg nails it on the head (aside from the last few sentances):

Firstly, HTML has to be in any of these regardless. HTML is the building blocks of any web page, regardless of the other technologies it uses.

We need to bring Flash and HTML/Ajax closer together. You absolutely should be able to reach inside of the Flash Player as a JavaScript developer and pull out some of the good bits that make the Flash experience so great. We shouldn’t force the “1 pixel SWF” or a sand-boxed Flex application. With AIR you get a glimpse of what that’s like. To me, that’s win-win for everyone. You get to use Flash for things at which it excels. You can tap into Adobe’s services, tools, and infrastructure, and we enhance the entire web – including the HTML/JS side.

On Desktop Application Platforms and User Interfaces

No matter what kind of developer you are I encourage you to read Peter Bright’s post about .NET. It’s a fascinating look at the history of Windows development and how it’s progressed (or regressed) over the past few years when compared to OS X. I’ve never done desktop development – I was always a web developer – so I can’t speak to the particular pain points or moving between operating systems. But I think this article is especially important for budding AIR developers who are helping cross the chasm of desktop development and web development.

I’ve always been a web developer in a lot of ways because it was easier. The browser handled all of the complicated work for me so I could write some UI code, some server side code, and then pretty easily make stuff appear on the screen. As I got into Flash and Flex more and more I was able to upscale the experience, make my little web applications look and feel more like native desktop applications, and all the while have the Flash Player worry about the hard parts of sophisticated development. Now with Adobe AIR I’m building desktop applications under that same idea. Maybe I’m lazy, maybe it’s bad that I don’t understand the fundamentals of desktop development, but the ease of web development combined with a better delivery mechanism has exploded and that’s where all the creativity and fun is. More people can be web developers and everyone is benefiting. So when I read articles like this about the frustrations of desktop development I wonder about what AIR holds for these people.

There are definitely things that AIR doesn’t do. It’s meant to be RIAs on the desktop and not a full replacement for native desktop applications. But it packs a bunch of functionality into APIs that will resonate with web developers. They make sense. We were able to start from scratch and AIR hides all of the complicated and possibly outdated API work that you’d have to do on any operating system. And the same code works on Mac, Windows, and Linux so you’re not locked into one operating system.

But one part of the article actually makes me worry about AIR, and it’s something I’ve been thinking about for a while. If we’ve got cross-platform AIR applications running on the desktop, what happens to the native look and feel that is very beneficial from a user interface standpoint? I don’t have a good answer. But Peter tears into the problem and makes some great points. Is Windows fragmented enough from a UI standpoint that we encourage AIR developers to try and follow the Apple UI guidelines where possible? Do we create our own set of UI guidelines (possibly using the Flex Interface Guidelines) that take into account the subtleties of web technologies on the desktop? Do we let developers use whatever UI guidelines fit their technology (Ajax/Flash) and get out of the way?

I don’t think the last one is the answer but I do think that as AIR becomes more widely adopted we need to encourage people to be good UI citizens. After reading Peter’s article I’m glad I never had to do desktop development. I like everything about web development and that’s one reason why I like AIR so much. But I realize there are pitfalls abound when combining the web and the desktop. I think it’s going to make for a lot of interesting philosophical conversations across a lot of different groups and that’s a good thing.

Update: Ethan picked up on this as well. Hopefully he’ll post more of his thoughts :)