By now, everyone has heard of Silverlight (previously WPF/E), Microsoft's answer to the Flash player. There have been a lot of posts on the topic of Flash versus Silverlight, but I thought I would chime in with my own thoughts on the subject. I have not played with Silverlight in much depth, so please feel free to correct me if there are mistakes.

From my perspective, the discussion can be broken into four categories: opportunity, runtime, tools, and intent.

Opportunity
As a professional developer, one of the most important aspects to consider when deciding what technologies to embrace is the opportunities they provide. This includes opportunities for advancement, promotion, and financial recompense for the time you invest to learn the technology.

In the short-term Silverlight offers a lot of opportunity. Microsoft has *really* deep pockets, and in typical MS fashion they are throwing a lot of money around to convince developers that Silverlight is worth learning. I know a number of Flash developers that are currently making decent money working on Silverlight projects that are directly or indirectly funded by Redmond. Adobe simply cannot compete in this respect. They have capital, but not the kind of "buy a small country" cash-on-hand that Microsoft has.

Over the longer term, the underlying knowledge you gain from Silverlight development is applicable to technologies that are unlikely to go away anytime soon (WPF desktop development, for instance). However, if you're really interested in building cross-platform web interactive, Silverlight's opportunities largely hinge on its success as a platform, and that depends a lot on the other categories in this discussion.

Summary: Flash may not have the gold rush opportunities of Silverlight, but it is a very entrenched technology (98% installed base, 85%+ for Flash Player 9) that will continue to expand its reach, and offer stable growth in web interactive (and beyond) over a long period. There's money to be made in Silverlight development right now, but its future is less certain once MS stops throwing money at it. However, it is worth considering that the skills you acquire using Silverlight will be fully applicable to other Microsoft platforms.


Runtime
Most of the discussion of the two technologies has focused on the capabilities of the virtual machines. This is valid, as the success of a platform will be determined largely by its capabilities, which is a function of the player (AKA runtime, plugin or Virtual Machine). I haven't done a lot of work with Silverlight, but from my reading, the current 1.0 beta VM is basically a glorified SVG/WM plug-in. It doesn't support components (AKA controls), doesn't have a built in language interpreter, and doesn't have much in the way of exciting features. This is obviously going to change as new versions are released (much of this is in the 1.1 alpha), but Adobe has a huge lead, much more experience with cross-platform development, and a better understanding of the target market.

Plug-in size and availability are also factors. The Flash player, which contains two VMs, and a ton functionality is only 2MB, versus 1.2MB for the anemic Silverlight 1.0 beta plugin (5.3MB MB on the Mac). The 1.1 alpha with dynamic language execution is already up to 4.2MB (10.3MB on the Mac), and I would anticipate that it will expand even more. Size isn't nearly as big an issue as it was a few years ago, but it still impacts adoption rates. Silverlight will have to be installed manually by Mac users, and as an update for Windows XP users, whereas Linux support is likely a no-go. On the other hand, the Flash player is already on 98% of web-connected computers; has auto-update; is available on Windows, Mac and Linux; and is the most rapidly upgraded software product ever released (in terms of user adoption of new versions).

Summary: Silverlight has a lot of potential in this area if Microsoft can innovate. Unfortunately, I have yet to see evidence that they can, and Adobe has a massive lead, both in terms of capabilities and adoption.


Tools
I've looked at the Expression suite and I'm impressed. Microsoft has a big advantage in this category. They can learn from Adobe's mistakes and duplicate their successes. Microsoft also has a lot of experience building really good developer tools, and it shows in their expression tools. Adobe does not have much experience building developer tools (this also shows). Microsoft also got to start fresh with Expression, whereas Adobe has to struggle with ten years of legacy code and workflow in the Flash authoring environment. Adobe is also doing a terrible job integrating their tools to create a cohesive workflow (ex. Flash and Flex).

On the other hand, Microsoft has no experience with designer tools, and virtually no understanding of designers. Their tools will only be available for the Windows platform, which cuts out half the designer market right from the start. At last year's Microsoft MIX conference, one attendee asked Lynda (of Lynda.com fame) during her session how she would convince designers to switch to Windows so they could work with Expression, her response was that as a Mac user herself, she wouldn't switch. I applaud Lynda for her honesty, and think it clearly demonstrates the resistance Microsoft will encounter trying to move the creative community onto their tools.

Summary: Microsoft can and will build a better developer toolset, and provide a better story for tool integration. However their unwillingness to support Macs, and their inability to truly understand creativity or designers will be their Achilles heel. Adobe has a deep cultural understanding of the creative process, and experience with cross-platform support that Microsoft can't match.


Intent
While easy to overlook, this is a very important issue. Why is Microsoft building Silverlight? What are their long-term intentions? I can only guess, based on past observations, but Microsoft is pretty consistent in its behaviours, so I don't think this will be that far off.

Microsoft is notorious for its strategy of jumping into technology sector once it has been proven, throwing a ton of money at it to kill the competition, and then letting the technology stagnate once they have a monopoly. Microsoft also has a long history of abandoning cross-platform support for technologies at a whim. Literally every cross-platform product they offer has been dropped or crippled in some significant way (MAPI in Entourage, IE, VBScript in Office, Windows Media versioning and DRM, heck, even Halo). I see no reason this trend would not continue with Silverlight.

Adobe isn't a benevolent overlord, but they do have a proven track record of successfully supporting multiple platforms, and of continuing to innovate even when there was little competition in the web interactive space. Silverlight should force them to do this even better – for example, I wonder if we would have seen Flash player 9 for Linux as quickly if there was no Silverlight.

Summary: Cross-platform support for Silverlight is not in Microsoft's best interests if they kill Flash. Neither is continued innovation. As a long time Mac user, I really don't trust Microsoft's intentions, but I do welcome the pressure Silverlight places on Adobe to continue innovating.


Conclusion
In summary, while I don't entirely trust Microsoft's intentions, I do think that Silverlight has potential, particularly in the short term while MS is still in "buying love" mode. Microsoft's developer toolset is likely to be more robust, and have a much better integration story than anything Adobe can offer in the near future, but being Windows-only makes the tools inaccessible to many developers and a large portion of designers. I think the Silverlight plug-in will be an adequate runtime, but it will never pack the same punch per byte that the Flash player does, and it will never enjoy as large of an installed base.

I welcome the competition that Silverlight brings to the space, and will continue to follow its progress. I'm not opposed to doing development on the platform (I will likely continue to play with it on occasion), but in its current incarnation it seems like a big step down from Flash.

What are your thoughts? Comment below.