Fedora 32 System-Wide Change proposal: Retire Python 2

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

 



https://fedoraproject.org/wiki/Changes/RetirePython2

== Summary ==
The {{package|python2}} package and all its subpackages will be
removed from Fedora 32.
A legacy {{package|python27}}  package for developers and users will
be provided.
All packages in Fedora that need Python 2 to run will be removed from
Fedora 32 regardless of their dependencies.
All packages in Fedora that need Python 2 to build will be removed
from Fedora 32 regardless of their dependencies.
Exceptions can be granted by FESCo.

== Owner ==
* Name: [[User:Churchyard|Miro Hrončok]]
* Email: <mhroncok@xxxxxxxxxx> <python-devel@xxxxxxxxxxxxxxxxxxxxxxx>

== Detailed Description ==
Python 2 is unsupported upstream since 2020-01-01. Packages dependent
on Python 2 are being removed from Fedora for several releases
already:

* [[Changes/Mass_Python_2_Package_Removal|Fedora 30 Mass Python 2
Package Removal]]
* [[Changes/F31_Mass_Python_2_Package_Removal|Fedora 31 Mass Python 2
Package Removal]]

Now, the Python maintainers have decided to pull the plug. The
{{package|python2}} package and all its subpackages will be retired
(read: removed) from Fedora 32 (Rawhide) as soon as Fedora 31 is
branched.

All packages depending on any python2 package will be removed. The
removal starts 2 weeks before the planned Fedora 32 Mass Rebuild.
Broken dependencies will not stop the removals.
Packages that Fail to Build From Source and prevent to remove Python 2
subpackages may end up with broken dependencies,
in cases where it is not desired, those packages will be retired instead.

The rules also apply to modules built for Fedora 32+.

The package removal will be executed in an automated fashion.

Removed packages that would block the upgrades to Fedora 32 will be
obsoleted from {{package|fedora-obsolete-packages}}.

=== The python27 package ===

Similarly to existing {{package|python36}}, {{package|python37}} etc.
packages, a {{package|python27}} package will be created.
This package is indented for Python developers who still need to
support the legacy version of Python.
This package is indented for users, who still need to use some
software depending on the legacy version of Python.
This package is not intended for other Fedora packages to be depended upon.

The {{package|python27}} package has several drawbacks compared to the
original {{package|python2}} package:

* it is "flat" - there are no subpackages, everything lives in one package
* there is no debug build (previously available as {{package|python2-debug}})
* there is no <code>/usr/bin/python</code> (note: there might be
already the case before this change)
* any special backwards compatible Provides are removed (this package
is not intended to be depended upon)

=== FESCo exceptions ===

We realize that there are some packages whose removal could seriously
hurt Fedora. FESCo can grant exceptions for packages to use the
{{package|python27}} as a runtime or build dependency.

The package maintainer is responsible to check the entire dependency
chain and they need to request exceptions for the entire list of
packages. For example, when seeking exception for the
{{package|chromium}} package, the request should contain
{{package|python-psutil}} and other dependent packages. (Yes, this is
tedious. Maintaining a Python 2 dependent package is a burden.)

The exception request must include a plan for migrating to Python 3.

Any non-essential dependency must be dropped. That includes optional
dependencies, test dependencies, optional subpackages etc.

Package that fail to get an exception when the removal starts (see
above) will be removed. Their importance for Fedora Release
Engineering, Fedora Infrastructure or any other body will not be
automagically respected; every package that needs Python 2 needs an
exception.

The change owners will send regular reminders to the package owners.

== Benefit to Fedora ==
Python 2 is past upstream End of Life since 2020-01-01. This changes
is generally crafted in a way that:

* it leaves Python developers an option to use it in case they still
need to support it
* it leaves Fedora users an option to use it in case they still need
it to run their (3rd party) software
* it leaves Fedora packagers an option to keep using it (complicated,
but possible)

While:

* it removes Python 2 software from Fedora that was only preserved so
far by inaction

Using Python 2 is dangerous. While the Fedora Python maintainers will
try to fix as many security bugs as possible, without the upstream
involvement this will be hard.

Python 2 is deprecated since Fedora 30. This change moves Python 2
from second class citizen to third class citizen.

== Scope ==
* Proposal owners:
** retire {{package|python2}}
** introduce {{package|python27}}
** remove all {{package|python2}} dependent packages that do not have
FESCo exceptions
** obsolete removed packages that break the upgrade path via
{{package|fedora-obsolete-packages}}
* Other developers:
** remove their {{package|python2}} dependent packages without exceptions
** get exceptions if needed
** fix broken dependencies
* Release engineering: [https://pagure.io/releng/issue/8306 #8306]
easeBlocking/Fedora{{FedoraVersionNumber|next}}|List of
deliverables]]: none
* Policies and guidelines: Python 2 packaging is against the
guidelines since Fedora 30. Python 2 packaging guidelines will be
removed from [https://docs.fedoraproject.org/en-US/packaging-guidelines/Python_Appendix/
Python Appendix] (unless the FPC wants to keep them around until F31
EOL).
* Trademark approval: not needed for this Change

== Upgrade/compatibility impact ==
The majority of removed packages will be obsoleted and removed on upgrade.

Users needing Python 2 libraries will not find these packaged as RPMs.
They may install upstream versions using pip and virtualenv.

== How To Test ==
Try to update Fedora 30 or 31 to 32. No python2 packages should block
the upgrade.
Try to run Python 2 software via the {{package|python27}} package.

== User Experience ==
There will be close to zero Python 2 RPMs in Fedora repos. Users are
encouraged to switch to Python 3 and/or use Python 2 virtual
environments and pip for development.

== Dependencies ==
Ideally, all programs that use python2 would be switched to use
python3. Although we don't expect everything to be switched over, as
much as possible should be, so that the ripped remaining python2 set
is small as possible.

== Contingency Plan ==
* Contingency mechanism:
** In case of serious issues, FESCo can issue a general exception for
packages that would otherwise prevent Fedora 32 from being composed.
** If someone steps up to maintain Python 2 (including the full
ecosystem of packages now in Fedora), they can decide to discontinue
removing packages, revert this Change, or come up with another plan.
(Note that in this case, current maintainers will most likely orphan
many fundamental python2 packages.)
* Contingency deadline: Fedora 32 Beta
* Blocks release? in theory it should not, in practice, it may break
the release and hence it will block it until fixed
* Blocks product? all of them?

== Documentation ==
This page should serve as the documentation.

== Release Notes ==
TBD.

-- 
Ben Cotton
Fedora Program Manager
TZ=America/Indiana/Indianapolis
Pronouns: he/him
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux