On Tue, Jan 18, 2022 at 5:48 PM Steve Dower
Discovering during alpha that some packages haven't updated for the release that hasn't happened yet isn't the end of the world. Reverting the changes now is probably a bit premature - realistically we can undo these anytime during beta if we discover that packages are unable to be fixed over the next 9 months.
In Fedora, if a frequently used dependency is broken, a long list of packages "fail to build". (In Fedora, the package test suite must pass to build a package successfully.) If it takes 9 months to fix this dependency, we will likely miss other issues before the Python final version in dependent packages. The problem is when the issue is on the Python side. For example, we discovered that cloudpickle didn't work on Python 3.10. In fact, it was a Python regression. I had to modify how the function object constructor inherits globals (bpo-42990). This kind of change is fine during the beta phase, but it's bad to change the Python behavior in a bugfix Python 3.10.x release :-( Another example is when Cython was ported to Python 3.8, a PyCode_New() change caused a lot of troubles. After multiple exchanges between Cython and Python and a few more issues, it was decided to *revert* the PyCode_New() change. I would not be possible to revert the change in Python 3.8.1 or later :-( There are many examples like that, I don't have an exhaustive list. If issues are discovered earlier, we get more time to discuss and design how to handle them. I don't know where is the good trade-off here. That's why I'm opening a discussion. Yes obviously, we can revert these 2 changes later. Or we can just keep them ;-) -- At the end of my first email, I also suggest thinking about incompatible changes differently, try to make affected projects compatible in advance. The problem are not the changes themselves, but how they are introduced in Python, and more globally how they are introduced "in the Python ecosystem" (!). Victor -- Night gathers, and now my watch begins. It shall not end until my death.