We've Been Here Before
So I've been in software development for over thirty years (I know, i'm old). And my experience with web development started about twenty years ago. So I've seen a lot of solutions to avoiding client-side development with Scripting Languages come and go. Here's a short list:
- Java Applets
- XAML Browser Applications (XBAP)
- Google Native Client
What Does WebAssembly Bring to the Table?
Specifically, I want to point out some basics of WebAssembly (maybe duplicating my last post), but to understand why it's an interesting beast:
WebAssembly is made up of modules which are distributable, loadable and executable unit of code.
WebAssembly is an underlying set of types, values and instructions that aren't meant to be written by developers directly, but compiled into by any language that wants to use WebAssembly as a target.
WebAssembly 1.0 is focused on delivering a standard with roughly the same features as asm.js as well as focusing on threads, zero-cost exceptions, and SIMD.
WebAssembly does define a text-format to support debugging and 'view-source' of an WASM package.
WebAssembly (today) can be build via a large number of languages/platforms including C/C++, C#, Rust, AssemblyScript (e.g. subset of TypeScript), et al.
WebAssembly doesn't think so. Here's a quote from their FAQ:
Package Loading: I don't want to have to pre-package everything in WebPack. I want a component based loading system like most mature systems have (e.g. .NET, Java, etc.).
Components in the DOM: Vue, React, and Angular style composition models are fine, but they still require I either just use HTML semantics or take over drawing with Canvas.
Tie CSS to Components: I like CSS as a styling language, but it's too global. Using component based CSS (which I know is possible, just not as easy as it is).
So do I know what will happen? Nope. No Idea. I've tied myself to other tech before that failed, so you probably shouldn't believe my prediction even if I had one. I'm no oracle.
But if you take time to look at WebAssembly and like what it's doing? Start using it. The arbiters of whether it succeeds aren't Microsoft, Google and Facebook. It's you, the working developer. It's open source: File bugs, put your opinion out there. Show off cool uses of it and comment about better ways to use it. Don't assume that there is some council that will make the decision for you. Play with it and see what you think yourself. It'll be fun, I promise ; )