From Fedora Project Wiki
(Dependencies are already described)
mNo edit summary
 
(21 intermediate revisions by 3 users not shown)
Line 35: Line 35:
* they stop building documentation.
* they stop building documentation.


Packages that use Sphinx on Python 2 on runtime are Sphinx extensions, themes etc. and will be removed together with {{package|python2-sphinx}}.
Packages that use Sphinx on Python 2 at runtime are Sphinx extensions, themes etc. and will be removed together with {{package|python2-sphinx}}.


== Owner ==
== Owner ==
Line 66: Line 66:
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
-->
-->
* Tracker bug: <will be assigned by the Wrangler>
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=1685211 #1685211]
* Release notes tracker: [https://pagure.io/fedora-docs/release-notes/issue/306 #306]


== Detailed Description ==
== Detailed Description ==
Line 72: Line 73:
<!-- 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. -->


See live (or several days old) information of Python dependents of {{python2-sphinx}} at the [https://fedora.portingdb.xyz/pkg/python-sphinx/ Python 2 Dropping Database].
See live (or several days old) information of Python dependents of {{package|python2-sphinx}} at the [https://fedora.portingdb.xyz/pkg/python-sphinx/ Python 2 Dropping Database].


We will remove the following (sub)packages:
We will remove the following (sub)packages:


* {{package|python2-sphinx}}
* {{package|python2-sphinx}} https://src.fedoraproject.org/rpms/python-sphinx/pull-request/8
* {{package|python2-catkin-sphinx}}
* {{package|python2-catkin-sphinx}} https://src.fedoraproject.org/rpms/python-catkin-sphinx/pull-request/2
* {{package|python2-numpydoc}}
* {{package|python2-numpydoc}} https://src.fedoraproject.org/rpms/python-numpydoc/pull-request/1
* {{package|python2-openstack-doc-tools}}
* {{package|python2-openstack-doc-tools}} (already removed in F30)
* {{package|python2-openstackdocstheme}}
* {{package|python2-openstackdocstheme}} (already removed in F30)
* {{package|python2-snowballstemmer}}
* {{package|python2-snowballstemmer}} https://src.fedoraproject.org/rpms/python-snowballstemmer/pull-request/1
* {{package|python2-sphinx-intl}}
* {{package|python2-sphinx-intl}} https://src.fedoraproject.org/rpms/python-sphinx-intl/pull-request/3
* {{package|python2-sphinx-theme-alabaster}}
* {{package|python2-sphinx-theme-alabaster}} https://src.fedoraproject.org/rpms/python-sphinx-theme-alabaster/pull-request/2
* {{package|python2-sphinx_rtd_theme}}
* {{package|python2-sphinx_rtd_theme}} https://src.fedoraproject.org/rpms/python-sphinx_rtd_theme/pull-request/1
* {{package|python2-sphinxcontrib-httpdomain}}
* {{package|python2-sphinxcontrib-httpdomain}} https://src.fedoraproject.org/rpms/python-sphinxcontrib-httpdomain/pull-request/2
* {{package|python2-sphinxcontrib-websupport}}
* {{package|python2-sphinxcontrib-websupport}} https://src.fedoraproject.org/rpms/python-sphinxcontrib-websupport/pull-request/3
* {{package|sphinx-webtools}}
* {{package|sphinx-webtools}} https://src.fedoraproject.org/rpms/sphinx-webtools/pull-request/2
* {{package|trac-sphinx-plugin}}
* {{package|trac-sphinx-plugin}} https://src.fedoraproject.org/rpms/trac-sphinx-plugin/pull-request/2


The following (source) packages currently (2019-02-06) BuildRequire any of the above and will need to be adapted to stop doing that:
The following (source) packages currently (2019-02-06) BuildRequire any of the above and will need to be modified to stop BuildRequiring them:


* {{package|alot}}
* {{package|alot}}
Line 229: Line 230:


As said in the summary, packages will either switch to Python 3 Sphinx or stop building the docs.
As said in the summary, packages will either switch to Python 3 Sphinx or stop building the docs.
Change owners can provide guidance and help yet they are not expected to do all the work here.
Change owners can provide guidance and help, yet they cannot be expected to fix all the packages.


The following tools will be switched to Python 3:
The following tools will be switched to Python 3:
Line 239: Line 240:


Their <code>-3</code> and <code>-3.X</code> suffixed counterparts will be kept as symbolic links for backwards compatibility.
Their <code>-3</code> and <code>-3.X</code> suffixed counterparts will be kept as symbolic links for backwards compatibility.
Explicit conflicts with old {{package|python2-sphinx}} will be added and {{package|python2-sphinx}} will be obsoleted via {{package|fedora-obsolete-packages}}.


== Benefit to Fedora ==
== Benefit to Fedora ==
Line 270: Line 272:
-->
-->


Fedora is the leading environment for Python development and will include the newest and nicest Sphinx for users and packagers.
Fedora is the leading environment for Python development and will include the newest and greatest Sphinx for users and packagers.
The removal of Python 2 Sphinx will help getting rid of significant Python 2 usage, as Fedora long term plan is to get rid of this legacy interpreter. Python 2 is deprecated in Fedora and its upstream support ends at 2020-01-01, very early in the Fedora 31 life time.
The removal of Python 2 Sphinx will help in getting rid of a significant amount of Python 2 usage, as Fedora's long term plan is to get rid of this legacy interpreter. Python 2 is deprecated in Fedora and its upstream support ends on 2020-01-01, very early in the Fedora 31 life time.


== Scope ==
== Scope ==
* Proposal owners: remove packages as described above as soon as possible, update {{package|python-sphinx}} to 2.0.0 or newer, provide guidance and help.
* Proposal owners: remove above-mentioned packages as soon as possible, update {{package|python-sphinx}} to 2.0.0 or newer, provide guidance and help.
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->


* Other developers: stop using {{package|python2-sphinx}} (list of packages in description) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Other developers: stop using {{package|python2-sphinx}} (list of affected packages in the description) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- What work do other developers have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
<!-- What work do other developers have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->


* Release engineering: [https://pagure.io/releng/issues #Releng issue number] (no Release Engineering impact is anticipated) <!-- REQUIRED FOR SYSTEM WIDE AS WELL AS FOR SELF CONTAINED CHANGES -->
* Release engineering: [https://pagure.io/releng/issue/8100 #8100] (no Release Engineering impact is anticipated) <!-- REQUIRED FOR SYSTEM WIDE AS WELL AS FOR SELF CONTAINED CHANGES -->
<!-- Does this feature require coordination with release engineering (e.g. changes to installer image generation or update package delivery)?  Is a mass rebuild required?  include a link to the releng issue.  
<!-- Does this feature require coordination with release engineering (e.g. changes to installer image generation or update package delivery)?  Is a mass rebuild required?  include a link to the releng issue.  
The issue is required to be filed prior to feature submission, to ensure that someone is on board to do any process development work and testing, and that all changes make it into the pipeline; a bullet point in a change is not sufficient communication -->
The issue is required to be filed prior to feature submission, to ensure that someone is on board to do any process development work and testing, and that all changes make it into the pipeline; a bullet point in a change is not sufficient communication -->
Line 296: Line 298:


<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
The new {{package|python3-sphinx}} package will have to conflict with the old {{package|python2-sphinx}} package. Proper obsoletes will be added.
The new {{package|python3-sphinx}} package will have to conflict with the old {{package|python2-sphinx}} package because the unversioned executables will be moved from {{package|python2-sphinx}} to {{package|python3-sphinx}}. Proper obsoletes will be added to ensure a clean upgrade path.


Fedora users using RPM packaged Sphinx will use Sphinx on Python 3 by default, as many would expect.
Fedora users using RPM-packaged Sphinx will use Sphinx on Python 3 by default, as many would expect.
Fedora users still needing to use Python 2 and Sphinx will use Python virtual environment and pip.
Fedora users still needing to use Sphinx running on Python 2 will use Python virtual environment and pip.


== How To Test ==
== How To Test ==
Line 342: Line 344:


<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "Revert the shipped configuration".  Or it might not (e.g. rebuilding a number of dependent packages).  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "Revert the shipped configuration".  Or it might not (e.g. rebuilding a number of dependent packages).  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
* Contingency mechanism: (What to do?  Who will do it?) N/A (not a System Wide Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Contingency mechanism: If absolutely needed, the change owners will add compatibility {{package|python2-sphinx}} package with Sphinx 1.8.x but they are not willing to maintain it, so they plan to orphan it soon after Fedora 31 is released. <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- When is the last time the contingency mechanism can be put in place?  This will typically be the beta freeze. -->
<!-- When is the last time the contingency mechanism can be put in place?  This will typically be the beta freeze. -->
* Contingency deadline: N/A (not a System Wide Change)  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Contingency deadline: any time before release <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- Does finishing this feature block the release, or can we ship with the feature in incomplete state? -->
<!-- Does finishing this feature block the release, or can we ship with the feature in incomplete state? -->
* Blocks release? N/A (not a System Wide Change), Yes/No <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Blocks release? No <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Blocks product? product <!-- Applicable for Changes that blocks specific product release/Fedora.next -->
* Blocks product? No <!-- Applicable for Changes that blocks specific product release/Fedora.next -->


== Documentation ==
== Documentation ==
Line 353: Line 355:


<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
N/A (not a System Wide Change)
This page is the documentation.


== Release Notes ==
== Release Notes ==
Line 362: Line 364:
-->
-->


[[Category:ChangePageIncomplete]]
TBD.
 
[[Category:ChangeAcceptedF31]]
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
Line 369: Line 373:


<!-- Select proper category, default is Self Contained Change -->
<!-- Select proper category, default is Self Contained Change -->
[[Category:SelfContainedChange]]
[[Category:SystemWideChange]]
<!-- [[Category:SystemWideChange]] -->
<!-- [[Category:SystemWideChange]] -->

Latest revision as of 15:21, 6 March 2019


Update Sphinx to version 2 and drop Python 2 support from Sphinx

Summary

The version 2.0.x of Sphinx, popular Python documentation generator and framework, is expected to be released in early 2019. It drops support for Python 2. As part of Finalizing Fedora's Switch to Python 3, we update Package-x-generic-16.pngpython-sphinx to 2.0.x and we drop Package-x-generic-16.pngpython2-sphinx and related packages from Fedora 31 and further.

Package maintainers using Sphinx on Python 2 have three options:

  • they stop using Python 2 entirely (preferred), dropping their python2 subpackages if not dependent upon by other packages,
  • they switch to Sphinx on Python 3 for building their documentation,
  • they stop building documentation.

Packages that use Sphinx on Python 2 at runtime are Sphinx extensions, themes etc. and will be removed together with Package-x-generic-16.pngpython2-sphinx.

Owner

Current status

Detailed Description

See live (or several days old) information of Python dependents of Package-x-generic-16.pngpython2-sphinx at the Python 2 Dropping Database.

We will remove the following (sub)packages:

The following (source) packages currently (2019-02-06) BuildRequire any of the above and will need to be modified to stop BuildRequiring them:

As said in the summary, packages will either switch to Python 3 Sphinx or stop building the docs. Change owners can provide guidance and help, yet they cannot be expected to fix all the packages.

The following tools will be switched to Python 3:

  • /usr/bin/sphinx-apidoc
  • /usr/bin/sphinx-autogen
  • /usr/bin/sphinx-build
  • /usr/bin/sphinx-quickstart

Their -3 and -3.X suffixed counterparts will be kept as symbolic links for backwards compatibility. Explicit conflicts with old Package-x-generic-16.pngpython2-sphinx will be added and Package-x-generic-16.pngpython2-sphinx will be obsoleted via Package-x-generic-16.pngfedora-obsolete-packages.

Benefit to Fedora

Fedora is the leading environment for Python development and will include the newest and greatest Sphinx for users and packagers. The removal of Python 2 Sphinx will help in getting rid of a significant amount of Python 2 usage, as Fedora's long term plan is to get rid of this legacy interpreter. Python 2 is deprecated in Fedora and its upstream support ends on 2020-01-01, very early in the Fedora 31 life time.

Scope

  • Proposal owners: remove above-mentioned packages as soon as possible, update Package-x-generic-16.pngpython-sphinx to 2.0.0 or newer, provide guidance and help.
  • Other developers: stop using Package-x-generic-16.pngpython2-sphinx (list of affected packages in the description)
  • Policies and guidelines: none
  • Trademark approval: not needed for this Change

Upgrade/compatibility impact

The new Package-x-generic-16.pngpython3-sphinx package will have to conflict with the old Package-x-generic-16.pngpython2-sphinx package because the unversioned executables will be moved from Package-x-generic-16.pngpython2-sphinx to Package-x-generic-16.pngpython3-sphinx. Proper obsoletes will be added to ensure a clean upgrade path.

Fedora users using RPM-packaged Sphinx will use Sphinx on Python 3 by default, as many would expect. Fedora users still needing to use Sphinx running on Python 2 will use Python virtual environment and pip.

How To Test

TBD

User Experience

Already covered by sections above.

Dependencies

Described by the sections above.

Contingency Plan

  • Contingency mechanism: If absolutely needed, the change owners will add compatibility Package-x-generic-16.pngpython2-sphinx package with Sphinx 1.8.x but they are not willing to maintain it, so they plan to orphan it soon after Fedora 31 is released.
  • Contingency deadline: any time before release
  • Blocks release? No
  • Blocks product? No

Documentation

This page is the documentation.

Release Notes

TBD.