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).


Comments on this page:

The difference with Perl 6 was that Perl was in decline anyway, while Python was not (it may be now - as the article points out).

By Morten Kjeldgaard at 2014-06-24 05:05:14:

You should mention The awesome pathlib module that appeared in Python 3.4!

By Gopal at 2014-06-28 06:19:42:

Python 3 still has a long way to go in terms of acceptability in major projects such as OpenStack and SDN frameworks (like Ryu). Any one doing real work in enterprises like trying to create tools for a cloud framework is still forced to work with Python 2. No one can say that frameworks for cloud and SDN are "legacy". They are new code and their developers chose to go with python 2; since basic and very important libraries like gevent and scapy (for packet parsing) could not be ported to python 3, despite various efforts.

By @ch2500 at 2014-07-02 15:24:12:

One of the areas where 3 really shines (for me) is actual binary data handling, i.e. where previously you used standard str's and a str-like API, but weren't dealing with strings, this is a lot better (and more explicit) in 3.

The builtins to_bytes/from_bytes with support for little and big endian conversion are also really nice if you need them.

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

Page tools: View Source, View Normal, Add Comment.
Search:
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.