Microsoft had a great vision for Silverlight, a framework and a set of tools that would dominate the web development landscape, but it fell short of that. There are rumors there won’t be any Silverlight 6. If that happens, how easy is for the Silverlight developer to transition to WinRT? Some numbers show that it is pretty easy.
Microsoft envisioned Silverlight back in 2005-2006 as a RIA framework and a set of tools that would conquer the web and beat Flash at its own game. But Microsoft has had mixed results with Silverlight. On the positive side, Silverlight was implemented in the latest versions of IE from IE6 to IE9, in Firefox, Google Chrome, Safari/MacOS/Intel, and some versions of Silverlight are supported by Safari/MacOS/PowerPC, Safari/Windows, SeaMonkey, and there were some plans for Opera. The framework was ported to Firefox/Linux as the Moonlight project through Mono team’s efforts. On the mobile, Silverlight is the major development tool for Windows Phone 7 and Nokia had plans to port it to Symbian, which won’t come true since Nokia has moved to WP 7 in the meantime. Silverlight has also moved to the desktop supporting the out-of-the-browser mode, and allowing the creation of RIA apps that run independent of the browser. All that looks very promising, but has Silverlight really succeeded?
According to StatOwl, Silverlight had a market penetration of 67.36% in Oct 2011, compared to 95.37% for Flash and 76.57% for Java, which good considering Microsoft’s technology is much younger than the other two contenders. But Silverlight is used for development by only 0.3% of the websites, with Java by 0.2% and Flash by 26%, while JavaScript is used by 90.9% of the sites, according to W3Techs. And that is certainly not good news for Silverlight which has not seen wide adoption for website development although it is largely present on the client. What could be the reasons for this lack of success in adoption?
Following are a number of major reasons, without pretending to cover all of them. One of the first ones was the fact that Silverlight was not clearly defined, and there was some overlap with WPF. Silverlight was even called Windows Presentation Foundation/Everywhere (WPF/E) in the beginning, and it was not very clear which one to use, Silverlight or WPF? Then it was the mobile explosion: iOS, Android, Symbian, and many other Linux-based OSes. It is obvious that supporting Silverlight on all these platforms will require a huge effort, not to mention incompatibility issues. Then it was HTML5 which is slowly becoming the main web platform while Silverlight remains with a Windows client position. All that forced Microsoft to reconsider Silverlight’s role, and they have done it generating more confusion among developers. For example, Microsoft announced Silverlight 5 RC before BUILD 2011, but they decided to drop support for all plug-ins, including Silverlight, in IE10 Metro coming with Windows 8.
Lately there has been rumor that Silverlight 5, which is supposed to be released to production soon, will be the last version developed by Microsoft and there are questions if there will be any service packs for it. If that is so, the technology’s future is compromised, having a small role on Windows’s desktop from which Microsoft is moving away with Metro. Where will Silverlight developers be left? Will they be able to use their skills to work on WinRT? Will Microsoft create a smooth transition path to WinRT for them?
Tim Greenfield, a Silverlight Insider, has compared the WinRT API with Silverlight’s, to see how similar or different they are and how easy would be for a developer to make the transition to Microsoft’s newer technology. He concluded that Silverlight has 1,582 types in common with WinRT, with only 607 types not found in Windows 8’s core API. That means 72% of Silverlight types are present in WinRT. Of course, WinRT has also many new types (4396) not present in Silverlight, dealing with new features. Greenfield also counted all the members of those 1,582 types (properties, method, events), resulting 10,375 common members, and there are 651 Silverlight-only ones. That is 94% overlap between common Silverlight members and WinRT. Greenfield concludes his study:
- WinRT includes a ton of new types. Some of these are certainly for new features such as the marketplace, accelerometer support, …etc. Time to start learning!
- Approximately 1/4 of the types in Silverlight are not present in WinRT. Some of these are no longer relevant like the types associated with the DOM bridge or Out of Browser support.
- When comparing just the shared types, SL5 starts to look very close to an actual subset of WinRT. This is good news for Silverlight developers because it means most of your existing code should easily port.
It looks like it is not that hard for Silverlight developers to transition to WinRT. Most of their skills can be reused writing applications for Microsoft’s upcoming platform, and the new Metro interface which, by the way, is based on HTML5. We are still looking for a clear position from Microsoft. Will they continue develop Silverlight? Will there be no Silverlight 6? Will they make the transition from Silverlight to WinRT somewhat smoother?