[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Python 2, Python 3, Stretch & Buster



Aloha, Developers!


Many of our projects in Debian are written in Python -- yay, Python!

However, a large chunk are implemented in Python 2 -- Booo, Python 2!


Background
==========

Python 2 is scheduled to be EOL'd upstream officially and for good in 2020.
We're in 2015 now (wow, that went quickly), and keeping our release cadence up
(3 years a pop) puts Stretch up in 2018, and Buster in 2021.

Short of a brilliant Stretch cycle, this should be basically rightish.

after Python 2 is EOL -- that's right, EOL! Nuts, right?


A bunch of us at PyCon had a gathering of the shadowy Debian Python cabal
(notes from that meeting can be found at
<20150414220155.GA2589@cassiel.pault.ag>), and this fact hit us. We've been
talking more seriously about Python 2's deprecation, and what we do as the
maintainers of so much of the ecosystem / cpython / pypy maintainers.

The idea is to basically stop uploading new Python 2 only libraries, port
things on the critical path, and swap leaf packages to Python 3. Details on
this can be found in the notes. Exact plans and policies are being resolved,
but that's the general idea.


Given that I'm such a radical Python 3 proponent, I've decided to start the
effort for our infra. I seem to have a thing for flame threads, I guess.

The first step is to evaluate things within our control -- Infrastructure.


Tasks
=====

So, what can we do about it?

Great question! Since the DPMT and PAPT will soon be taking a more aggressive
approach on the ecosystem (porting as hard as we can to Python 2), you can help
by doing some of the following:

    - If *you* maintain or work on a Python 2 project that's used in Debian
      Development (buildd, release tools, QA tools, ftpteam tools), please
      email me a link to the project. An accurate census will help hugely. If
      it works on Python 2, Python 2 and Python 3 or just Python 3, you should
      include those details as well.

    - Identify what Debian Infra or Meta-Debian projects require Python 2 due
      to unported or unbuilt Python 3 packages. Feel free to just scan your
      top-level direct dependencies, we can play with the tree of deps.

        + Consider filing a bug on packages which are supported on Python 3
          upstream but do not currently build Python 3 packages.

        + Consider filing a bug on packages which do *not* have upstream
          support, and look into modern implementations of libraries you need.

        + If you have to do either of the above, consider patching it!
          Remember: Teamwork makes the dream work!

        ( Note: the usertag on the above has not been decided yet, check in
                for that later )

    - Port the project to a hybrid Python 2/3 codebase (it's easy most of the
      time, I promise!) but stay on Python 2, which will let you preform an
      incremental upgrade. Consider test cases! Testing is great! I suggest
      `tox` to let you continue to run the test suite for multiple versions
      of Python.

    - Deploy or upload the tool to the archive or our infra using pure Python
      3. This is the best if you have some test cases you can rely on (Python
      has some wonderful stuff you should totally be using!)


Plans
=====

I plan on creating a Python 3 porting team. It'll have a fancy buzzword name,
but I'm a bit too tired to think of one now. Such a porting team would consist
of folks who are here to help port things important to us (Debian) to Python 3
so that we can get off of Python 2 for Buster.

If you're interested in this effort, please email me. This is a really good new
contributor task, so if anyone's asked you how they could get involved with
Debian, you should send them to us!

We'll be nice, I promise!

I'll be making a Mailing List for this on Alioth sometime soon.



Takeaways
=========

The future is now! It's time to port as much as we can to Python 3 in the next
two cycles as we can, so we don't have to rely on an old, deprecated and broken
Python 2. As the kids say -- 'Sorry not sorry'

When you see Python 2 - treat it as legacy! Please encourage porting!

We can all soon look forward to the day where we no longer have to play Unicode
whack-a-mole and have a language getting new features again! I've been using
Python 3 for all new work code, and personal stuff, it's pretty great!

If you are interested, or know anyone who might be interested, I'll be putting
together a Python 2 => Python 3 task force. Please email me privately if you're
interested, I'll keep a list of names for the soon to not be created list.



Python [2] is dead! Long live Python [3]!
    Paul

-- 
 .''`.  Paul Tagliamonte <paultag@debian.org>  |   Proud Debian Developer
: :'  : 4096R / 8F04 9AD8 2C92 066C 7352  D28A 7B58 5B30 807C 2A87
`. `'`  http://people.debian.org/~paultag
 `-     http://people.debian.org/~paultag/conduct-statement.txt

Attachment: signature.asc
Description: Digital signature


Reply to: