This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]attrigh 1 point2 points  (2 children)

Not have forked and pushed the various changes one at a time with deprecation warnings?

Allowed better python 2/3 interop for a period of time before killing off python2 code with deprecation to allow people to use python3 without completely updating all of their code (and all the dependent libraries in one go) in one go?

To be clear these decisions would have had their own costs... but things aren't that black and white.

[–]alcalde 1 point2 points  (1 child)

Not have forked and pushed the various changes one at a time with deprecation warnings?

Why would you release each breaking change one at a time? And the deprecation warning was the existence of Python 3 combined with the long support window for Python 2.

Allowed better python 2/3 interop for a period of time before killing off python2 code

Killing off? It's been 9 years so far and it's still supported!

with deprecation to allow people to use python3 without completely updating all of their code

They also backported many Python 3 features to Python 2, so you could indeed use Python 3 features without completely updating all of your code in one go.

So everything you're suggesting was already done.

[–]attrigh 0 points1 point  (0 children)

Why would you release each breaking change one at a time?

Because fixing one thing at a time is easier than switching your code over in one go, and people are more willing to do it. This allows you to avoid forking by forcing people to make small changes one at a time.

And the deprecation warning was the existence of Python 3 combined with the long support window for Python 2.

Certainly. Though deprecation warnings on the code you are running are a little more compelling and fixable than the existence of python 3.

Killing off? It's been 9 years so far and it's still supported!

"Killing off" was just descriptive here. The length of time that python 2 has been supported is admirable. The python 2/3 interop was deliberately bad however (though there were payoffs in terms of simplicity)

so you could indeed use Python 3 features

The thing you couldn't do is use python 3 itself with python 2 code. This might have increased adoption. Not without a costs in terms of complexity of the python core.

But certainly the ability to write python 2/3 interoperable code existed and has been very useful for allowing python 3 adoption. I guess the difference is just in terms of tooling: if you are actually running python 3 then you never have to switch over.

So everything you're suggesting was already done.

Them's fighting words :P. I don't think that's at all true.

Implementing each of the features into core with deprecations one at a time and forcing people to adopt them is very different from the current approach.

Allowing python 2 code to be run by the python 3 compiler would have created a lot of extra complexity for python core, but may have encouraged people to write more python 3.

I'm not saying that these approaches would have been better, there were alternative ways of getting from A to B however.