(Apologies for the big rant, these are some ideas that have been rattling about in my head recently and your post made some things clearer in my mind. It's not meant to be a post of factual 'truths', but an explanation for my (and perhaps others) reaction against the web as the one platform to rule them all. So it's as much an emotional gut reaction as a logical one. )

I think this (desire for ubiquity/multi-platform) is the main reason I don't see eye-to-eye with the people who are pushing for web apps for everything. Web apps everywhere is great for large corporations that want to provide their service on as many platforms as possible. It's great for venture capital funded startups where the name of the game is to get as many users as possible and get bought out before your money runs out.

I'm a small indie dev though, I produce software (not software as a front end to a non-software business), and I'm not looking to become a billionaire (really!). I want to develop software because I enjoy it: to solve problems for real people, to solve my own problems. So really I don't care too much about being able to target every platform at once. I want to target the platforms I like, using the tools that I like, and as long as the platform has enough users to make it viable then I can do that with native software on open platforms (the latter is important and why I don't write iOS software, for example). There is the risk that the platform I target gets killed, but if a lot of people use it then that's generally going to be a slow process, and there is plenty of churn in web tech and standards anyway so it's not like it provides immunity to technological change. Additionally, I just have a hard time working with web technologies. I find them much harder to use, to the extent that if using html/css was the only way to write software I wouldn't be writing software at all and I'd go stack shelves in the supermarket instead. Maybe I'm just not smart enough to use them effectively, I don't know.

I guess this is partly the old 'software as craft'/'lifestyle business' argument, but it saddens me slightly that the big industry players are moving us away from the kind of industry where you can write software that interacts with some arbitrary bit of hardware in unsupported or unintended ways towards a much more controlled and profit orientated one (i.e. your software running everywhere being the most important criterion of all). Web people are not the only offenders here of course, but arguments against things like iOS have been well explored over the years.

Some people seem to view the web as some kind of beacon of freedom, the little guy fighting the big bad industry giants of Microsoft, Apple, Adobe and so on. But from where I am, the web is the big bad industry giants. Writing web software means being restricted to a very limited sandbox. The APIs available to me are decided by what a small cabal of powerful companies (Apple, Microsoft, Google, Mozilla, Nokia and maybe a few others) can agree on. None of their interests align with mine (why would they?).

If Gopher had taken off and supplanted native development to the extent that people were using platforms that could only run Gopher apps, would the current web even exist? All user facing software being written to a single standard and API has good things about it, but it also limits new ideas tremendously ("sure you can add X feature you just need to get it through this committee of industry heavyweights first and get them all to agree, and then wait for them to ship it").

What is important to me is that data uses open standards, whether at rest or in motion. If people control their data, and it is in open formats, then there is little companies can do to lock them in. Which is good for me as a dev since I can write software to help users work with that data. Web technologies don't do much to help me there, in-fact for the most part they have made it easier for companies to keep users data locked away on their server in unknown formats or behind proprietary APIs that I don't feel confident building software against. More concisely: email good, Facebook bad; FLAC good, Spotify bad.

I'm not arguing against all web sites/apps (or any hypothetical tech stack that offers a similar standard sandboxed environment). For some things it can be appropriate: wikipedia or hacker news or other inherently networked activities for example. I'd prefer something less byzantine of course, but I expect that if the web apps model does take off then ways of targeting it that mean you don't have to think about CSS or Javascript will get more traction, in the same way that I can write native code without having to worry about assembly (most of the time). Javascript as a compilation target will become "fast enough" on most hardware for general purpose things (not for absolutely everything, but that is just another manifestation of the problem of not being able to break outside the sandbox when needed). So the technical issues of css/javascript being horrible are not the main problem.

I come from a social science background, which perhaps taints my view here. I look for the power dynamics that limit my real world ability to do things, and don't really care so much about theoretical ideas about a perfect world where everybody works together in harmony to make the web a platform that does everything you could ever need in a timely way. My issue is about power: who controls the APIs that ultimately lets software control your hardware and data? With open native platforms the answer to that is anybody. With the web it's the tech giants alone.