I can see several obsticles that will hamper the development of a fully web native environment. This is no way an exhaustive list, nor is it necessarily complete or correct within each item, so take it with a grain of salt...<p>1) Security. By default, the web is untrustworthy. This means we have to treat any incoming web page or application as if it were filled with digital anthrax. The browser quarantines the javascript and HTML. Likewise, the server providing the service has to treat the input from the client in the same way to protect against SQL attacks and other hacks. This limits the user to a whitelisted set of features that were deemed safe by the application's programmers. Apps have less restrictions, but the parent platform still imposes significant sandboxing to prevent malicious attack.<p>2) Platform. While the ecosystem for Apps and web applications is indeed varied, they depend on the complex abstraction of the underlying platform. In the case of the web and app platforms, this is the web browser and tablet/phone OSs. In the case of the latter, that means the developer is beholden to "The Powers That Be" in order to get their app accepted. This works better on the web, but to get that freedom we sacrifice access to the underlying OS because of the security problems.<p>3) Persistent Connection. There is no such thincluding contenting as an offline web app. While tablets/phones can enjoy a disconnected existence, most rely on the assumption of constant connectivity, which is no way guaranteed. I ran across this issue driving across Texas, where there are HOURS of no signal on the interstate 10.<p>4) Data ownership, persistence, and portability. This is a nebulous area that is very important for anybody dealing with intellectual property. Most websites TOS claim they own your pictures and content, and many apps either don't save or have a proprietary format that can't be accessed outside of itself. Portability and persistence are linked because we are dependent on these services to be always up. What happens when something crashes or the company goes under?<p>5) Money. Ultimately, servers and developers cost money. A service is a recurring cost. The user pays for this, one way or another, through subscriptions or advertisements. Apps can be immune to this if they are entirely independent of the internet to function, but there still would be a cost if only to support the developer.