One of my biggest struggles as a web developer is the pull between making an app that's as lightweight as possible and one that's as understandable and portable as possible.
My desire for extremely lightweight apps stems from the fact that most of the computers I've owned in my life have been hand-me-downs from family and friends and are therefore not remarkably powerful. My very first personal computer was a tiny Asus EEE PC with Windows XP on it, and I spent countless hours trying to tweak it to run as efficiently as possible on the hardware before I finally gave up to find the lightest Linux distro possible for it to run instead.
At the same time, my desire to write understandable and portable (by which I mean "portable knowledge" as in the requirements are common and widely known) stems from my love of open source development. I have thrived on open source software all my life because I've never been able to afford the "real" versions that are always so expensive. Now that I'm experienced enough, I want to give back and add to that pool of open source software, and I feel that the best way to do that and foster an environment of knowledge sharing, the code should be written in a way that people who want to contribute will be able to generally understand.
The reason I feel that these desires are at odds is that often the most popular solution (in my case, React or Angular) is frequently bulky and resource-intensive compared to other lesser-known frameworks (like Choo, which I adore, or Svelte). I like React as much as the next dev, but it's just so much bigger than Choo, which means that it takes up significantly more memory in the browser and can cause major slowdowns on less powerful devices or devices on slow data plans. But React is the framework right now (or Angular or Vue or whatever), so I want to use it to make sure the most people can understand my source code (plus FOMO is probably involved).
I unfortunately don't have an answer to any of the questions I've asked, and I'm sure it's mostly a matter of personal opinion, but I really want to hear what this community thinks. I'm starting a project that I think might get some community involvement, and I want to make sure it's both easy to contribute to and lightweight for servers and users to run.
What do you think? Is this a false dichotomy? Is there a good way to handle the opposing options?