From: "Petr Viktorin" <pviktori(a)redhat.com>
To: python-list(a)redhat.com
Cc: python-maint(a)redhat.com, devexp-list(a)redhat.com, "Nick Coghlan"
<ncoghlan(a)gmail.com>,
rhel-product-org(a)redhat.com, rhel-next(a)redhat.com, "Jan Beran"
<jberan(a)redhat.com>, os-devel-list(a)redhat.com,
"Langdon White" <langdon(a)redhat.com>
Sent: Friday, May 20, 2016 12:46:11 PM
Subject: Tech talk summary: Future of Python in RHEL and Fedora
Hello,
Miro Hrončok and I have recently given a tech talk on the future of
Python in RHEL and Fedora. If you didn't catch it, there's a recording
available at:
https://bluejeans.com/s/9EnS/
If you don't have time to watch, but develop or maintain Python-based
software in RHEL, please take some time read this summary.
This is the current plan of the python-maint team, based on various
discussions. Change requests are welcome.
## RHEL ##
The problems we're trying to solve are:
- Upstream support for Python 2.x will end in 2020. We do not have
resources to maintain Python 2 for the full RHEL 8 lifetime.
- We'd like to avoid locking us and customers to a single Python version
for the entire RHEL 8 lifetime.
- Some customers want several versions of Python installed at once.
Our solution to these problems is to provide two (kinds of) Python
stacks in RHEL 8:
- System Python (/usr/bibexec/system-python), on which Red Hat-provided
software can depend, and which can be upgraded or modified as Red Hat
needs. This will be Python 3.5.
- Separately installed Pythons, provided by SCLs or containers (the
exact implementation should be determined as part of the modularization
effort). Several of these can be installed at once, and they will have
their own support lifetimes. The interpreters will be available at
/usr/bin/pythonX.Y
Python-based software provided by Red Hat can either use System Python
(which will be Python 3), or separately installed Pythons (which can be
any version, but may be supported for a shorter time).
If you maintain such software, please plan for this. Let us know if you
need any assistance or additional information. We at python-maint will
be happy to help (but you do need to ask).
## Fedora ##
In Fedora, a system-python is included since F24, but for a different
reason: to make cloud images as small as possible.
Fedora's system-python contains a subset of the standard library, with
some modules (like those needed for development) removed. The remaining
pieces are provided by python-libs.
Packages that care about minimizing their dependency footprint, and
don't need the excluded modules, can depend on system-python instead of
the full Python.
We're planning to start talking to DNF and cloud-init teams to switch to
system-python.
## Python 3 ##
Python 3.0 was released in 2008, and most active open-source projects
now either support it or are working on it. Python 3 brings a better
Unicode model (which, as Nick Coghlan put it, has unfortunately, "broken
many of the workarounds that had been put in place to deal with the
limitations of the old model"), and an ever-increasing list of new
features. Python 2 is legacy software on extended support.
In Fedora, 44% of packages are ported. Many of the remaining 56% are
practically abandoned.
Based on somewhat hand-wavy estimates, 70% of packages that will be
needed in RHEL are ported. Many of the rest are Red Hat projects.
Eventually, all Python software will need to be ported to Python 3. If
you maintain a project that hasn't started yet, it is best not to delay.
Resources and support are available:
- Lennart Regebro’s Supporting Python 3:
http://python3porting.com
- RPM Porting Guide (for Fedora spec files):
http://python-rpm-porting.readthedocs.io/
- We're also writing a "Conservative Porting Guide" for
"laggard"
projects (hopefully including customers' in-house tools). The plan is to
release in the summer.
Let us know if you have any questions, if you need any help porting to
Python 3, or if you see a bug in our plans!
--
Petr Viktorin
--
Francesco Romani
RedHat Engineering Virtualization R & D
Phone: 8261328
IRC: fromani