If I could have my ideal setup, rather than web applications we'd have a sandbox installed on our computers that would run applications that could be downloaded on the fly. Something similar to Java Webstart but without proprietary nonsense that plagued Webstart. That way, the web could stay the web and distributed applications could stay distributed applications and we wouldn't have to deal with the complexity or the compromises needed in using a document language to define application GUIs.
I'm happy for web-apps, they're clearly a good idea.
I'm less happy that everyone treats their webpage as an app, and thus crams it full of huge amounts of code, when really they're mostly serving text and images, with only little bits of javascript needed.
> and they have shoddy tools
I don't intend to argue with you, but my personal experience is one of discovering recently that javascript is a decent language and the browser dev tools, especially Chrome, are bigger and better than most of the C++ dev tools I've ever used. And they come with the browser, no crazy developer packages to install, and you can always debug on anyone's machine anywhere.
It is true that web developers usually have to make browser specific adjustments, but its fairly minor these days, an occasional polyfill you can find online, and I don't think this even compares, not even a little, to the issues you have to deal with when writing native cross-platform code (mac/win/linux).