1. 11

  2. 6

    Van Rossum argued instead that if the Twisted team wants the ecosystem to evolve, they should stop supporting older Python versions and force users to upgrade. Brown acknowledged this point, but said half of Twisted users are still on Python 2 and it is difficult to abandon them.

    This is the TL;DR.

    The deep context is the Python community trying like hell to get the vast herd of developers that use Python regularly to move from Python 2 to Python 3, so we can avoid the fate that Perl suffered where only a small core group of ascetics use Perl 6 with any regularity, and mostly everybody else still either uses Perl 5 or says “People still use Perl? Who knew!”.

    Guido and the rest of the community are pushing REALLY hard on library authors to drop support for Python 2 and go Python 3 only for new releases, thus creating a huge incentive for developers to also make the switch as Python 2 stops getting security updates in 2020.

    But Twisted (which Hawkeye is the release manager for) is in a somewhat unique position. A big reason people have used Twisted historically is that it supplied an asynchronous programming framework for Python before such was added to the core language. That’s not all it does, but it’s why many people used the package.

    So it’s no surprise that the vast majority of Twisted users are still on Python 2, but even so Hawkeye is responding to said pressure with raw data as a means of defending this decision.

    1. 3

      I think we’re already well past the Perl 5/6 situation with Python 2 and 3. The issue isn’t that nobody uses Python 3. It’s that many people use 2.7, many 3.x, and many both — the community has been split, and library maintainers pay the price in mental overhead and huge testing matrices.

      It’s also worth noting that Twisted code tends to be harder to port to Python 3 than, say, a Django app. Twisted mostly deals in bytes, so porting usually involves changes everywhere to establish a previously implicit bytesstr boundary.

      (It is “Hawkowl” or “Hawkie”, BTW. Not “Hawkeye”.)

      1. 1

        Thank you very much for the correction. Names are important and I didn’t mean to be disrespectful.

        I agree that many of us are using both, and to your point about huge testing matrices, I also get why some library authors would choose to drop Python 2 support altogether.

        It’s a complex issue with lots of compelling arguments all around.

      2. 2

        It goes even deeper than this. PyPy will not end their Python 2 support; only CPython 2.7 is going away. There are many codebases that will never leave Python 2. Every professional developer position I’ve ever had has involved codebases that will never leave Python 2. PyPy’s core is written in Python 2.

        1. 2

          I’d prefer not to re-re-re-resurrect this dead horse which is now a faded patch where a red splotch once was, but yes there are valid arguments around why not giving up on 2.7 in general is a good idea, but the community chose to err on the side of forcing people’s hands, and on the whole I agree with them.

          I’m also curious what those 2.7 code bases will do when it stops getting security updates? I realize there’s a heck of a lot of old crusty unpatched code out there just brimming with exploits, but the price seems awfully high to me.

          I mean, I work for a Big Cloud Company and we still have a TON of Python 2, but the great gears are turning and processes are being brought to life that will drag everyone who doesn’t want their VPs getting paged into upgrading their code bases to 3 in the foreseeable future.

          So, will there always be Python 2 code lurking around out there? Of course! There’s all kinds of rarefied antiquities floating around the interwebs just waiting to be exploited, but do you want that to be you?

        2. 1

          I can’t edit my original comment anymore but I mis-spoke. It’s Hawkie not Hawkeye.

        3. 2

          Are there other statistics available on pypi wrt how a package is included? Is Twisted popular on Python2 because of being included by another large package, or just popular on its’ own?

          1. 1

            No, pypi doesn’t track upstream dependencies like Bundler or npm, but libraries.io may have something.

            In any case, Twisted is popular because, as I said in my other comment, for a VERY long time if you needed to do anything involving asynchronous IO or networking or… anything :) in Python it was pretty much the only show in town (That’s not strictly true, there has been gevent and the like for years, but Twisted was far and away the most popular).

          2. 2

            Couldn’t understand the TLDR of this rant, besides that Twisted has both Python 2 and 3 distributions.

            1. 5

              I don’t think it’s a rant, or something with a particular point. It’s just an explanation of all the reasoning and thoughts happening around 2 -> 3 for the Twisted project.

              1. 1

                Should have made my comment above as a reply to this. Please see what I just wrote for an explanation that will hopefully make sense to you :)

                1. 1