In browsing through some of the fallout from the arrival of Facebook's Instant Articles, I stumbled across a couple of great pieces by Baldur Bjarnason (@fakebaldur) that go a long way to explain how we got into the situation we're in, and why it's us web developers who are responsible.
In the first, he takes on the ongoing debate about apps vs. the web, and makes the assertion that it isn't "the web" that's broken, it's how (we) web developers are using it that's broken (emphasis his):
Here’s an absolute fact that all of these reporters, columnists, and media pundits need to get into their heads:
The web doesn’t suck. Your websites suck.
All of your websites suck.
The lousy performance of your websites becomes a defensive moat around Facebook.
In other words, if the mobile web is dead, it's because we developers killed it.
On a side note, I wonder if this isn't alot of the reason that millennials have increasingly preferred using apps to browsers - because mobile browsing is, for many, a needlessly painful experience.
In the second piece, he even goes so far as to explain why people can't seem to get on the same page about how "the web" should be: Because they're all talking about different versions of it:
Instead of viewing the web as a single platform, it’s more productive to consider it to be a group of competing platforms with competing needs. The mix is becoming messy.
- Services (e.g. forms and ecommerce, requires accessibility, reach, and security)
- Web Publishing (requires typography, responsive design, and reach)
- Media (requires rich design, involved interactivity, and DRM)
- Apps (requires modularity in design, code, and data as well as heavy OS integration)
Just to drive this point home, he makes reference to the Apple Pointer issue from earlier this year:
This is just one facet of the core problem with the web as an application platform: we will never have a unified web app platform.
What Apple, Google, Microsoft, and Mozilla want from web applications is simply too divergent for them to settle on one unified platform. That’s the reason why we’re always going to get Google apps that only work in Chrome, Apple Touch APIs that are modelled on iOS’s native touch model, and Microsoft Pointer APIs that reflect their need to support both touch and mouse events on a single device at the same time. There really isn’t an easy way to solve this because standardisation hinges on a common set of needs and use cases which these organisations just don’t share.
A more conspiracy-minded individual might even believe most of the major vendors would be better off if the standards never really do work out, since it would prevent "native-esque" web apps from cutting into their bottom-lines in their respective app stores. But I digress.
Speaking for myself, I know that I had never really considered this point when talking / ranting about "the web". What's more, I wonder if half of our inability to come to agreement on some of these issues is simply a matter of terminology getting in the way of having meaningful conversations. I mean, apps aren't "better" than "the web", because they are essentially part of (one form of) it: they use the same web protocols (HTTP / HTML) as the rest of the "browsable" web, they just use them on the back-end before glossing it over with a pretty "native" front end.
In fact, one might argue that this is the reason that the one area of web standards that has actually seen some progress in the past few months is the HTTP2 spec - an update to how data is transmitted on-the-wire, which should bring notable speed and security improvements to anyone that uses HTTP (including all of those native apps I mentioned earlier). After all, improving this part of "the web" is the one thing that all of the players involved can agree on.