From Fedora Project Wiki


Migrate Python-based Nautilus extensions to Python 3

Summary

The Python backend for the nautilus-python extension will be updated from python2 to python3. All Nautilus extensions written in Python will need to be checked for Python 3 compatibility and updated if necessary. Extensions compatible only with Python 2 will no longer be supported.

Owner

Current status

  • Targeted release: Fedora 30
  • Last updated: 2018-12-07
  • Tracker bug: <will be assigned by the Wrangler>

Detailed Description

The nautilus-python package allows Nautilus extensions to be written in the Python scripting language. In Fedora releases up to and including Fedora 29, these extensions were executed in a Python 2 environment. With the general move to Python 3 as Fedora's default Python runtime and the impending deprecation of Python 2, nautilus-python will execute extension code in a Python 3 context. Compatibility with Python 3 will be required for all Python-based Nautilus extensions.

(Note: In Fedora 28 the nautilus-python package was named python2-nautilus. For Fedora 29 the name has been reverted to nautilus-python to better indicate its status as a Nautilus component.)

Benefit to Fedora

In addition to eliminating nautilus-python's direct dependency on Python 2, this change will remove all Python-based Nautilus extensions from the list of Fedora components which still require the legacy Python 2 interpreter (which has been deprecated, and is slated for removal). It will allow us to ensure that all Python-based Nautilus extensions still in use are fully compatible with Python 3.

Scope

  • Proposal owners: Build nautilus-python with Python 3 support and deploy.
  • Other developers: N/A (not a System Wide Change)
  • Release engineering: 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

Launch the Nautilus file manager and verify that any functionality provided by Python-based extensions is still available.

User Experience

As long as Python 3 compatibility is verified for all Nautilus Python extensions, users will see no impact from this change. If any extensions are not compatible with Python 3 and must be removed, users may notice loss of certain functionality from Nautilus.

Dependencies

Any Nautilus extensions which use nautilus-python will have to be checked for Python 3 compatibility. Repackaging should not be necessary, as the nautilus-python dependency Required by those packages will be carried forward to Python 3 builds.

The list of packages in the Fedora 29 repos which depend on nautilus-python is, as of 2018-11-08:

  • kde-connect-nautilus
  • nautilus-font-manager
  • nautilus-pastebin
  • nautilus-phatch
  • nextcloud-client-nautilus
  • nitroshare-extension-nautilus
  • onionshare
  • owncloud-client-nautilus
  • qdigidoc-nautilus
  • rabbitvcs-nautilus
  • tilix-nautilus
  • tortoisehg-nautilus

Contingency Plan

Continue shipping builds of nautilus-python based on Python 2.

  • Contingency mechanism: 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)
  • Blocks product? None

Documentation

N/A (not a System Wide Change)

Release Notes

The Nautilus Python extension has switched to the Python 3 runtime, and all Python-based Nautilus extensions now require Python 3 compatibility.

NOTE: Category is actually "ChangeReadyForFesco". Leaving the category alone in order to permit investigation into a MediaWiki issue