One thing missing from the article: If you have a fullscreen mode, provide an alternative to the escape key for opening menus or whatever action you had bound to that key, because the browser interprets escape as a command to exit fullscreen mode. Plenty of the Humble Bundle asmjs games didn't get this.
That is a more serious question than it first appears at first glance.
Firefox, GCC, cat, gzip, PovRay are all things that should be potentially doable. Each one will not necessarily _have_ to be done, but the idea should be embraced to see if they are possible. If there is any reason why these things are impossible, that should be an area to focus on. Why is it not possible? Should it be possible, and if so, how to make it possible.
I can't wait until the tooling gets to where I don't have to debug natively first.
I perticularly ran into issue dealing with unimplemented functions in some POSIX libraries. Then I tried to use the source maps in a debug build to find out when and where they were being used during runtime because they would stop the rest of the program. Unfortunately I couldn't compile the debug build because emscripten kept getting stuck in the linking phase (I had to force quit). I hope one day this all works as well as the Android NDK.
You can use the other core, but you have to think of them a little like separate machines. They can't share memory, but you can pass messages between them very fast (using JS's underlying Trasferale Objects)
If you can use bump/frame allocators those 'messages' can be whole chunks of 'memory'.
It already does - just run your code in webworker. I am doing it at https://hashcash.io/
Detection of number of available cores is totally different problem. On the other hand, probably detecting number of cores should not be used in first place..
Shameless plug for my MIT licensed, experimental, mini C++11 multiplatform engine which has been designed specifically with emscripten in mind: http://floooh.github.io/oryol/