Each year triggered by a different comment or experience, here is my annual take about the web being horrible, or not that great, to build software nowadays.
This time the cliffhanger came from Ken Wheeler's talk at Chain React Conf, which you should check out. In fact, I suggest you go there and then come back to this article.
It is already a fact that the web is consumed by mobile devices more than desktop ones. This might vary depending on the site, for example this blog is an exception, but in general the metrics indicate that trend.
This is one of many context shift the web suffered since it was born. The world was way different when the technologies that make a website today were crafted, and most important we the users were really different.
And it is not a small detail, if you compare it with the programming environment for native applications, the web is old.
The web was needed for research documentation, so yes, if you look at it from the HTML side it kinda is like a text editor.
the web is old
Time went by, people started using the internet more and we the developers needed to achieve more complex requirements, not just write documents.
People in charge of making the web move forward tried to come up with new features that would make building a site easier. These people aren't only browser vendors or organizations, but also developers like you.
For example, we needed a better way to pick up DOM elements and manipulate them, so jQuery was created. Later, browsers included native methods for this.
# Moving forward
For the better or worse, this is the most common path the web growth goes: developers fill the gaps, and then a new native technology comes to fill it.
Right now, we are in the middle of a transition the web is making to become a more suitable environment for applications.
I can't predict when this transition is going to be over, but I can assure you the web will suck less. Developing for the web always sucks less than a couple of years ago, no matter when you are reading this.
The web platform is always catching up, and that means it's always kinda late
But the truth is the web platform is always catching up, and that means it's always kinda late. It also means is a dynamic environment in permanent growth.
I can invision a moment when we are going to be able to easily build complex applications on the client side and we will be complaining about the web being awful to build VR or AR experiences, or maybe not, who knows.
This last statement depends on the community, but also on browsers.
Besides the web being created long time ago, for different porpuses and having a less standarized or more informal growth path it also suffers fragmentation.
There is absolutely no way you can consume an iOS app outside the Apple ecosystem, but it is possible access the web from Apple, Google, Microsoft or other vendors' products.
The bright side is that competition generally pushes improvement along the market, the bad thing is fragmentation. Users, developers and even companies suffer it because of the extra costs it generates.
"Compatibility means deliberately repeating others mistakes."
I'm not saying I want this to happen or that it would be good, but imagine if we had a versioned web. Every year or six months all browsers would get updated with the exact same set of features, functionality and most important, with the exact same bugs.
All browsers would always need the same polyfills, there would be no user agent dirty checks, Progressive Web Apps would be every where, or nowhere at all.
Again, I don't know if this would actually help the web, but just imagine it for a minute, because that is one of the main differences between developing native apps and developing web apps today.
Imagine how performance is a central topic and a big concern today in web development, while not being that critical in iOS for example.
Or forget about this crazy idea, what thing would you change to make the web feel more like programming for native app environments?
No application approval or intrincated sign up processes.
So here is one good for the web. As soon as you have a url, your site can be accessed by anyone with a web browser.
Anyway, web applications will never feel native, right?
To be honest I don't want this to change. I don't want to completely ignore whether I am inside a browser or inside a native application.
But with so little the experience could definitely be more pleasant like fool adoption of web manifest options as in Chrome mobile with theme color and launcher icons on home screen.
Because of the pain points I've already mentioned in this article, the web platform is far ahead from the native development one.
I still think the web is great and it can quickly get better. We just need some people to sit, talk and discuss closer, and push it forward together.
I agree with you Ken, the web kinda of sucks, but the battle won't be fair until vendors treat it with the same love they do to their native counter parts.