I'm partially worried about WebAssembly. On one hand it opens up new possibilities... on the other hand, due to backwards compatibility I think that the future will look like this:
- 1 browser tab: Java runtime environment compiled to WebAssembly, loaded by some sort of enterprise app I'll have to use at work
- another browser tab: .NET BCL compiled to WebAssembly, loaded by another sort of enterprise app I'll have to use at work
- yet another browser tab: some sort of other C/C++ runtime compiled to WebAssembly, loaded by fancy site, let's call it XMail
- and yet another browser tab: another C/C++ runtime loaded by another fancy site, let's call it Ywitch
- a million other tabs with Javascript frameworks
From a certain point of view diversity is good, on the other hand there's so much fragmentation. One of the dreams when computers appeared was that programmers will build libraries that everyone will use and people would just build on top of these libraries, reaching ever higher.
Instead, we have I don't know how many re-implementations of things in various incompatible/slightly incompatible languages. And that's just for OSS, nevermind the billion proprietary re-implementations.
Truly the Tower of Babel.
As bad as Javascript is generally considered, from this philosophical point of view at least we seemed to be on the right track...
Can we all solemnly swear that we will never port the JRE to webassembly? Please? I mean, it's ridiculous to have Java Assembly -> WebAssembly -> CPU Assembly. Actually.... this is missing some more abstraction layers, like a precompiler or two - let's have Tomcat and Groovy or something on WebAssembly :D !