You’ve probably noticed that the 3.14.0rc3 release has been made without reverting the UnionType changes.
The Steering Council took the concerns about this change seriously. We met, discussed, consulted with the 3.14 Release Manager, and ultimately decided not to revert this change so late in the 3.14 release candidate phase of the process, giving the go ahead for the rc3 release. What has shipped is the API going forwards. All problems with it are now normal APIs we need to support and can only change by following the normal change and deprecation policies going forward.
For us, the issue was both technical and process related. On the technical side, we are not necessarily agreeing with the change, and we do recognize that the design may have problems. We also acknowledge that there is disagreement within the core team as to whether this is the right change or not, and uncertainty in some of the future directions for typing support. On the process side, we also acknowledge that while concerns were raised early, it wasn’t until very late in the 3.14 rc phase that the concerns bubbled up to the Steering Council. While rc phase reverts have been approved in the past, they’ve always been for problems affecting Python “globally”, i.e. performance regressions, serious bugs affecting a wide-range of users, etc. We did not feel that this bug met the high bar for rc phase reversion, as it does not appear to fundamentally crash Python, break projects, or subvert user expectations. After weighing all ramifications, options, and outcomes, we decided not to revert this change.
It’s clear that there was a communications breakdown that led to all of this happening. I expect we’ll have suggestions around improving upon that later in order to avoid situations like this in the future. In the meantime, we urge members of the core team to engage with the Steering Council early when impasses cannot be resolved through normal collaboration and discourse. Don’t linger in frustration feeling that your opinions are not being heard! We will always have technical disagreements, and one’s positions may not always be adopted, but we hope that any frustrations you have with the process can be brought to the Steering Council’s attention, and we will do whatever we can to help to promote respectful resolution of such disagreements. We remind folks that you can contact the Steering Council through our GitHub issue tracker and private mailing list, and we encourage you to book a meeting with us using our Steering Council office hours.
We will undoubtedly conduct additional introspection into the process bugs that lead us here, so that we can avoid such outcomes in the future. We thank you for all your hard work in bringing Python 3.14 to fruition. Please reach out to the Steering Council in public or private if you have any additional concerns and feedback.
– Python Steering Council