Python 3 has already succeeded in the long run

June 23, 2014

Somewhat recently there has been a certain amount of commotion and strong articles about what Python needs to do about the Python 2 versus Python 3 in order to for one or the other or both to grow and be successful. People's prescriptions have been all over the map; I think I've even seen articles advocating discarding Python 3 as a failed experiment and going back to Python 2 development as the way forward. Given that I'm strongly down on Python 3, you might expect me to agree with the people calling for some sort of major course correction in overall Python development (even if I don't necessarily agree with their suggested changes). As it happens, I don't. My view is that Python development has no need to change in order to 'save' Python or to make Python 3 a success.

The reality is that Python 3 has already succeeded, like it or not. It passed critical mass a long time ago, and while it may be slow moving today it's become inevitable in the long run. More and more major packages are being ported to Python 3, more and more coding is being done on on Python 3 instead of Python 2, more and more people are advocating for Python 3 and its advantages, Python 3 is in more and more places (even if it's sometimes slow), and in the long run more and more things are going to only support Python 3.

If Python 3 was going to fail we would have already seen that by now. We would have seen things like major Python packages announcing that they would never be porting to Python 3, no matter what; they would maintain and develop Python 2 versions only. Instead we've seen just about the opposite, where almost everyone has some sort of Python 3 porting story going on even if they haven't delivered it yet.

Ultimately all of this has happened because the Python developers have made it clear that it is their way (ie Python 3 as it is today) or the highway. No one has stepped up to present a serious alternative to this (ie to further develop Python 2) and given that Python 3 is still broadly Python and is a reasonably viable option most people are not going to take off for the highway. They may be writing Python 2 code today (and perhaps griping about the situation, as I do) but the odds are quite good that in five or ten years they will have switched to Python 3 for new work just because, well, they might as well, it works okay, it's not that different, and it's better supported and shinier than Python 2.

(Old code may or may not ever get ported from Python 2 to Python 3, but then a lot of code dies out over a span of five or ten years anyways.)

Oh, sure, some people will take off for the highway. Some of them will be vocal and thus disproportionately visible. I may even wind up being one of them, if I decide that Go is really what I want to be coding everything in. But I think that most people are going to stay with Python and that means that most of them will move to Python 3 sooner or later. The question is no longer 'if' but 'when', and that means Python 3 has already won even if it takes ten years for it to be pervasive.

Note that this is very different from whether or not I think that that Python development should change. I definitely wish that it would change and I think that relatively modest changes could make a gradual switch to Python 3 noticeably easier. But the Python developers are not listening to me and I think that the current state of affairs demonstrates that they have no need to do so.

PS: this doesn't mean that I plan to switch to writing new code in Python 3 any time soon. Everything I wrote before about that still applies today. I don't expect to start writing Python 3 code until doing so is clearly easier and better than trying to do the same thing in Python 2 (due to nice features in Python 3, better package support, and so on, all of which I expect to happen someday but not any time soon for the work I do).

Written on 23 June 2014.
« Things I like about Go
How my new responsive design here works »

Page tools: View Source, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Mon Jun 23 21:53:47 2014
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.