7 ms·
I've been thinking about this topic for a while. If I ever build any kind of language or framework, I would prioritize backwards compatibility and make sure I d
by nathan_f77 4y ago
I've been thinking about this topic for a while. If I ever build any kind of language or framework, I would prioritize backwards compatibility and make sure I don't waste anyone's time with unnecessary changes or deprecations.
I've also had to archive a few of my mobile apps and remove them from the App Store because it just wasn't feasible to get them running again.
I've adopted this practice with my SaaS startup (docspring.com) out of necessity, since I never want to change anything that might break a customer's templates or API integration. I also never remove or rename any database columns. It's been totally fine! I have a handful of feature flags sprinkled through the code, and a solid test suite that makes sure I keep supporting legacy behaviours. It has never bothered me. I don't understand companies or maintainers who are constantly changing things and breaking stuff.
I had a look at a Ember.js project recently and wanted to update everything to the latest version. I couldn't believe how many dependencies were broken, and how painful it was to even migrate to the next minor Ember version. Why??!?! What are all these extremely important changes people are making? The same goes for Rails, React, and every popular library. It's just a treadmill of things constantly breaking for no good reason.
But if you ignore upgrades for a while and fall behind, then suddenly a security vulnerability is announced and you've gotta spend the next 1-2 weeks upgrading libraries just so you can fix the vulnerability.
I had the idea to start a "upgrades as a service" development agency. We would monitor all your Dependabot PRs and fix any broken CI builds, and make sure you stay up to date. I wanted to build an automated code-mod tool that would know how to upgrade libraries between versions. Especially for simple things like a method or class being renamed.
I'd really love to be a customer of that service if it already exists. I waste so much time on this when I should be building new features and fixing bugs.
Maybe GitHub Copilot will be able to handle it one day.