3 ms·
Making breaking changes and pushing them to your customers without warning is bad, no question. Staying compatible with everything forever is equally bad, but
by akkartik 7y ago
Making breaking changes and pushing them to your customers without warning is bad, no question.
Staying compatible with everything forever is equally bad, but we only realize that over relatively long timescales.
I think there's a middle-ground between these two extremes that hasn't been explored: when you make an incompatible change, fork. Patch only the worst bugfixes and security fixes on old forks (but continue these indefinitely). Point new users at the latest fork in each point in time. Support switching forks on your users' schedule.
This approach adds some overhead for authors and maintainers. But I think it's not as much as we fear. And it can be automated over time.
There's a selfish reason this never happens, but we don't talk about it in polite company: if you start forking yourself you make it more acceptable for others to fork you. I think that's a good thing. We should all stop playing shallow politics and encourage being forked by others.
- cryptonector 7y agoSure, you tell your customers that in so much time you'll be removing some feature. If you've got a large enough and popular enough OS, say, even so your codebase will get very large.
- akkartik 7y agoNo, you didn't understand what I meant. There is no single codebase serving all users. Some users are on v1, and they use its codebase. Some users are on v2, and they use its codebase. And on and on. There is no notion of removing features. All forks live forever. They just get updated less and less frequently over time. No single fork grows larger and larger over time.
- cryptonector 7y agoNo, that doesn't work.
- akkartik 7y agoIt may well be a bad idea. But I don't think you can be sure until we try it.