I’ve been spending a bit of time recently taking a look at the RIA market as a whole and the tools that are available within. During this time, I’ve been spending most of that looking at Adobe’s Flex and Microsoft’s Silverlight.
For a little context, for those of you that don’t know, I am mainly a server-side developer, with a background in tools such as ColdFusion, Rails and Flash. I have some knowledge of Flex, but not enough to make me truely dangerous (yet).
So, what’s the deal? Well, in short, Flex is simply a library of components that are used to develop applications using Adobe’s flash runtime. This gives you a massive amount of scope for what’s possible, as well as a fairly safe bet that any users you might have have the flash runtime ready to roll. Development is done by writing MXML and Actionscript 3, preferably inside the Flex Builder tool (based on Eclipse) that you can buy from Adobe. Flex runs on Windows, Mac’s and Linux in some form, and can be developed for free due to the fact that the runtime itself is open-source. One feature definitely worth a mention is the support for AMF - a highly compressed binary format for data transport. This protocol makes it highly performant when chucking data around the place.
So, let’s quickly mention silverlight. Silverlight is Microsoft’s attempt at Flash, but with a .NET backdrop. In it’s simplest form, Silverlight is a subset of WPF, the Windows Presentation Foundation, that a whole stack of Windows UI is now built with. This means that any .NET developer worth his salt should be able to adapt and develop silverlight applications fairly easily. Now there’s a problem here - I’m a Mac user at heart, and although I have a windows laptop available at the office, OS X is where I prefer. However, as a Silverlight developer, you are bound into Windows as you’ll be needing tools such as Visual Studio 2008 and/or Expression Blend. This doesn’t sit too well with me - if you’re developing for the web (any platform), you should be able to use any platform to do so.
So, what are the key differences other than those mentioned above? Well, for me, Flex appears to be a bit more developer friendly - I can do all the things that Silverlight can do as well as use AMF, and the Flex Builder tools (when combined with Adobe’s creative suite) seem a little nicer than the Microsoft offering. I can develop Flex apps on any platform, and run them pretty much anywhere. I also like the way that Flex can seemingly sit with whatever tools you might use elsewhere, Silverlight definitely lends towards .NET due to the fact that the IDE and languages are used elsewhere in the platform.
On a side note there is something that bugs me about Silverlight apps, and that is the look of them, when using the default styles and skins, for instance, let’s take a look at a flex and silverlight app side by side (using the default skin):
First up, Flex:

and Silverlight:

Flex just seems to look smarter and less “Tonka”. Silverlight has the look of a Fisher-Price “My First RIA”.
One other big thing worth mentioning, although slightly off topic, is Adobe AIR - I don’t see anything from Microsoft, yet, that appears to offer what AIR does. AIR allows me as a web developer, to create desktop apps using Flex, Flash, HTML, JavaScript etc, and deploy them whereever I like. Microsoft does have WPF, but that’s pretty much limited to recent windows installations and doesn’t really suit itself to web developers. AIR is a huge selling oppourtunity for small agencies, and Microsoft just don’t have anything to offer as an alternative.
Lastly, it’s worth mentioning the vendors themselves. Both are great companies, with good product lineups, but there’s one thing worth noting. MIcrosoft seem to understand developers and the creative agencies out there better than Adobe by a long shot. For instance, the partner programs that the two companies offer are leagues apart, the Adobe one being hard to justify the ROI on. Micosoft are genuine about working with partners, and helping them to help themselves, providing support, software and training where needed. Adobe on the other hand seem to show no interest at all unless you are shifting LiveCycle licenses, which is a damn shame as they win in almost other respects for the budding RIA developer.
So, in summary, my views are this - Flex beats Silverlight. I prefer the development story and the fact that I can develop it how I like and where I like. If I were starting up an agency with guaranteed work I would go for the Adobe products every time…
BUT, and there’s a few buts, I don’t have guaranteed work, I need some help getting it - so Microsoft comes in to play. With their awesome partner program, I have the resources available to me that help me be more successful as a business. The question is, does grinning and bearing the slightly poorer tools make it worth it?