Posted in:

Although I’ve never actually created a commercial project in Silverlight, I was an enthusiast right from the start (well actually since 1.1 alpha when it got interesting). Even though I’ve not touched it for years, it remains in the top five topics I’ve blogged about. And I’ve released six open source projects built with Silverlight:

Of course, everyone has been saying “Silverlight is dead” for years now, which was only half-true, because although it was getting no new features, it still worked just fine. But since Chrome dropped support a while back, and now Microsoft aren’t going to support it in Edge, it’s well and truly in the grave now.

With hindsight, it was a technology that arrived on the scene too late, with Flash already on the way out. But I was always impressed with the engineering that went into putting essentially the entire .NET CLR and a sizable chunk of the FCL into a remarkably compact download. It offered a way for C# developers to create games and media players in the browser at a time when the HTML5 audio and canvas elements simply weren’t an option. And it even ran on the Mac, which was a bold and significant move for Microsoft at the time. And of course it meant I could use C# in the browser instead of getting to grips with the quirks of JavaScript.

So rest in peace Silverlight. You were the right idea at the wrong time, and the wrong idea implemented the right way.

Comments

Comment by Shimmy

Hello Mark and thanks for your great blog!
Well I did invest a great deal in commercial Silverlight projects, and it was indeed a great technology. But the real question is - before we start to leave condolence candles and sympathy flowers on its grave - if MS is abandoning XAML for the sake of HTML. HTML5-JS-CSS (a compilation of error-prone shitty hard-coded languages - compared to C# & XAML) is MS recent trend everywhere, and that is to attract foreign devs, and I can understand MS' side in this if we think business-wise, but if XAML is here to stay, Silverlight can be revived, especially now that Apache Cordova is live and kicking, I wish MS would invest in a .NET Core for web (that is translated to local client code - TS&JS), and a XAML engine that emits HTML5 and CSS3, and there you have a plugin-less Silverlight that works natively on web, and on Android and iOS via Apache Cordova (until a C#-XAML solution is implemented natively per OS).
Really, there are few projects out there that started doing this but their all either going the Xamarin way or have different goal-set than "Implementing a C# & XAML engine for web".
Please read this post, on the .NET Foundation forum.

Shimmy
Comment by Brad Buhrkuhl

I would actually argue its implementation sucked. It immediately went down into unmanaged magic, was hard to debug, had perf issues, and was generally a bad copy of WPF/.Net that had lots of missing pieces and important stuff. It really was a big step backwards that only SEEMED like a step forward coming from the terribleness that is HTML+JS. Then it led to the windows store apps and their terrible copy of WPF which does the same "get to unmanged-land asap" pattern making it terrible to debug with bad performance and limited extensibility. If they had spent all of that time and energy making WPF and .Net better and more cross-platform, never doing SL at all, maybe the windows store apps could have been real WPF apps and not the mess they are today.

Brad Buhrkuhl
Comment by Mark Heath

Certainly the tooling left a lot to be desired. Debugging and unit testing were a real pain. I've not done enough with Windows store apps to have experienced where the pain points are yet.

Mark Heath
Comment by Sam Ray

Hi Mark !! Thanks for the awesome tutorials.
ok!! So i am making a silverlight application which plays 4 sounds at the same time using xaudio. Now to keep the size of the package small(since i have 100 sounds), I have added 100 mp3s to my project.I want to convert these mp3s to wav but the problem is that I am not able to add NAudio.dll to my refernces. I get error like: unable to add Incompatible references. Any help will be great!!
Thanks

Sam Ray
Comment by Mark Heath

hi Sam, unfortunately NAudio is not supported in Silverlight, as it makes calls to low level Windows APIs that are blocked for security reasons. You could look at my NLayer project which is a fully managed MP3 decoder, which would be possible to use in Silverlight.

Mark Heath