Python 2, Python 3, Stretch & Buster

To: debian-devel-announce@lists.debian.org

Subject: Python 2, Python 3, Stretch & Buster

From: Paul Tagliamonte <paultag@debian.org>

Date: Thu, 16 Apr 2015 09:50:02 -0400

Message-id: <[🔎] 20150416135002.GA21250@cassiel.pault.ag>

Mail-followup-to: debian-devel@lists.debian.org

Reply-to: debian-python@lists.debian.org

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