Rocky Lhotka

Silverlight didn’t fail due to any technical reason. At a technical level, by the time Silverlight 4 and 5 came out, it was extremely powerful and we used it to build some amazing enterprise software for our clients.

But in 2008, when Silverlight was really gathering traction, Apple came out with the iPad and a lot of people (especially the media) saw this as the start of the “post-PC era”. There was an irrational assumption that the PC was done for, and computing in the future would be done on people’s personal devices (BYOD), and that most of those devices would be iPads.

That would have been fine, but Apple disallowed the use of browser plug-ins on iOS. I’m pretty sure they didn’t actually care about Silverlight, they were trying to kill Flash (good on them!). But they inadvertently killed Silverlight too.

The mood at the time was that software needed to work on the CEO’s iPad. A lot of software at the time was written in Windows Forms or WPF, and increasingly Silverlight. None of which could run on the CEO’s iPad.

Objectively what happened was really stupid. Because of the desire to run perfectly good software on an iPad, CEO’s drove billions of dollars of IT spend to rewrite software to have a web UI - the only safe technology to make an app available to PC and iPad users.

The whole BYOD and iPad-for-enterprise-computing didn’t actually happen in any meaningful sense. Anyone who thought about that concept rationally knew it couldn’t actually work, but in 2008 people were so excited they were oblivious.

However, there really has been some value to what happened. Sure, Apple killed Silverlight, and that was sad. But it did drive the industry almost entirely to the web, and demand for a good user experience has driven the web to mature quite a lot.

In my view, it has pushed the web to the limits of its capability at an enterprise level. JavaScript in particular, has proven to be difficult to manage for big projects, though TypeScript helps extend it further.

The thing is, now and into the foreseeable future the browser is the only viable option for client-side software development. So there’s a lot of pressure to find something to truly unleash the browser as a full-fledged computing platform.

The real change, in my view, is coming with WebAssembly. WebAssembly allows developers to write in virtually any language (C, C++, C#, Rust, Go, …). That code is compiled to wasm (webassembly), so it can run in the browser.

This means we are able to escape the monoculture of JavaScript and it opens up client-side browser development in many ways. Much more like what we enjoyed for decades on PCs.

Because WebAssembly is an Internet standard even Apple is supporting it in their browsers - including on iOS.

And because C# has a preview that works quite well in WebAssembly, you can (today) build smart-client software that runs in any modern browser. Not exactly Silverlight, but really not that far off in principle.