Silverlight, Flex

My team at work spent the last week on Flex training.  I've dabbled in Flex, but it was great to be lead through a lot of different areas of Flex, and more importantly, to spend a week in an IDE writing and thinking about Flex and ActionScript.

Meanwhile my RSS reader is flooding me with news about Silverlight. 

I have a couple of thoughts on the obvious overlap between these two runtimes.

First, Silverlight seems to simply be "too much".  It's not a single language, it's a runtime for a bunch of languages, and they don't even seem to be suggesting which will be the dominant one.  If you write .NET code generally you write in C#, but the DLR is a new runtime and they're building Python and Ruby on top of it, so you can choose to build applications in those languages in addition to C# and JavaScript.

The Flash VM runs ActionScript, which is ECMAScript 3, AKA JavaScript, but a JavaScript implementation that seems better capable of managing large applications.  So far I like what I see - and it means if I write an application using Flex, any Flex developer will be able to understand it and work on it.  Silverlight has too many options; I think it's going to take a while before developers figure out which ones really make sense.

Also, Silverlight is evolving.  Microsoft seems to want to push people to develop and deploy stuff *now* but the runtime clearly isn't ready for it, and given the number of innovations they're packing in, expect a lot of churn on versions.  Hopefully they don't create a brand new Silverlight DLL Hell where you have to have a number of versions installed to cope with different websites, but given Microsoft's history, it wouldn't surprise me.  At the very least they'd better have a good auto-update mechanism.

Macromedia / Adobe put a lot of effort into getting onto 98% of desktops, and I'm a little disappointed that Microsoft is going to be able to achieve 90% anyway by just making it a critical update.  They won't just push Silverlight out, of course - the next version of OneCare or Windows Update or some other critical component will use Silverlight, so of course it will be required.  But this battle isn't really about how easy it is to get code onto the client; it's about designer and developer mindshare.

Anwyay my second point about Silverlight vs Flex is that Silverlight seems to be yet another forking on the .NET runtime space and framework, something which really bugs me.   

The .NET runtime exists for Windows desktops, mobile devices, and for the XBox 360, but you can't take binaries from any of these platforms and run them on the other, because the frameworks for all three are different.  And now we have a fourth option, Silverlight. 

With ActionScript and Flex, there's one language, and one runtime.  In my experience it's a cleaner set of technologies, and ready to use today.  And, Flex Builder (based on Eclipse) is slick.

It's pretty amazing that according to Googlefight there are already 7 million search results for Silverlight.  Wow.

(It's interesting that even though it's named after a Greek god, and also part of the Space Program, a Google search for 'Apollo' finds Adobe's technology first).