In December 2011, Microsoft released version 5 of their Silverlight platform. With that release, they filled in all of the remaining gaps and made Silverlight an excellent platform for internal line-of-business applications. It provides web-based deployment, COM integration, support for in- and out-of-browser modes, and all that using C# and XAML. What could be better for the thousands of run-of-the-mill data entry applications that are written everyday inside large corporations?
And yet developers are afraid to use Silverlight. Most devs I talk to think it is somewhere between dead and dying. Microsoft abandoned it, didn’t they? Aren’t you supposed to use HTML5 now? There is some truth to this, but plenty of confusion as well. In this post I’m going to update my position on Silverlight since I last wrote about it, and attempt to give developers a more clear direction on when it still makes sense to use Silverlight, and what it will mean for your career to invest your time in learning it.
Before I dive in, let me preface this by clarifying the extent of my knowledge on this subject. I have no insider information on Silverlight. I am simply a fan of the platform. But, I have done extensive research on the viability of Silverlight as a development platform for my day job. My development shop has developed significant internal, line-of-business applications on top of Silverlight since the version 4 release in 2010. Due to the recent turbulence in the Silverlight world, I have invested a lot of time over the past few months speaking with Microsoft reps, control vendors, and other architects and developers, in order to come to a reasonable stance on whether we should continue our investment in the platform. So, I believe I have a reasonably thoughtful stance on the current state of Silverlight and what the future looks like for the platform.
Current State of Silverlight
Silverlight 5 was just released, and there has been no information from the mothership on whether or not there will be a Silverlight 6. However, previous versions of Silverlight have only had a short support window, whereas SL5 has been given a support window through 2021. This, along with Microsoft’s focus on HTML5, the lack of development on Moonlight, the continuing stance of mobile platforms not supporting browser plugins, and the hints I’ve gotten from Microsoft employees, leads me to believe that SL5 could very well be the last version.
Silverlight is currently the native platform for developing on Windows Phone. For desktop development, it is fully supported for the major Windows browsers, as well as some browsers on the Mac. On Windows, Silverlight apps can be run outside of the browser like any other desktop application (though still with the limitations of the sandboxed environment).
From a feature perspective, I consider Silverlight to be “complete”. All of the problems that I had developing LOB apps on SL4 were addressed in SL5. While they could always add more controls, fancier syntactic sugar, etc., the platform has no major gaps that can’t be filled by control vendors or utility libraries. Searching a bit on the Internet, it seems that the wishlists for Silverlight 6 don’t contain anything major.
In my experience, Silverlight is hands-down a more productive UI development platform than anything else currently offered in .NET. In addition, applications created in Silverlight generally result in a better user experience due to smoother screen transitions, forced asynchronicity, and richer controls. Silverlight also pushes developers in the right direction architecturally with distinct UI, service, and business logic layers. Ignoring the worries of future viability, Silverlight would be my go-to choice for almost any LOB application, and it is the UI platform I tend to use for demos and presentations.
What the Future Holds
Silverlight will not run inside the Metro UI. However, it will be fully supported in Windows 8 “Desktop Mode”. In my opinion, this is the mode where most “real work” will be done. Major applications such as Photoshop and Visual Studio will never be rewritten as Metro apps. And while Office 15 may ship with a Metro UI, I don’t expect that it will support all of the features of “classic” Office. Because of all this, and because of all the existing enterprise software out there, I don’t think that enterprise users will spend much of their time in Metro. In fact, due to the difficulty large enterprises are having even migrating to Win7, I wouldn’t be surprised if many enterprises skip the Win8 release altogether, just like they did for Vista.
Does it make sense for my company?
Whenever you are choosing a particular architecture for an application, it boils down to weighing different trade-offs. There is no perfect technology, and no one solution is appropriate for every problem. Silverlight is the correct solution for a number of problems, but it is definitely the wrong solution for a number of others.
As I’ve already opined in this as well as my previous post, Silverlight is currently optimally positioned for internal, line-of-business applications. These are the types of applications that need quick-and-dirty data entry screens, Office integration, dashboards, printouts, and other similar UI constructs. Enterprises want rapid development, simple deployment, and standardized technologies. Silverlight meets all of these needs quite well. And since an enterprise is able to control the hardware and software platforms of their users, they don’t have to worry about users not being able to run Silverlight applications.
There are other scenarios where Silverlight may be the right choice, even for public websites. There are certain requirements that HTML5 cannot meet, such as DRMed media, which Silverlight can provide. Browser plugins are always going to be ahead of the game in features compared to HTML due to the nature of web standards. Entire committees have to agree on a direction and many companies have to implement it before HTML can move forward. Conversely, a company can update a browser plugin to add a feature whenever they would like to, without have to worry about standards adherence.
Of course, a company with a public-facing website should not abandon HTML lightly. Using browser plugins does prevent some potential users from using your site. Depending on your company’s strategy, this may or may not be worth it. For standard, public-facing websites, developers should make every attempt to avoid plugins, Silverlight included, only bringing them to bear when there are no other options.
Does it make sense for my career?
Many of the developers I’ve spoke with lately are afraid to even get their feet wet with Silverlight due to its rocky future. They are worried that they will invest their time and energy into learning the platform only to have it abandoned by the industry within a short time period. Of course, every technology is eventually abandoned, and developers have to be constantly learning and adapting in order to stay ahead of this curve. But is Silverlight already past it’s prime? Should developers avoid even looking at it?
My opinion is that it is well worth a developer’s time to get to know Silverlight. Silverlight in itself is a very powerful technology that is still current technology and has a long term support window. It is not going anywhere immediately. In addition to that, Silverlight closely resembles Microsoft’s plan for the future: WinRT. Silverlight allows developers to create applications using C# and XAML within a sandboxed environment. And this is exactly what they will be doing when WinRT is released and companies start to dive into the frenzy to establish their products in Microsoft’s app store. A lot of the learning curve in Silverlight is getting used to XAML, and a constrained sandbox, forced asynchronicity, and many other concepts that will follow them into WinRT. Any time invested in learning Silverlight will allow a developer to get a head start on learning WinRT. And if Microsoft’s plan with Win8 is successful, this skill set will be in heavy demand.
Silverlight is by no means dead, and it still has a place in a well-rounded .NET developer’s toolbox. It is not the right answer for every problem, but it is the right answer for some. Silverlight 5 has just been released, and will be supported for many years to come. It provides all of the major features that a developer needs to create a very compelling application with a high rate of productivity. And any time invested in developing skills with Silverlight will translate nicely to WinRT.
The world is not black and white, and there are no silver bullets. You need to look at your requirements and determine if they would be better served by Silverlight, HTML5, or something else. But don’t dismiss Silverlight out of hand; the rumors of its death have been greatly exaggerated.
My opinion is obviously 100% correct. At least, that’s my opinion. However, if you are still aren’t convinced, here are some links to what others are saying on this issue.
- Telerik’s Platform Guidance
Telerik’s current stance toward various .NET technologies and when it makes sense to use them.
- Doug Seven’s Blog Article
Another post from a Telerik developer looking at WinRT and what it means for the current .NET platforms.
- Magenic White Paper: Assessing the Windows 8 Development Platform
This white paper from Rocky Lhotka and other Magenic gurus details the architecture behind the new WinRT platform that will be released with Windows 8. It analyzes the future of various UI technologies, including Silverlight, and discusses the migration path from these platforms to WinRT.
- Rocky’s Blog Article on Win8 and Enterprise Development
More from Rocky talking about WinRT, Windows 8, and the impact to enterprise application development.