From Fedora Project Wiki
(Initial change)
 
(detailed description)
Line 66: Line 66:


<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
Python 2 is unsupported upstream since 2020-01-01. After two phased approaches to limit the dependent packages on Python 2:
* [[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]]
The Python maintenance team has decided to pull the plug. The {{package|python2}} package and all it' 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 week 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 packages 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 packages removal will be executed in an automated fashion.
=== 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 dependent upon.
The {{package|python27}} 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 dependent 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 exception for the entire list of packages. For example, when seeking exception for the {{package|chromium}} package, tis should list {{package|python-psutil}} and other dependent packages. Yes, this is tedious. Maintaining a Python 2 dependent package is a burden. A Python 3 plan is a must for such exception.
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 ==
== Benefit to Fedora ==

Revision as of 12:47, 16 April 2019


Retire Python 2 (and let it all burn)

Summary

The Package-x-generic-16.pngpython2 package and all it's subpackages will be removed from Fedora 32. A legacy Package-x-generic-16.pngpython27 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: Miro Hrončok
  • Email: <mhroncok@redhat.com> <python-devel@lists.fedoraproject.org>
  • Release notes owner:

Current status

  • Targeted release: Fedora 32
  • Last updated: 2019-04-16
  • Tracker bug: <will be assigned by the Wrangler>

Detailed Description

Python 2 is unsupported upstream since 2020-01-01. After two phased approaches to limit the dependent packages on Python 2:

The Python maintenance team has decided to pull the plug. The Package-x-generic-16.pngpython2 package and all it' 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 week 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 packages 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 packages removal will be executed in an automated fashion.

The python27 package

Similarly to existing Package-x-generic-16.pngpython36, Package-x-generic-16.pngpython37 etc. packages, a Package-x-generic-16.pngpython27 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 dependent upon.

The Package-x-generic-16.pngpython27 has several drawbacks compared to the original Package-x-generic-16.pngpython2 package:

  • it is "flat" - there are no subpackages, everything lives in one package
  • there is no debug build (previously available as Package-x-generic-16.pngpython2-debug)
  • there is no /usr/bin/python (note: there might be already the case before this change)
  • any special backwards compatible provides are removed (this package is not intended to be dependent 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-x-generic-16.pngpython27 as a runtime or build dependency.

The package maintainer is responsible to check the entire dependency chain and they need to request exception for the entire list of packages. For example, when seeking exception for the Package-x-generic-16.pngchromium package, tis should list Package-x-generic-16.pngpython-psutil and other dependent packages. Yes, this is tedious. Maintaining a Python 2 dependent package is a burden. A Python 3 plan is a must for such exception.

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

Scope

  • Proposal owners:
  • Other developers: N/A (not a System Wide Change)
  • Policies and guidelines: N/A (not a System Wide Change)
  • Trademark approval: N/A (not needed for this Change)

Upgrade/compatibility impact

N/A (not a System Wide Change)

How To Test

N/A (not a System Wide Change)

User Experience

Dependencies

N/A (not a System Wide Change)

Contingency Plan

  • Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
  • Contingency deadline: N/A (not a System Wide Change)
  • Blocks release? N/A (not a System Wide Change), Yes/No
  • Blocks product? product

Documentation

N/A (not a System Wide Change)

Release Notes