Silverlight: No news is bad news?
A few weeks back (yes, it's taken me too long to write this), Microsoft held their mini-PDC for 2010. I'll leave my larger opinion of the conference for another time, but for the most part it was an interesting view - as PDCs are usually - at what Microsoft feels you should be developing for "in a few years". However, some people noticed a particular technology missing from the keynotes: Silverlight.
Wait, wasn't Silverlight their latest, "bet the farm" technology? Pundits immediately began to read into the message. Or rather, the lack of a message. Blogs buzzed, tweats flew. Suddenly, Microsoft was on the defensive, a state made worse by the addition of an executive's quote and a feature announcement:
- "Silverlight is our development platform for Windows Phone", Bob Muglia (President, Server and Tools)
Imagine that: an executive promoting the current product, and forgetting about the bigger message. I suppose you can't really blame them, there are so many (sometimes conflicting) messages coming out of Redmond, if you promote one, you're demoting the others. Still, it would be nice as he is the President responsible for both tools.
- Microsoft to drop 3D, plug-in need in Bing Maps. Here we have one department at Microsoft making what to them sounds like a move forward, removing a dependency on a plug-in. However, it was spectacularly poorly timed as it came right after the above.
Six of one
Since then, Microsoft has done as much back-pedaling as possible to make sure everyone and their dog know that Silverlight is important. BobMu has gone back and "clarified" his message, more blog posts have flown, and now they're offering an online "conference" on December 2 to prove it. Really, they say, HTML 5 is nice, but Silverlight is nice too, and they're "for different things".
The overall message is that HTML 5 is important, but not real yet. Silverlight gives you much of what HTML will provide (and does on many browsers today, including the current state of IE9). In addition, animation on Silverlight is much better than it is with HTML 5.
What do I think happened? Well, Microsoft is frequently very event-driven. Developers get pushed to "get something ready to show" at the upcoming conference. There are times that I think without conferences, little would be released from Microsoft. I suspect that the Silverlight 5 developers were targeting Mix 2011 for their next big unveil, and didn't have any cool demos in a showable state. As the keynotes were already full o' Azure and Windows Phone 7, nothing was pushed, figuring that developers would be happy with the showcase of Silverlight on phones, as well as a number of other talks on Silverlight at the conference.
I suspect and/or hope this was a "learning experience" for them, and that they realize that ignoring one technology will invariably lead to people trying to read into the "message".
Half-a-dozen of the other
Now, I come not to praise Silverlight, but to bury it. In my opinion, Silverlight does have a place in the developer arsenal, but I think it is very limited. In short, the types of applications worth considering Silverlight for:
- Windows Phone 7: as it really is the only choice (other than XNA if you're writing games)
- Video streaming applications: less bandwidth than Flash, and did you watch the Olympics?
- Web flash items: but really, please don't.
- Internal business applications that either require some access to the local machine, or if you just hate the Web model of statelessness, and where you can control the desktop to ensure the right version of Silverlight is installed.
Both HTML 5 and Silverlight likely require you to change your programming model and design your applications differently. Both limit your target audience, HTML 5 to browsers that will support the eventual standard (which should be all of them, eventually); Silverlight to Macs and PCs (no, I don't count Moonlight) that actually have the Silverlight plug-in installed. You can create HTML 5 applications in any text editor and with any Web environment, you can create Silverlight applications in VS 2010 and/or Expression Blend.
There may be applications that require Silverlight (or Flash). I just haven't seen them yet (I don't count Twitter clients).
 As another example: document sharing and co-editing. First we have Docs.com, which allows you to "discover, create, and share Microsoft Office documents with your Facebook friends." Then we have SharePoint Online, which "provides a single, integrated location where employees can efficiently collaborate with team members, share knowledge and find organizational resources and information." Office Web apps, "make it easy to work together with everyone on your team".
 Just like Visual Basic and C# (and C++) are "for different things". Or Access and SQL Compact (or FoxPro, SQL Express...).
 Ignoring the likely arrival of some higher scale HTML animation packages. However, the overall message is surprisingly like another company's attempt to avoid mass migration to HTML 5.
 Adobe, in case it wasn't obvious from the context.
 Of course, they went through this when all the demos given were in C#, so all the developers assumed that VB was going away. Which lead to them giving all their demos for a while in VB, leading to cries of them ignoring C#. Meanwhile, the few remaining developers attempting managed code in C++ sat lonely in a corner.
 With apologies to Mr. Shakespeare.
 Of course, most of the Silverlight apps (other than video streamers or Web flash) look like the usual battleship grey apps we wrote in 1992.
 About 65% of browsers, compared to about 96% for Flash, according to RIA Stats.