[Python-Dev] draft pep: backwards compatibility
python at rcn.com
Fri Jun 19 21:06:27 CEST 2009
Not sure why we need yet another pep on the subject. Just update PEP 5 if needed.
Also, I think there is a certain amount of wishful thinking here. Ideally, we could approve a tiny PEP with just a few bullet
points and it would eliminate the need for all of the complicated decision making that we usually go through. Ideally, we could
make all decisions in advance of seeing the facts for a given situation. ISTM, this pep is wishing away the actual complexity of
making software design decisions.
The policy for 2.x should probably be different than for 3.x. ISTM that 3.x has not been fully shaken out and that possibly many
things will need to change as users start to report problems. The text vs bytes issue is lurking throughout the release. The JSON
module in particular was affected by a half thought out port to 3.0. And yesterday on #python IRC, one developer reported the email
package in 3.1 to be unusable and one of its maintainers characterized it as being in need of a serious overhaul (meaning major API
changes). In the end, there is going to have to be some thoughtful balancing between making the needed changes and not hurting the
existing users. I don't think a small, general purpose PEP like this one can wish that away.
Another sticking point about preserving features across releases arises if the feature itself is hazardous in some way (like have a
security hole or some such). The contextlib.nested() function was an example. It didn't ever really work as advertised for its
intended purpose (it wasn't truly equivalent to two nested with-statements) and it presented users with the possibility of
hard-to-spot bugs. The bugfix for it was to replace it with new syntax. Unfortunately, the new syntax didn't provide all of the
functionality of the original. So, the question arises about whether this particular mine should be left on the battlefield. We
resolved the question after a long and thoughtful discussion; I don't think that decision making process could have been solved in
advance by a bullet-point in a general purpose process PEP.
More information about the Python-Dev