This blog post looks at the fallout after last week's PDC conference where Microsoft were quoted as saying "our strategy on Silverlight has shifted", and the resulting fallout in the developer community. In this post I will describe why I think Silverlight has a future ahead of it and exactly where that future lies.
Bob Puts His Foot In It!
Last week's Microsoft Professional Developer Conference (PDC) has caused quite a stir. It was clear from Steve Ballmer's keynote speech that HTML5 was taking centre stage, with Silverlight not getting a single mention in his opening speech.
The image below shows a word cloud showing the most frequent words in Steve Ballmer's PDC keynote speech, rendered using Wordle
This is in contrast to previous events such as MIX9 where (just over a year ago) Silverlight 3 took centre stage. This focus on HTML5, which many see as a competing technology to Silverlight was enough to get the community a little worried, however, it was the interview that Bob Muglia gave to ZDNet that really caused a storm.
The key quotes are given below:
"[...] when it comes to touting Silverlight as Microsoft's vehicle for delivering a cross-platform runtime, our strategy has shifted."
"But HTML is the only true cross platform solution for everything, including (Apple's) iOS platform"
The above statements caused quite a stir, with calls for Bob to clarify his statements which seemed to contradict the recent "Future of Silverlight" blog post which contrasted the difference between standardisation (HTML5) and innovation (Silverlight) to show a very positive future for the technology. I think this is the first time I had seen such a direct comparison of HTML5 vs. Silverlight from Microsoft's Silverlight team, and the arguments they made were quite compelling.
Bob Pulls His Foot Out Again
As a result of Bob's interview, which was commented upon by virtually everyone in the Silverlight community (Jeremy Likeness, Mike Taulty, and many many more), Bob quickly followed up with a blog post where he stated the following:
"I said, 'Our Silverlight strategy and focus going forward has shifted.' This isn't a negative statement, but rather, it's a comment on how the industry has changed and how we're adapting our Silverlight strategy to take advantage of that"
However, I think that the most important point he made came at the very end of his post:
"The purpose of Silverlight has never been to replace HTML, but rather to do the things that HTML (and other technologies) can't, and to do so in a way that's easy for developers to use."
I think it is people's misunderstanding of the differences between Silverlight and HTML that caused most of this uproar in the first place. It is this point which I would like to concentrate on, and hopefully provide a bit more clarity.
PDC is an Event
Before I focus on the differences between HTML and Silverlight I think it is worth noting that PDC is an event, and just like any other event it needs to be marketed in order to fuel people's interest and get them through the door. Microsoft embraces a very wide range of technologies, and if the PDC tried to be a true reflection of this diversity it would be very fragmented and hard to market. It is much better that the event focuses on something new and interesting to provide an underlying theme. This year that theme was HTML5.
Interestingly after MIX9 where Silverlight was the main focus and out-of-browser support was announced, there was noticeable unrest amongst the WPF community, they felt short-changed (4 MIX sessions on WPF to Silverlight's 31) and there was speculation that Silverlight would replace WPF entirely. However, when the knee-jerk reactions were forgotten about and a more sensible analysis of the difference between the two was considered (see Pete Brown's Future of Client App Development blog post for example), it was clear that WPF does have a future.
The Web Landscape
Back to HTML and Silverlight, if we look at the current landscape of the internet we can crudely characterise web sites and web based applications based on the degree of interactivity that provide:
In the above diagram we see a sliding scale of interactivity and complexity with a few well known sites positioned along this scale (don't ask me about what units I am using to measure each site!).
With the above sliding scale we can position the popular internet technologies based on their relative strengths and the types of site they are most suited to:
I have not tried to pin each technology to a specific location on the scale because in my opinion the boundaries between each are blurred ... a lot. It is possible to use any of the above technologies to create a web site / web application at either end of the spectrum, however, the further away you move from the 'comfort zone' of each technology, the harder the job becomes.
We'll start at the Flash / Silverlight end of the spectrum. Why not capitalise on the fact that these plugin technologies provide a controlled environment for your code to run in, providing great performance and virtually zero browser compatibility issues?
Whilst this point may not have been addressed in great detail for Silverlight, there are certainly numerous strong arguments presented on the internet which describe quite clearly why full-page Flash sites will never fully replace HTML (For a thorough analysis take a look at Emil Stenström's blog post on Flash vs. Ajax sites). The main reasons cited are:
- Splash screens - Flash / Silverlight sites need to load the entire 'executable' before they can render. Contrast this with how quickly the pages from Wikipedia appear.
- Maintenance - Quick fixes are often required for websites, with HTML / JavaScript this can often be left to the support team. For Silverlight / Flash this requires a full rebuild of the application.
(There are a number of other points, including search engine indexing, etc ...)
There is not a strong case for replacing simpler web sites with Silverlight. I think my fellow WPF Disciple Justin Angel's blog, which is powered entirely with Silverlight is unfortunately a good illustration of why Silverlight should not be used to replace HTML for the presentation of largely static content. Sitting here on a train using the pitiful WiFi connection I can see Justin's stylish loading 'splash screen', however, after I minute of waiting I grow tired of staring at his beard and sunglasses and little else!
On the flip-side, when HTML and JavaScript technologies are used to create complex applications, development becomes costly and complex. Cross-browser problems, lack of support for business concepts such as controls and validation, performance issues all start to have a significant impact on the development. To combat this more and more sophisticated solutions are being applied, from the numerous libraries that abstract the differences in browser DOM APIs (jQuery etc...) to Google Web Toolkit, which generates JavaScript code from Java (which provides strong typing and better structuring).
Interestingly in the book Google Closure the Definitive Guide, the preface describes how Google Closure (a JavaScript compiler and mechanism for checking types) was developed to combat the problems the Google Mail development team were experiencing in developing a complex JavaScript application composed of tens of thousands of lines of JavaScript. The take-home message of this is that for complex applications you need more than the JavaScript language alone provides.
Bob's Comments in Perspective
In the previous section I described how the web landscape can be illustrated as a sliding scale of complexity, with HTML and Silverlight at opposite ends of the spectrum and HTML5 sitting somewhere in-between. With this in mind, Silverlight developers should not fear that HTML5 will replace Silverlight. Whilst it is true that there is some common ground between the two, i.e. a certain interactivity / web-site complexity where the two technologies are equally suited, Silverlight users should feel comfortable that for the more complex problems, Silverlight has a clear advantage.
To repeat Bob's closing statement of his follow-up blog post:
"The purpose of Silverlight has never been to replace HTML, but rather to do the things that HTML (and other technologies) can't, and to do so in a way that's easy for developers to use."
I think it is the failure of the developer community to realise that there is little direct competition between HTML5 and Silverlight and failure of Microsoft's marketing to highlight this.
The Web Increases its Reach.
However, there are some important points to note in Bob's comments and his reference to iOS (i.e. iPhone, iPad etc...). Whilst I do not think HTML5 is a significant threat to Silverlight for web based application development, the introduction of a more diverse range of mobile devices potentially increase the market for HTML.
Most people who use an Android phone or an iPad do not use them as a replacement for their laptop or desktop PC. They use them on the train, in the coffee shop and at home on the sofa as a way to stay online and connected for more of their waking hours. HTML5 is a suitable technology for delivering a interactivity to a diverse range of devices and it looks like the overall market size is increasing.
However, if Microsoft can produce Silverlight plugins for these devices, on the Android phone for example, there is no reason why Silverlight cannot be part of this growing market, delivering more than just interactivity to the mobile platform.
Unfortunately, more recent news, like today's announcement by the Bing Maps team that seems to indicates they will be dropping their Silverlight based 3D libraries in favour of HTML5 is going to fuel the fire which Bob and Steve Ballmer are currently trying to dowse.
Regards, Colin E.