“Open Source Migrates With Emotional Distress”, Armin Ronacher2019-12-28 (, ; backlinks; similar)⁠:

“Legacy code is bad and if you keep using it, it’s really your own fault.” There are many variations of the same thing floating around in Open Source communities and it always comes down to the same thing: at one point something is being declared old and it has to be replaced by something newer which is better. That better typically has some really good arguments on its side: we learned from our mistakes, it was wrong to begin with or something along the lines of it being impure or that it propagated bad ideas…Some communities as a whole for instance are suffering from this a whole lot. Every few years a library or the entire ecosystem of that community is thrown away and replaced by something new and support for the old one ends abruptly and arbitrarily. This has happened to the packaging ecosystem, the interpreter itself, modules in the standard library etc.

…This largely works because the way open source communities are managing migrations is by cheating and the currency of payment is emotional distress. Since typically money is not involved (at least not in the sense that a user would pay for the product directly) there is no obvious monetary impact of people not migrating. So if you cause friction in the migration process it won’t hurt you as a library maintainer. If anything the churn of some users might actually be better in the long run because the ones that don’t migrate are likely also some of the ones that are the most annoying in the issue tracker…Since the migration causes a lot of emotional distress, the cheat is carried happily by the entire community…I have been a part of the Python 3 migration and I can tell you that it sucked out all my enjoyment of being a part of that community. No matter on which side you were during that migration I heard very little positive about that experience.

…A big reason why this all happens in the first place is because as an Open Source maintainer the standard response which works against almost all forms of criticism is “I’m not paid for this and I no longer want to maintain the old version of X”. And in fact this is a pretty good argument because it’s both true, and very few projects actually are large enough that a fork by some third party would actually survive. Python for instance currently has a fork of 2.7 called Tauthon which got very little traction.

There are projects which are clearly managing such forceful transitions, but I think what is often forgotten is that with that transition many people love the community who do not want to participate in it or can’t…I honestly believe a lot of Open Source projects would have an easier time existing if they would acknowledge that these painful migrations are painful for everybody involved.