Because distributing software built for traditional desktop OSes sucks. Installing trusted code for your desktop OS is the past; on-demand caching of sandboxed code on the Web is the present and future.

The success of the web browser as an app platform has little to do with HTML and Javascript as languages (though they have been a decent base to build on). The web has been successful because of the browser's sandbox and HTTP's mostly stateless and cacheable distribution model, which are incredibly valuable app deployment tools that traditional OSes simply don't have.

The success of the web browser as an app platform has little to do with HTML and Javascript as languages

Of course not. They are terrible languages! They do, however, manage to get the job done. Coupled with the browsers sandboxing, standardised communications mechanisms and programming practices - and of course the all important easy distribution of web apps, since everybody already has a browser - and you have a good, solid and convenient application distribution (and execution) platform. Sadly, until I can choose what language I want to do my client-side work in (since Javascript is a clunky hack of a lnaguage and other languages are more appropriate for some kinds of work), I will not like client-side web programming. Perhaps native client will save me there. Hopefully.

Don't have to download or install anything - something that is evidently hard for a large amount of peple

Sure you have to download stuff - its just done in the background for you. Install? Thats a silly legacy concept anyway. Browsers DO sandbox code though, which is a good thing, but an OS could do that to "native" apps too.

Old versions aren't as much of a problem; updates can be just a refresh away

Desktop apps could be developed in ways that solves this too. Though the browsers "refresh" button is certianly a lot more convenient than anything we ever see used on desktop apps.

A browser is a consistent/familiar interface - people generally know how to interact with them

Hah, hardly. The browser, sure - but honestly, how much of the web really uses the browser interface? We have some basic navigation (switching apps, essentially - the address bar, bookmarks, back, forward) and a selection of currently executing apps (tabs, windows). The rest is done inside the browser as HTML - and this is HIGHLY inconsistent between websites/webapps. There is absolutely nothing consistent or familiar about them.

Runs on your iPhone, Android, PC, Wii, PS3...

Maybe one day the "standards wars" will settle and this will be completely true. Regardless, you could, conceptually, do this with traditional apps too. It would be a lot more dificult though - browser definitely shines here.

Because if it's on the web, they can collect (and sell) statistics much more easily. And stream ads. And perform proprietary operations without exposing their algorithm. And upgrade everyone at once (no legacy support!). There's no way to make a "no-cd" crack for web-based software; there's no instruction you can short-cut to get the premium version for free.

The list goes on. Eventually, I do actually believe we'll essentially use our computers as browsers with immense caches - that's basically all they are now (we download applications from the web & install them, we get updates through the internet, and we play games online with other people. What's the difference, sans installer?), it'll just become more definitive.

The walls in place have been low bandwidth and massively slower performance. Both are being torn down at a frighteningly fast pace, or sidestepped entirely (NaCl). Without those, there is precisely zero advantage to making "desktop" software, and a fair number of disadvantages.

Very little of what you said is specific to the web. The only difference is that if you build on top of the browser, the distribution system and distributed services layer is done for you. But you can do all of this in desktop apps too and more efficiently - but at a higher development cost.

it's on the web, they can collect (and sell) statistics much more easily

Nothing is stopping you from connecting your desktop software back to a central server in order to store statistics.

And stream ads.

I can stream adds too - I open a socket to my add streaming server and it sends me the next one. Or whatever. Nothing novel about the web here.

And perform proprietary operations without exposing their algorithm.

Again, I can do this too by following a browser/server model - I simply connect to my server and do it there. Desktop apps can use the internet too, you know.

There's no way to make a "no-cd" crack for web-based software; there's no instruction you can short-cut to get the premium version for free.

Once again, this is in no way specific to the web.

The advantage that web apps have is that everybody already has browsers installed and these browsers already contain a lot of what applications need: a way to display an interface, a means of scripting client-side in order to perform local tasks without having to cross the network and a standardised communications protocol. On the server side, there are a set of frameworks to make use of this. You could do this with other apps too, if you really wanted. The only thing web apps have over other kinds of apps is ease of distribution - because everyone already has web browsers.

On the flipside, desktop apps have advantages too. Maily performance and fine grained control over the computer and interface. In theory all of this will become available in browsers eventually, but honestly, as long as javascript is the only reasonable choice i have for client-side programming, I'm not going to be much of a fan (though NativeClient could fix this!).

If everything is moving to the browser, why are we still using fancy operating systems? Really, all we need is some local storage (for caching things, mainly), some ethernet and wifi drivers, usb drivers (for reading external drives, cameras etc), memory card reader drivers, some kind of video driver and.. well, a browser. No need for fancy GUI systems (outside of the browser), no need for other apps. No need for media players (outside of the browser) and so on. I suppose things are slowly moving this direction. Unless native client or something similar takes off, though, I'm not terribly interested - Javascript is a terrible hack of a language.

Not specific to the web, no. But note how few have done it, and how many people resist it (application-specific firewalls and paranoia over applications "phoning home"). A large part of the point of all this is how much easier it is for the web, and how much more readily people accept it.

Though how is not having a crack not unique to the web? And before you say you can send different versions of the application, remember there is copy/paste. The millions (billions?) of premium-version pirated copies of applications floating around suggest otherwise. But when was the last time you saw additional Google storage on a torrent network?

And no, currently, browsers aren't up to the task of replacing desktop apps. Nowhere near. NaCl provides a rather large open door for the possibility, though, and you can bet other browsers will follow suit; it's a killer feature.

Its not unique to the web. It has little to do with the web and more to do with a thin-client client-server model. Take, for example, MMORPG's - these are typically dificult or impossible to crack (sure, some have replacement servers, but they're rarely as good as the original and you can do the same for SaaS web apps too, if you really wanted to). I'm mainly arguing against the idea that the webs positive features are unique to the web - they're not, they come from the webs underlying technologies (client-server, thin-client..) and these could be implemented by desktop apps, if one really wanted to. The one place where the web wins hands down is user acceptance. Everybody has a browser and nobody minds the browser phoning home, as you said, yet they are paranoid about desktop apps doing so. This is where the browser wins - the rest can be done elsewhere too.

NaCl may change everyting, though, when it catches on. That will be certainly interesting to see and, while I dislike web apps right now, NaCl has a good chance of changing my mind. I'm certianly not against the things you mentioned - they ARE desireable traits, after all.