After asking Chris to post his thoughts on the topic of Silverlight VS Flash from a .NET developer's standpoint, I wanted to post my thoughts from a Flash developer's perspective. I have been heavily involved in SL development over the past 8 months working for some big clients on big projects. I realize that's a relatively short period of time considering I've been doing Flash development for nearly 10 years, but I've gained enough insight in that time to write down some informed thoughts. Keep in mind that these thoughts are based on the current incarnation of SL2 (beta 2) and I'm sure some of this will have been addressed by the time SL2 drops in completed form.
Runtime penetration
No one disputes that the Flash player's penetration rates dwarf those of SL at this point. So the key here is the ability for Microsoft to provide a seamless install experience. Adobe has years of experience in this realm and have become experts of both minimizing the size of the runtime (squeezing as much as they can into every single kB) as well as providing a really simple install. SL has a much larger runtime to download and install (anyone know the exact size of the beta2 player?) which sets them back right from the get go. Obviously it supports a subset of the .NET framework so there are a lot of features there, but at the same time, it still lacks a lot of functionality already built into the Flash player (discussed below) which if/when implemented will only increase the player size. This is key, as having a bad install experience may turn a user away from SL, but could also turn a user away from other install processes (i.e., Flash player).
Workflow
Visual Studio is no doubt a great tool for coding. The ability to just plug in the SL development bits and start coding (only C# currently) is a dream for .NET developers. As Chris mentioned, leveraging existing knowledge is key and MS have done a good job of that. I have to say that the intellisense really is outstanding. Integration with the backend is strong, as should be expected. As Chris mentioned in the previous post, there are also lots of add ons which provide cool functionality. The biggest area where improvement is needed is in the designer/developer workflow. Firstly, even though VS displays the visuals associated with your XAML, you can't select or modify elements visually. You have to edit the XAML directly. Also, often it wouldn't display the entire "stage" in the display area but didn't give you the ability to scroll it so you could get it where you wanted it. Expression Blend is a step in the right direction to address this. You can create your XAML in Blend and then open it in VS, and your graphics are ready to go. The problem comes when you need to tweak your graphics. What I generally ended up doing was copying and pasting XAML back into Blend and tweaking visually there, however, there are issues if you are using custom XAML tags and such. So it ended up being a really painful process. On the flip side, you have Adobe's Creative Suite. The designer/developer workflow there is far superior at this point and is promised to improve with the addition of Thermo (as well as other enhancement I'm sure we'll see in CS4). If Thermo lives up to the hype, MS is going to have a lot of catching up to do.
Features
Though I've worked on several SL based projects, most of them had one thing in common - video. It's no secret that a large part of the initial interest in SL has been building either standalone video players or players that integrate into a larger app. Support for WMV is a driving force behind that. And for the most part, I think that's a good application of the SL technology. But the nod in overall feature set no doubt has to go to Flash. Things like bitmap manipulation, advanced text rendering, printing, skinning, 3D engine, and sound generation, which are all things that put the "rich" into RIA, are currently largely unavailable in SL.
Conclusion
There are several compelling reasons why SL should be seriously considered for certain types of projects. The same can be said for Flash/Flex. Based on my experience, the most critical aspect of this whole debate is knowing the strengths and limitations of either technology and making decisions based on that information. It would be ignorant to say that Flash is always the best solution in every situation or vice versa. Part of our job is to advise and help clients make informed choices. There will come a time in the future where you will be asked whether you think Flash or SL is the more appropriate choice for a project, so be prepared to defend your position.
In my next post, I'll discuss the heart of the issue...Silverlight VS Flash isn't necessarily the right way to approach this discussion of the 2 technologies.