Well, yes, that'd be nice if we had a "interoperable universal interaction standard." But now the majority (and soon, almost everyone) will be using the internet on tiny personal computers (smartphones) that run native apps. Using a web browser will become less and less important or even relevant. In such a case the costs of optimizing for multiple run-times makes little sense. Really, abandoning the browser for native apps (in the old days we called them "programs") across the board makes more sense, and leave browsers to what they were originally intended for - document perusal and simple data collection.
And web browsers absolutely suck at UI for applications. Imagine the man hours and effort that went into building Gmail. It boggles the mind. Who would even want to maintain that?! All for something that could have been created as a native app much easier. There's a lot of reasons that people have gravitated towards apps on phones, but one of them is assuredly that the experience is better than using a web browser.
As someone who is old enough to have written "programs" and sees the instant relationship to "apps", I vigorously disagree. Lets consider these points:
1. Firstly there are competing platforms on which to deploy your programs. This means there is little common ground between the three major sectors of the market. You either have to pick one and lose market share or pick all and increase cost. Nothing (yet) has solved this problem adequately without increasing cost or decreasing agility and/or quality and consistency.
2. Each of these platforms has many barriers to entry from subscription fees, having to buy specific hardware and learn how to use it, distribution and vendor costs, QA cost and the risks of rejection and having your product closed suddenly.
3. All of the markets are primarily consumer oriented which makes deploying things to corporate entities a pain in the backside requiring more hoops to jump through.
4. None of the programs have longevity, a stable platform to run on, security guarantees or predictable security evolution.
So at the end of the day, you're pitching programs sold behind a walled garden by someone who wants a slice of your cash and doesn't give a fuck if the device works after you've sold it versus a platform with zero entry cost, total ubiquity and importantly absolutely no distribution or sales model at all so you can build your own?
Nope.
People take apps because they're cheap, free or the vendor is pushing them. That's it. If it wasn't the case, the first thing we'd do when we unboxed a mac or a PC was download and install facebook. Which we don't do.
You make some excellent and valid points, to which I don't necessarily disagree. I just think the inertia is towards the use of native apps over web browsers as delivery mechanisms for software - both mobile and PC.
A couple of points:
"Firstly there are competing platforms on which to deploy your programs."
I see the major web browser as those competing platforms. The effort to make something work on different web browsers is huge, almost, or equal to, the difficultly of choosing a cross platform development tool and targeting multiple OSes.
"...the first thing we'd do when we unboxed a mac or a PC was download and install facebook".
A native facebook application might be pretty cool. Really, do I do something much different when I use Thunderbird and eschew Gmail?
> and doesn't give a fuck if the device works after you've sold
Which is even worse on the web, where most of the time that someone also doesn't give a fuck about you at all and will just pull the product the moment he gets enough users to make an exit.
There are good things about having a working binary on your device; the author can't just take it away from you just because he doesn't care about the product anymore.
There are good things about having a working binary on your device; the author can't just take it away from you just because he doesn't care about the product anymore.
Tragically, in the modern software world, that often isn't true either.
Buggy junk gets shipped routinely even when people are paying real money for it. Software developers assume you'd love to have their regular updates, even if those updates also change interfaces and modify or even outright break/remove functionality however they feel like. If you don't apply the updates, you don't get security fixes either, so for any software that is at all involved with sharing data or communicating on-line many users have little choice. The idea of long term support for any stable software that people actually rely on is a joke for many projects. And that's before we even get to all the DRM/activation junk.
Ironically, the worst offenders are probably Chrome and Firefox. IME, the next worst offenders are often the supposedly high-end professional software that comes with a thousands-of-dollars-per-seat price tag -- assuming you can even buy a copy instead of renting it these days.
I'm mildly optimistic that a new generation of software seems to be arriving where people are expected to pay for good work but the prices are much more reasonable: not App Store peanuts, not Enterprice Pricing (call for a quote, because hell will freeze over before we publish any useful information publicly). A lot of these tools are relatively small or specialised, but they do their jobs well, they get very favourable feedback from users, and they have real, commercially viable development organisations behind them. Also, they rarely incorporate the user-hostile junk. So good work can still be done commercially, and of course for some of the important geek-friendly software like development tools and OS/server/networking infrastructure there are Open Source projects that are usefully stable, reliable and comprehensive. I look forward hopefully to a day when these kinds of projects are the norm for software we rely on, and we can all get on with using our computers without constantly fighting with them.
>And web browsers absolutely suck at UI for applications.
I prefer web apps to native apps. Day to day, at work, our CRM, bug/issue/project tracker, document management, help-desk software, phone system management, knowledge base, email, document/spreadsheet software are all web-based. Historically, those were all native 'programs' (as late as mid 2000s) and they were all crap.
>All for something that could have been created as a native app much easier.
I don't know about that. Some things are easier with html/css/js than with a native framework, but it's not just about developer comfort. Web applications provide huge benefits to users over native apps - that's why we're willing to deal with the development stack (which is getting better every year).
>Imagine the man hours and effort that went into building Gmail.
It's probably not that bad. Writing maintainable web code isn't that hard these days.
>There's a lot of reasons that people have gravitated towards apps on phones
Yes. It all really boils down to performance. If you could get 60fps with a web-app on mobile (which in principle you should achieve), I don't think users would care. You'd also see an even bigger uptake of webview-based 'native' apps (a la phone gap).
I use gmail everyday on my phone and have not bothered with downloading its app. It is pointless as I get a good enough experience on the browser and I do not want to deal with updates.
And native apps are good for things like Microsoft Office or things you expect to use offline and frequently. But if you make me download an app for Facebook or gmail and get me to update it every now and then, I will get pretty annoyed.
Well, I do use GMail off-line all the time - this (+ less crappy UX) is the reason I keep the app. Being able to browse and send e-mails shouldn't require being constantly on-line.
I've spent the last 8 months working on my own stuff. Before that I worked primarily as a backend engineer. My UI experience was limited. I did see the need for the skills.
I also believe that there should be at least a strong mobile offering with any web application now-a-days. That said, here's my thought on the matter.
UI sucks for everything. It really seems to have always sucked and probably will continue to suck. Swing is a pain to develop. WinForms too. I assume from looking at Cocoa code, so is Apple.
I've been working on a Pomodoro app during this whole time. Just getting lists to work efficiently in Android is a bitch. You have to serialize objects in and out of view items to make sure scrolling doesn't absolutely crap out when you've got a lot of items. Even with Swift, the same is fundamentally true in iOS.
Making a native app that looks 1) unique and 2) nice is terrible. You have to have a team with a designer and developer. Anything less and you're going to be out of the market longer. Making a native app that meets the two criteria above on multiple platforms is incredibly time consuming.
So I've now decided to use Ionic + Angularjs + Cordova. I've been on that platform for 2 weeks now. In that time, I've learned Web SQL, Angularjs, Ionic and enough Cordova to get plugins installed. I am also further along than I ever was in my Android development. It even looks pretty using the default Ionic styling (I got a free UI team by using their stuff).
So even if I accept your speculation that apps will dominate the world. I assume it will be developed on an HTML5 or HTML* stack. That does require "interoperable universal interaction standards".
I'll continue this speculation to say that I think the appearance of apps will merge. There is little reason to have a brand for Android and a brand for iOS and a brand for Tizen, etc. Ionic apps look like Ionic apps without having to spend a lot of GUI logic saying stupid things like, If Android, put the tabs on the top. Again, you need a common standard for this type of design and that is HTML.
P.S.
I know that games will suck in JS in the browser view. I know that JS has some serious issues with performance that will probably not be overcome for sometime. I've seen that analysis blog post too. But for CRUD apps like the Pomodoro or Foursquare or LinkedIn, Ionic and its ilk are perfect. The reason is, to beat the horse, is because of advancing open, compliant standards. CSS animations can now be hardware accelerated. JS performance is constantly improving (even if it is a horrible, horrible language).HTML is being banged out to house newer features. This isn't a polemic about how native has no values. It's a polemic against the idea that CRUD apps should have gone native.
And web browsers absolutely suck at UI for applications. Imagine the man hours and effort that went into building Gmail. It boggles the mind. Who would even want to maintain that?! All for something that could have been created as a native app much easier. There's a lot of reasons that people have gravitated towards apps on phones, but one of them is assuredly that the experience is better than using a web browser.