Not everything needs to be done on the web.
There, I said it.
Do you know why browsers are now using more than a gigabyte of RAM and half your CPU time on idle?
Do you know why there are only three “complete” browser engines in the entire world?
It’s because you keep shoving more unnecessary features into them.
- The web doesn’t need access to my clipboard.
- The web doesn’t need access to my location.
- The web doesn’t need access to my microphone or camera.
- The web doesn’t need to vibrate my phone.
- The web doesn’t need to read my battery’s status.
- The web doesn’t need real time communication.
- The web doesn’t need analytics support baked into the core.
- The web doesn’t need access to my Bluetooth devices.
- The web doesn’t need raw access to USB devices.
- The web doesn’t need GPU compute support.
The web only needs
- A read-only text document format (HTML)
- Maybe supporting simple forms for document searches
- Images, Video, Sound can be embedded if the user lets their browser to do so
- And Some styling (a tiny part of modern CSS, should not be essential)
Do you want to do something more complicated than this? MAKE A NATIVE PROGRAM.
If, however, you don’t need anything more, then DON’T. We don’t need more news apps, or any new apps for your food recipe blog, or your cat’s thoughts.
The web is the place for those. Keep them here.
But native programs are hard
If even half of the effort that went into adding all these unnecessary bloat to the web, went into creating robust and easy native frameworks, you wouldn’t be saying this.
Native frameworks all have died. And it’s the web’s fault.
Bonus: A vision of the perfect native framework
- Uses system widgets where possible (Windows, macOS)
- Supports extensive user theming in the cases where no “system widgets” exist (Linux, BSDs, etc.)
- Declarative UIs, maybe just copy a small part of modern HTML
- Copy Flexbox and CSS Grid for layout, keep the rest of CSS.
- No, you are not messing with your look and feel. If the user wants a certain look, you will obey that look.
- No lock-in to JS. There should be bindings for any language.
- Usually, bindings for C are enough. Other language communities will do bindings if you have C bindings to begin with.
Users don’t want to install programs
Because you have trained them not to. It’s that simple.
If you haven’t trained your users to slowly forget (or maybe not even learn) how to do anything outside a web browser, it’s your fault. You are to blame for this problem you are telling me about.
Installing a program is yet another thing my users have to do
If you’re expecting your users to use your website just by impulse, maybe it’s not a good site after all. If the user doesn’t want to install your program, more often than not, they have a good reason for it.
The web is secure
Is it? After all, the web can access my USB flash drive, it can generate cryptocurrency via my CPU power, it can take video of me, or record my conversations. It can fingerprint me on every site I visit, because everything the web can access is yet another data point to identify who I am.
Most of these will display permission prompts
And users will just click OK to get rid of them without reading it. If you think your users are illiterate enough to not know how to install programs, wouldn’t they still be illiterate enough to not understand what the meaning of a simple popup is?
And I don’t mean the contents of the popup, most can read it (they just don’t) and know what it means in the surface. But can they understand the reprecussions of that permission?
I have seen many phones and computers of less technological friends and family of mine that have notifications from dubious news sites. Did you think they thought about, and accepted most of those? No, they simply just clicked OK on the thing that came up and it went away.
Most sites don’t use all these features anyway. They don’t impact performance
Let’s do an experiment. Download and open up NetSurf, and open this exact page on it. Right now.
The only JS on this page is the comments list below. Feel free to disable it if you think it’s a fair-er comparison.
Also, you might want to use an alternate browser. One you don’t have open right now, as you probably have multiple tabs and extensions, which might effect the comparison.
Now, open your task manager, and see the difference:
Do you know why NetSurf is lighter than your current browser? Because it does not implement any of the bloat of the modern web.
Now, I am not saying go use and test for NetSurf. I am just saying the bloat you’re adding to the modern web is impacting the performance and resource usage of the browsers you are developing for, and by proxy, your website.
Browsers use more resources for security
If the web didn’t implement all this annoying mess of a feature set, browsers wouldn’t need any extra security measures past making sure they keep track of the length of their arrays and not using pointers after they’re freed.
By bloating the web, you increase the attack surface of your users.
By bloating the web, you are ACTIVELY MAKING YOUR USERS MORE VULNERABLE.
You are just against innovation
What is this “innovation” you speak of?
- Is it the fact that you still cannot read my SMS?
- Is it the fact that you still cannot read what apps I’ve installed on my phone?
- Is it the fact that you still cannot write into my NFC tags?
- Is it the fact that you still cannot install yourself into my home page?
- Is it the fact that you still cannot read how fast my internet is?
- Is it the fact that you want my browser to track if I clicked on ads?
- Is it the fact that you cannot track me by yet another data point to add into your trackers?
Then yes, I am against innovation. And I’m proud of it.
This rant was written in a couple of hours with a healthy dose of lack-of-sleep. There will be some inaccuracies. Deal with it.