[Python-Dev] (Looking for) A Retrospective on the Move to Python 3

Eric Snow ericsnowcurrently at gmail.com
Thu Apr 26 12:25:57 EDT 2018

In pondering our approach to future Python major releases, I found
myself considering the experience we've had with Python 3.  The whole
Py3k effort predates my involvement in the community so I missed a
bunch of context about the motivations, decisions, and challenges.
While I've pieced some of that together over the years now since I've
been around, I've certainly seen much of the aftermath.  For me, at
least, it would be helpful to have a bit more insight into the
history. :)

With that in mind, it would be worth having an informational PEP with
an authoritative retrospective on the lessons learned from the Python
3 effort (and transition).  Consider it a sort of autobiography,
"memoirs on the python-dev change to Python 3". :)  At this point the
transition has settled in enough that we should be able to present a
relatively objective (and consistent) view, while we're not so far
removed that we've forgotten anything important. :)  If such a
document already exists then I'd love a pointer to it.

The document would benefit (among others):

* python-dev (by giving us a clear viewpoint to inform decisions about
future releases)
* new-comers to Python that want more insight into the language
* folks transitioning from 2 to 3
* communities that have (or think they have) problems similar to those
we faced in Python 2

The PEP doesn't even have to be done all at once, nor by one person.
In fact, there are many viewpoints that would add value to the
document.  Hence it would probably make sense to encourage broad
participation and then have a single editor to effect a single voice
in the document.

The contents of the retrospective document should probably cover a
broad range of topics, since there's so much to learn from the move to
Python 3.  To give an indication of what I mean, I've included a rough
outline at the bottom of this message.

So...I typically strongly avoid making proposals that I'm not willing
to execute.  However, in this case I simply do not have enough
experience in the history to feel comfortable doing a good job of it
in a reasonable amount of time (which matters due to the tendency of
valuable info to fade away). :/  I have no expectation that someone
will pick this up, though I do hope since the benefit would be
significant.  My apologies in advance if this wasted anyone's time.



I'd hope to see something along the lines of (at least) the following,
in rough order:

* a concise summary of the document at the top (very meta, I know :) )
  + what were we solving?
  + what was the solution?
  + why do it that way?
  + what went right?
  + what went wrong?
  + impact on the community
  + impact on core dev contribution
* timeline
* key players (and level of involvement)
  + old guard core devs
  + new guard
  + folks brought on for Py3k (e.g. IIRC a swarm of Googlers dove in)
  + non-core-devs
* motivations
* expectations (e.g. time frames, community reaction)
* corresponding results
* a summary of what we did
* alternative approaches
* what went right (and was it on purpose :) )
* what went wrong (e.g. io) and why
* how the Py3k project differed from normal python-dev workflow (e.g.
pace, decision-making, communications)
* lasting impact of python-dev
* key things that would have been better if done differently
* key decisions/planning (mostly a priori to the release work)
  + scope of backward compatibility
  + process (using PEPs with PEPs 30xx guiding)
  + schedule
  + specific changes (i.e. PEPs 31xx)
  + what was left out (and why)
  + plans to help library and app authors transition (e.g. 2to3)
  + feature/schedule overlap with Python 2 (i.e. 2.6 and 2.7)
  + the language moratorium
* things that got missed and why
  + unicode/bytes in some stdlib modules (and builtins?)
* things that were overdone (and how that got missed)
  + unicode/bytes in some stdlib modules (and builtins?)
* (last but not least) challenges faced by folks working to transition
their exiting code to Python 3

More information about the Python-Dev mailing list