
The state of the web
22nd June 2022, 04:22My disappointment is immeasureable and my day is ruined.
Artslap
This is literally what I think every day I see another framework or library pop up or whenever I take a good look through my favourite frameworks because I’ve encountered a rare edge-case issue and attempt to resolve.
If you’ve been a programmer for a little longer you’ll probably already know the direction I’m heading into. If you’re kinda new to the web, no worries tho.
Abstraction
Boy do we love that word. “Abstraction”. Sounds nice, rolls off the tongue.
But what added benefits do we get from implementating a layer of abstraction on an already abstracted layer.
I’m looking at you Symfony (Doctrine) and you Vuex (Vue.js).
While it seems nice to build convenient handlers and wrappers for all kinds of functionaliteit so we have to write a little less code, the truth is obviously a lot less convenient.
Because current frameworks are being built-upon the foundation of their predecessors or sometimes even added as another layer on top of existing frameworks, we’re losing track of something rather important on the web: dependencies and performance.
Okay, okay, I know I’m making this sounds worse than it is.
But have you ever tried benchmarking vanilla JS vs Vue or vanilla PHP (especially the most recent versions) vs Symfony?
The difference in performance is obviously marginally because well, you’ll be only testing a single part of a framework.
Taking the entire framework (and all of it’s sublayers, dependencies and all those other nasty implementations), you’ll quickly realise and say:
Well, yeah, of course it’s slower but that’s why we using caching like Redis and Varnish right?
You, probably
That brings us to our second problem.
Caching
While caching is obviously a godsend for not only developers but also for web-servers or Content Delivery Networks. It’s being taken advantage of enormously to justify loading speeds.
Nowadays it’s basically impossible to run a framework without any form of caching.
Twig, Blade and other PHP-templating engines make heavy use of caching, but so does Symfony (in a less apparant manner) by caching Controller/Actions and DBAL structures and probably a lot more I’m too lazy to write out.
The same even goes for JS frameworks that use the Shadow DOM (like React) which basically create a “shadow document” which contains all the HTML elements needed for processing. Although that’s not such a bad idea.
Conclusion
Today’s code is so machine-heavy it requires caching, otherwise the performance is incredibly slow and bulky due to so many ex- and internal dependencies (Composer, NPM).
Don’t get me started on Composer, NPM and other package delivery networks. Because that’s a whole different story and problem.
Fun fact
Did you know a single programmer broke most of the internet’s deployment and release cycles? Sounds bad and basically impossible right?
Read more about: That time a guy broke the internet