💾 Archived View for tilde.pink › ~maria › log › 2021-07-24_framework_addiction.gmi captured on 2023-04-26 at 14:22:25. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
Programmers deal with this every single day. More so when they are looking for a job.
First job: java1.5ee. On EJB. Spring. IRAD. Ton's of theoretical stuff from various books. Concepts. An own framework team. Second job: ruby on rails (one release lag, updates every 6-12 months). postgresql. backend extensions in c and bash. tablegrid from mleibmann. eventually react.js. Next job: ruby on rails (3 years old, out of support version, inability to upgrade). mongodb. redis. vue.js. pure ruby. celluloid. nodejs. docker. kubernetes. Next job: devops of ruby on rails (latest version). bare metal machines. docker. elk stack.
~~~ great, buzzword bingo
Yes, I get it. Frameworks solve something. They offer a kickstart when drafting, they give you a (mostly opinionated) ruleset and guidelines to work in. And then the business hits. Frameworks get modded, extended, reworked, upgraded, injected and replaced. Natural evolution.
Gone is the benefit of drafting (we're past that), rules and guidelines (mostly thrown out the window by now), easy access for new developers (too much has been modded, added, changed, by developers, extensions and upgrades). However what is still there are the limitations each of the frameworks have. All of them have one. If they don't they are too complex to be drafting.
This would genuinely mean rolling your own shit. Technically you're already doing that, but frameworks hand you abstraction at the cost of flexibility and scalability (in certain areas). An abstraction you somehow can't let go of. And sometimes it's not even feasible to roll your own abstraction.
My point is the difference between a library and a framework. For many frameworks are little more than a mesh of different libraries plugged together in an opinionated fashion. Something I have been bugged by for a longer time but couldn't put my finger on it.
Writing gemini servers have made it quite clear that a framework isn't what you actually want. Also if you have boilerplate, maybe you're using the wrong tools/language?
The first server attempt I wrote, almost automatically made me start with abstraction and I hit a brick wall before I was done writing it. Then I wrote a library instead. It worked better. My current ruby server uses exactly this library, it's dumb enough to be largely bugfree.
Looking back at the large projects I did for companies, the very last project I did used express.js and some redis connector as its only libraries, everything else was nodejs or my own creation. I don't think implementation suffered speed or flexibility. Not even increased communication. And getting a new developer on board was just as hard as it was when I was working on a high performance Celluloid project in ruby.
Maybe it's time to say goodbye to frameworks. Unless you're building yet another webshop.