I’m back in Seattle, fresh from the hype of MIX 07, where the silicone-to-flesh ratio is about the same as it was in Vegas, only we wear our silicone on the outside of our bodies in the form of bluetooth headsets (props to Colin for that joke).
The big news at MIX this year was Silverlight, which, as my old boss reminded me, was the big news last year, only back then it was called WPF/e and still in alpha. Now there’s a fancy new logo, beta release and even a ship date. I thought I’d try to coalesce some thoughts about what Silverlight might mean from the perspective of a Flash developer, media wonk and guy who tries to think about the future. I should point out that I currently work for msnbc.com as an “editorial concepts producer” (actual job title!), on the Microsoft campus in Redmond and have seen demos of Sparkle WPF/e Silverlight in various incarnations stretching back to about 8 months ago. But, being that we are merely in the “penumbra of the darkside” as an old mentor likes to say of msnbc, I don’t have any insider info. I’ve been a Flash developer for about seven years now and attribute a great deal of my receding hairline to trying to script in Flash 4.
First, a few terms
Ok, a quick baseline for the things I know (or, at least think I know) to establish where I’m coming from, not so much to supplant the work of trolling Wikipedia for half an hour. Mistakes are bound to be made, feel free to point them out.
Adobe Flash - a web technology with ten-plus years of history, originally started as a vector animation tool that has grown in to a full-blown web frontend application builder. Has a built in programming language called Actionscript, based on ECMA-script (from which Javascript is also derived), that is fully object oriented. Supports a variety of rich media, including video, and is probably the most popular web browser plug-in in the world. Flash files are most commonly built using the Flash authoring tool from Adobe but other authoring tools are available, including the more developer centric Flex.
Adobe Apollo - as popular as Flash is, it’s still (mostly) limited to running inside of a browser and doesn’t allow for any kind of desktop-like application development. Apollo is a framework for using standard web technologies like HTML, Javascript and Flash to build Rich Internet Applications (RIAs) that have the feel of desktop apps, can run outside of the browser, but are also heavily integrated with the internet (keeping user data on an always accessible backend server, for instance). The Apollo runtime will be cross platform and Apollo applications can be built using any standard IDE, Flash or Flex. As of this writing, Apollo is in beta with plans for an official 1.0 release in the second half of 2007.
Microsoft Silverlight - formerly known as Sparkle and Windows Presentation Framework Everywhere (WPF/e), Silverlight is a cross platform runtime for building internet applications in the browser, similar to Flash. Silverlight is built on several technologies incorporated in to Windows Vista, including the .NET Common Language Runtime (CLR), the Windows Presentation Framework (WPF) and Extensible Application Markup Language (XAML). Silverlight apps can be programmed with any language supported by the .NET CLR, such as C#, JScript or IronPython; the Microsoft Expression Suite is used to build XAML-based vector interfaces. Silverlight supports rich media such as video using Windows Media and is currently in beta, with a 1.0 release planned for later this year.
What’s this about the future?
So, the stars are aligning for a future in which apps live and work on your desktop (or in your browser), keep your data accessible in a variety of places, and even let you work when you’re not connected to “the cloud”. Obviously, Adobe is hoping to leverage the thousands (millions?) of developers out there who know HTML, javascript and Flash. Microsoft is clearly hoping to build on top of the huge developer base already building apps for Windows and extend that to the web since, after all, Silverlight is really just a subset of all of the technologies for building apps for Windows Vista.
Predictably, the battle-royale chorus is already being sounded. Just google “flash killer” — Silverlight (and all of it’s various codenames - WPF/e, Sparkle) practically pwns all the results. So, while “Microsoft debuts ‘Flash killer’” makes for great tech-magazine headlines, I don’t think it’s possible, nor do I think it’s even a goal. Microsoft knows the direction the industry is headed and needs Silverlight, not to “win” or “kill Flash,” but to stay relevant.
Of course, Adobe and Microsoft are but two players amongst many, including Google, who seems to be banking more on keeping things in the browser and continuing to push the limits of AJAX. The next version of Firefox, with which Google has a very cozy relationship, has already announced that they are building an offline mode. Add to this myriad smaller players like Joyent and Zoho and the landscape for Rich Internet Apps is already looking very full, despite everything still being beta. This is, of course, great for those of us who build web applications because it means we only have more choices available to us and all of this talk about someone winning or losing can be relegated to bloggers who tend to talk more than they code.
Microsoft is the underdog here
One of the interesting things to watch is how Microsoft behaves in spaces where they aren’t already the entrenched leader (or, convicted monopolist), which basically means anything outside of the desktop operating system and office suite space. Of course, Microsoft is a vast, sprawling company, but they make the bulk of their rather sizable profits year over year from those two core businesses.
In the case of Silverlight, they’re actually doing a lot of things right, not just from the perspective of making money and courting developers (two things Microsoft excels at), but in terms of actually doing the right thing. The runtime is cross-browser and cross-platform. They follow standards. They even observe the idiosyncrasies of ported dynamic scripting languages. Microsoft knows that they’ve got a huge hill to climb if they want to be a player in this space and their business practices of the mid-90’s aren’t going to serve them well here. Of course, you can argue that any platform that relies on closed, proprietary, vendor-specific runtimes is the wrong thing, but, thankfully, Mark Pilgrim has already trod that ground in a much more clever and succinct post than I could hope to replicate.
In a way, this puts Silverlight at an advantage over Flash, because Microsoft gets to rethink some of the conventions that Adobe is stuck with to support backwards compatibility. Not to mention that, for better or for worse, Flash has a richer history of being the perfect tool for wasting the world’s time than being a serious development tool (though Adobe is changing that with Flex).
Should I rebuild my cool new web 3.0 in Silverlight?
At some point during all the MIX hype, my boss asked a few of us “So, is there anything Silverlight can do that we can’t already do in Flash?” It’s a question a lot of folks are going to be asking themselves pretty soon and, the honest answer that I have, based solely on the demos I’ve seen (haven’t even had a chance to install the free software we got) is “not really.” Silverlight has some pretty cool features and actually does a good job of rethinking how developers and designers can work better together, but I can’t remember seeing a single end product built using Silverlight that couldn’t also be built using Flash. There’s no single “killer feature” that’s going to cause Flash devs the world over to start adopting Silverlight en masse.
What Silverlight does provide is another option for delivering interactive, internet enabled, media rich applications over the web. If you’re already building .NET applications, or have a video workflow that depends on Windows Media, or have a huge team of developers and designers that struggle to mesh, there’s now a new option to evaluate. Of course, Flash has a huge developer community, mature cross-platform authoring tools (not just runtimes) and a massive client-side install base. Let the future begin.