What Does it Take to be a good RIA Platform?

Yesterday, I had a very interesting blog debate with a guy named Martin Beeby. He was arguing that Silverlight would eventually crush Flex because Adobe is building its community on Flash developers, who are in fact designers. Of course I couldn’t help demonstrating to him that he was wrong, because Adobe is obviously not trying to transform Flash designers into Flex developers, and is actually trying to add developers to its already existing designer community. But ultimately he made an interesting statement: according to him, RIA’s require both developers and designers, and both Microsoft and Adobe are trying to convince the ones they don’t already have in their community.

I had never thought of it that way. As a matter of fact, if you have a look at most Flex apps available out there, rare are those who use the default theme provided by the Flex SDK. In fact, Flex apps are so easy to customize using themes and stylesheets, that it’s perfectly understandable. Adobe is even pushing us in that direction with tools like Thermo or Flash Component Kit.

Adobe Thermo

But do we really need that level of customization? In fact, in enterprise applications, this themeing mania can even do more harm than good, unless you use a standard WindowsXP-like theme, because they don’t want fancy stuff, they just want transparent software.

He used another argument in favor of Silverlight, the fact that it’s generating more buzz lately. With showcase applications like Beijing Olympic games website, or the new AOL Mail interface, Silverlight is definitely trying to draw the attention on itself. Is it working? Hard to say.

But all of this debate made me think about what makes a good RIA platform. Here is my list:

  • the runtime has to be as widespread and portable as possible: on that point Flex is clearly ahead with its 95%-ish penetration rate, but the Flash runtime still suffers from a bad reputation in IT departments. On the other hand, Silverlight is still far behind but it has a tremendous advantage: Windows Update.
  • behind the fancy stuff, the code has to be simple, clean and state-of-the-art: that’s one of the main reasons why I love Flex, the ActionScript/MXML combination is just perfect, and it doesn’t even require any framework. I don’t know anything about Silverlight code, so I will probably have a look at some tutorials before commenting on that.
  • it has to be supported by a wide variety of development tools: Flex Builder is great but it’s still quite expensive, especially when you’re not using Eclipse at all and it forces you to run two development environments side-by-side. Fortunately, IntelliJ Idea has added support for Flex 3 and it’s becoming great. The last thing it misses is a visual designer. But given their experience with their Swing designer, I’m certain they are working on something (I hope so!). And all of that is possible thanks to the openness of the platform. On the other side, Silverlight is supported mainly by Visual Studio, and I haven’t heard of any openness effort that would allow other .Net development tools to support it.
  • RIA is all about the presentation layer, so it has to be connected to some backend to be useful, and the more backends it supports the better: Flex is really ahead on that one, since it can be plugged on Coldfusion, J2EE, .Net, PHP, Python, Ruby and virtually any platform via its webservice connectivity. But what makes it really powerful now is the extension of Java support thanks to BlazeDS. And apparently, Silverlight doesn’t have an equivalent communication protocol.
  • it has to be deployable on any platform: Flex just produces plain SWF Flash applications, so it doesn’t require any server-side technology. A plain Apache httpd server is enough. I don’t know what are the requirements of Silverlight on that matter.

Now what do YOU think? Do you see anything to be added to the above list? What are your criteria? Have you already had to make a choice and justify it?

The Flex Office Suite is (almost) Complete

Today, I’ve discovered yet another great Flex app that completes my online Flex Office basic suite. It’s called BList and once again, the ease of use of Flex has made ot possible for its creators to be really creative about the way to create spreadsheets. And what I really love is that you are not lost with their new way, since you’re litterally taken by the hand and everything is explained.

So now we have:

What else do we need for it to be really complete:

  • A mail application, like GMail or LaszloMail (that is now GoWebtop) but with a more creative approach of course
  • A good calendar app, something with simple tools to synchronize meetings ala Doodle for example, possibly synchronized with the mail system for invitation
  • And obviously there is a lot of creativity needed in the personal database area

Now imagine if Adobe bought all of the existing startups mentioned above (they have already bought Buzzword) and created the missing tools to build up a great Flex online Office suite, possibly with AIR spin-offs for each application…

What do you think? Do you know of any other Flex app out there that could be integrated in this online Office suite? Would you be interested in such an integrated toolset? Would you or your company be ready to pay a subscription for it?

[edit]
Mike Potter just pointed me to another incredible example of creativity allowed by simple technology. It’s a personal organization tool with a calendar, todo-lists and notepads like I’ve never seen before. I’ve added it to the list above. It misses some meeting synchronization features but it’s really excellent.
[/edit]

A first step towards official Flex Maven support

One of the things I will miss the most in the coming Flex release is official Maven2 support. There are a few contributed alternatives out there, like Israfil and ServeBox, but I’ve tried both of them and had blocking issues. Don’t ask me which ones, I haven’t tried in a long time.

That’s why I filed a bug in Adobe’s issue tracking system and I try to encourage people to vote for it (or double-file it now that it has been deferred and you can’t vote anymore).

I know that the jury is still out to determine whether Maven2 is good or not, but as far as I’m concerned, I’ve “crossed the road” and after more than 2 years dealing with Maven idiosynchrasies, I feel comfortable enough to use it on all my personal projects and advocate it on professional projects as well. Now I’m convinced that official and up-to-date support from Adobe on a Maven2 plugin that would offer all the possibilities of the command-line and make it easier to configure the mxmlc compiler is a must to really integrate Flex 3 in serious projects with unit tests, continuous integration, and so on.

Well, I found out today that there is now a Java API for the Flex compiler, something that could make it even easier to develop a Maven Mojo around it. Let’s hope that it’s coming soon.

Penetration in the AIR

In my humble opinion, Adobe has done a great job in encouraging developers to consider AIR as a desktop application development platform. Applications are sexy, you can leverage your HTML/Ajax/CSS skills, and now with Flex Builder 3 and AIR Introspector in the pipeline, we have everything we need… well, ALMOST everything we need.

But of course, having everything that we need to build AIR applications is not enough, because we’re not the only people involved. We have other actors to convince, mainly our bosses and our users. Our bosses because when you’re building a product for a company, adding new technologies like Flex, ActionScript and AIR, has consequences in terms of maintainability, in terms of the number of resources you can find on the job market, in terms of the budget that has to be assigned to training. For that of course, the reference argument is very efficient, and Adobe has done a great job on that too. When you can tell your boss that NASDAQ, eBay, Google and many other big companies they’re admiring are using such technologies, it helps a lot in convincing them.

But I think that there is one target that is still to be addressed: users. Of course, when the application you’re building is targetted at corporate users within the company, once your manager is convinced, it’s almost done. It’s just a matter of adding the AIR runtime to the next company-wide software update. But what if your users are normal people who don’t care about installing a runtime, who are even afraid of installing new stuff when it’s not smileys or search bar addons?  When you build a product for those people, natural penetration rate is vital. And from the last figures we got, “only” half-a-million people have already installed the beta AIR runtime. And something needs to be done to encourage people to install the final version, to improve this penetration rate.

I asked the question to James Ward and Serge Jespers, and their answer was basically “it’s free, we’re talking with Sony and for the rest, if you want it in Windows or MacOSX, mail Bill or Steve and ask them”. And that’s an annoying answer. Because I can’t believe that those companies don’t talk to each other, especially Apple and Adobe. But it looks like when they do, they’re ashamed of it, because they are competitors. It’s like partnerships and synergies are a shame.

Well, let’s hope that all those shiny applications will encourage people to get the runtime and it can be even more interesting to develop new shiny applications, and so goes the virtuous circle.

What do you think? What could be done to spread the AIR runtime?

PS: If you’re like me and you really want to have EVERYTHING to build Flex and AIR applications, you can’t vote for the JIRA issue because it’s been deferred. But James told us that you can file a new issue referencing this one and they will add a vote to it. And who knows? Maybe they will get it done before Flex 4 ;o)