[Python-Dev] Continuing 2.x

geremy condra debatem1 at gmail.com
Fri Oct 29 20:12:28 CEST 2010

On Thu, Oct 28, 2010 at 11:55 PM, Glyph Lefkowitz
<glyph at twistedmatrix.com> wrote:
> On Oct 28, 2010, at 10:51 PM, Brett Cannon wrote:
> I think people need to stop viewing the difference between Python 2.7
> and Python 3.2 as this crazy shift and view it from python-dev's
> perspective; it should be viewed one follows from the other at this
> point. You can view it as Python 3.2 is the next version after Python
> 2.7 just like 2.7 followed to 2.6, which makes the policies we follow
> for releases make total sense and negates this discussion. It just so
> happens people don't plan to switch to the newest release immediately
> as the backward-incompatible changes are more involved than what
> people are used to from past releases.
> Brett, with all due respect, this is not a reasonable position.  You are
> making it sound like the popular view of 3.2 is a "crazy shift" is based on
> a personal dislike of python-dev or something.  The fact is that the amount
> of effort required to port to 3.2 is extreme compared to previous upgrades,
> and most people still aren't willing to deal with it.  It is a crazy shift.
> Let's take PyPI numbers as a proxy.  There are ~8000 packages with a
> "Programming Language::Python" classifier.  There are ~250 with "Programming
> Langauge::Python::3".  Roughly speaking, we can say that is 3% of Python
> code which has been ported so far.  Python 3.0 was released at the end of
> 2008, so people have had roughly 2 years to port, which comes up with 1.5%
> per year.
> Let's say that 20% of the code on PyPI is just junk; it's unfair to expect
> 100% of all code ever to get ported.  But, still: with this
> back-of-the-envelope estimate of the rate of porting, it will take over 50
> years before a decisive majority of Python code is on Python 3.
> By contrast, there are 536 packages with ::2.6, and 177 with ::2.7.  (Trying
> to compare apples to apples here, since I assume the '2' tag is much more
> lightly used than '3' to identify supported versions; I figure someone
> likely to tag one micro-version would also tag the other.)

Just my two cents:

First off, unless you have a lot of information I don't, there's no
reason at all to believe that Python3's adoption will be linear- if
anything it seems very likely to be a power law curve, just like the
adoption trends we see for other software projects.

Secondly, speaking of power law curves, not all packages on PyPI are
equally important as measured by downloads. If even the top 2% of most
downloaded projects on PyPI got ported to Python3 it would represent a
majority of downloads, and that pattern seems consistent with what you
see in other software repositories. The net result of this is that
even if you're right and the growth is linear AND the 1.5% statistic
is accurate- again, I doubt it- it is conceivable that within two
years an overwhelming majority of downloads of Python software could
be of projects with full Python3 support. From a user perspective
that's fairly close to indistinguishable from a community-wide
transition to Python3.

Thirdly, only counting PyPI is probably not a very good way to measure
popularity in the wider community, as PyPI's overall usage is fairly
small. Just to name a few examples, sqlalchemy had been pulled just
2,000 times from PyPI, but 86,000 times from Ubuntu's repo, pyparsing
had just 295 downloads on PyPI but 62,000 from Ubuntu, etc. With a few
exceptions- especially modules that pride themselves on being pure
Python- this is pretty indicative of the general relationship between
PyPI and these other repositories. I don't know how the adoption rate
figures would look if we took those into account, but if you want to
portray the trend accurately that's something you're likely to have to

So, to cut down a long-winded and overly pedantic response: I'm pretty
sure that you're not going to get accurate estimates out of that
methodology, assuming that accurate results are what you're after.

Geremy Condra

More information about the Python-Dev mailing list