[Python-Dev] Smoothing the transition from Python 2 to 3
barry at python.org
Thu Jun 9 22:13:56 EDT 2016
On Jun 09, 2016, at 05:35 PM, Neil Schemenauer wrote:
>Amber Brown claimed that she spent $60k of her time porting Twisted to Python
>3. I think there is lots of room to make our porting tools better.
Amber gave a presentation at the language summit and a Pycon talk. The latter
video is up on YouTube but the former wasn't recorded. I'm hoping Jake will
post a summary of it though.
She's done a truly impressive amount of work in porting Twisted and has a lot
of good insight. I've ported a fair bit, but nothing of the size and
complexity of Twisted. FWIW, I did port the Mailman 3 core, which is now
Python 3.4 and 3.5 compatible.
In my own experience, and IIRC Amber had a similar experience, the ease of
porting to Python 3 really comes down to how bytes/unicode clean your code
base is. Almost all the other pieces are either pretty manageable or fairly
easily automated. But if you're code isn't bytes-clean you're in for a world
of hurt because you first have to decide how to represent those things.
Twisted's job is especially fun because it's all about wire protocols, which I
think Amber described as (paraphrasing) bytes that happen to have contents
that look like strings.
I've ported some libraries that weren't bytes-clean. With one of them, I
actually failed twice before I hit on the correct representation. Once I got
that right the rest went much more quickly.
There's does seem to be a wide variety of experiences in porting to Python 3.
I think is worth both accepting, acknowledging, and promoting that for a lot
of code, it's really not that hard, but that for some code it's really
painful. It's within our job to help understand the remaining pain and
address it in some way. But let's also not scare people away from Python 3,
because it *can* be very easy to port, and I think there's fairly widespread
agreement that once you're in the Python 3 world, you don't want to look back.
More information about the Python-Dev