Occasionally I write a rant or two and this one has been boiling for ages. First off you need to read Mike Watson’s Blog Post on Silverlight Ambiguity in Office 365: http://jmikewatson.wordpress.com/2011/08/04/why-silverlight-ambiguity-is-a-bad-thing-for-office-365/.
So now let’s get started. First off this post has been boiling since I have heard the question in one of my sessions last year “What do you think will happen to Silverlight now that HTML 5 exists?”. I brushed it aside. I ignored it when Microsoft did not mention much about Silverlight at PDC last year. I ignored it when MIX focused primarily on HTML 5 and treated Silverlight as there redheaded step-child. I even ignored it when the Gu left the Silverlight team to join the Azure team. I am no longer ignoring this topic. I just spent 2 days and many months prepping for my HTML 5 Session at SPSTC. I have been researching HTML 5 for a while. But this week I actually bothered to implement it and honestly I don’t understand the hype.
To get a nice little Datagrid in Silverlight there is a control that you can reference and drop into your XAML File, then you can throw in a little client object model magic to interact with SharePoint List Data. The binding is simple and it takes me about 5 minutes. The HTML 5 version involves me rendering an entire table with a header using some JQuery magic, then I have to go in throw in the client object model bits. I have to reference the JQuery include file, but this doesn’t get me the sorting and pretty functionality a data grid might get me. So what I did was I tweeted, I googled, and I found some solutions with the help of friends all over twitter. I had to throw in 2 more CS files and another include file for a control called DataTable. This DataTable library in JQuery basically renders itself on top of the table element I was already dynamically creating. So now I’m manipulating the DOM and adding overhead to my SharePoint Solution. Oh and get this everything is thrown into a Content Editor Webpart. So yeah at this point in time I’m pretty unhappy.
So now I have to go back and play the Devil’s Advocate again, because yes I did say Silverlight only had the one file. I kind of lied, because we have this whole client rendering tool installed on our computers. But I only installed one .exe to get it to work with multiple files and the dlls are all packaged into one solution. So where does this leave me?
Basically I understand that this is a standard across multiple browsers, but right now it feels very bulky and painful to use due to the lack of tools. Also, can someone please find a way to throw in all these files into one single package? Why can’t the W3WC create some type of packaging standard already? How old is HTML?
So now let’s get into browser support. It’s pretty horrible unless you are using Chrome or Firefox. I couldn’t get a single thing to work on IE9, despite removing all the evil tags in the masterpage that downgrade the file to IE8 compatible. I’m going to bet that most Federal and Corporate clients of mine are barely using IE8 and I’m betting IE9 is just a pipe dream. Most clients I know are barely using FireFox or Chrome and they are definitely not using the latest versions of these browsers. Yes Microsoft has shown us this shiny new Windows 8 that all the developers will go out and download when it becomes a public beta. I’m going to very much doubt my clients are going to do the same thing. Some of them are just barely upgrading to Windows 7.
Then we get into webcam and media support. The video tag does not support wmv files and barely supports mpeg files. What I saw is that it’s supporting across the board OGG Vorbis files and MP4/H.264 encoded files. Silverlight still does not support most mpeg files, but it does support MP4/H.264 files and WMV files. I’m not even sure OGG Vorbis works with Silverlight. I’m not even sure anyone is using an OGG Vorbis file to be quite honest. MP4s and WMV files seem pretty popular and perhaps MPEG files too. I know there is a slew of conversion tools out there, including Expression Encoder that will convert files to just about anything you would like. There is definitely no good HTML 5 tag support for webcams at this time that I could find. I couldn’t even go through and create a comparable webcam tool to my Silverlight snapshot control. I searched and I saw nothing really awesome out there. I’m sure I could find a nice JQuery tool, but honestly it’s not going to be anywhere near that of the maturity of the Silverlight version. So HTML 5 is not nearly as mature as I would hope in this area.
So basically for my demos I could convert 3 out of my 4 demos to a comparable tool in HTML 5. I was not really that impressed with each version. I think that if we had better tools and more functionality it would make life easier. The downside is that this is more open source, so with open source comes more scattering and dispersion. It means that to get what we want we will have to pray that Adobe, Microsoft, and whoever else creates some great tools for animation, video, webcam, and other such support. That said I think that Silverlight is more mature and will stick around for a long time after Microsoft declares it’s death sentence. I think that Microsoft might realize in the process supporting it and maintaining it in the future might be worth it. So I guess in conclusion HTML 5 is not really a threat to Silverlight in reality. The speculation and the hype is really what’s killing Silverlight and the lack of Microsoft support to maintain it right now. So Microsoft I have to ask you please come back to the dark side and maybe give a little love to my favorite tool, Silverlight.