From 78f1d5fbaa06d733af0052caf747be5d570d3b5b Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Fri, 9 Jun 2023 10:27:59 -0400 Subject: [PATCH] PEP 715: Disabling bdist_egg distribution uploads on PyPI (#3161) Signed-off-by: William Woodruff Co-authored-by: C.A.M. Gerlach --- .github/CODEOWNERS | 1 + pep-0715.rst | 166 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 167 insertions(+) create mode 100644 pep-0715.rst diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 16a88cf15..300a1da34 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -595,6 +595,7 @@ pep-0711.rst @njsmith pep-0712.rst @ericvsmith pep-0713.rst @ambv pep-0714.rst @dstufft +pep-0715.rst @dstufft # ... # pep-0754.txt # ... diff --git a/pep-0715.rst b/pep-0715.rst new file mode 100644 index 000000000..567e0d80c --- /dev/null +++ b/pep-0715.rst @@ -0,0 +1,166 @@ +PEP: 715 +Title: Disabling bdist_egg distribution uploads on PyPI +Author: William Woodruff +Sponsor: Donald Stufft +PEP-Delegate: Donald Stufft +Status: Draft +Type: Process +Topic: Packaging +Content-Type: text/x-rst +Created: 06-Jun-2023 +Post-History: +Resolution: + +Abstract +======== + +This PEP recommends deprecating and then disabling new uploads of the +``bdist_egg`` distribution type on PyPI. In a parallel move, this PEP recommends +deprecating and then disabling new uploads of distribution filenames that have +the ``.egg`` suffix. + +It does not recommend removing or otherwise affecting any previously +uploaded ``bdist_egg`` distributions or files with the ``.egg`` suffix. + +Rationale +========= + +Previous Work +------------- + +The groundwork for this proposal was established with :pep:`527`, which +proposed deprecating and eventually removing upload support for a handful +of un(der)used file extensions and distribution types. + +In particular, :pep:`527` proposed the removal of the ``bdist_dumb``, +``bdist_rpm``, ``bdist_dmg``, ``bdist_msi``, and ``bdist_wininst`` distribution +types, as well as the ``.tar``, ``.tar.bz2``, ``.tar.xz``, ``.tar.Z``, +``.tgz``, and ``.tbz`` file extensions on distribution filenames. + +:pep:`527` was fully enacted with +`PR #7529 `_ to Warehouse, +which was merged on 13 April 2020. + +The ``bdist_egg`` format +------------------------ + +The ``bdist_egg`` filetype identifies distributions in the +:term:`egg format `. The +egg format was introduced by setuptools in 2004 and is roughly equivalent +in functionality to the +:term:`wheel format ` +first introduced by :pep:`427` in 2012 +as :ref:`the standardized format ` +for :term:`packaging:Built Distributions`. + +Despite its longevity, the egg format has had +`limited adoption on PyPI `_. +Some observations from that issue: + +* In the month of May 2023, ``bdist_egg`` uploads accounted for 0.2% of all + distribution uploads to PyPI; +* ``pip`` deprecated its ``--egg`` option in 2016; +* ``setuptools`` has considered egg support deprecated since 2019; +* ``build`` only supports the ``sdist`` and ``bdist_wheel`` filetypes. + +Given the above, this PEP proposes the removal of the ``bdist_egg`` format +under the same justifications presented in :pep:`527`, namely: + +* Egg distributions are of of limited use to the broader ecosystem and + therefore represent a non-reciprocal maintenance burden; +* Having an additional built distribution format + is confusing to end users, who may + mistakenly pick it over the wheel format; + +This PEP *additionally* offers an argument for removal rooted in +standardization and duplication: the egg format is not standardized by any +PEP or other community standard, and overlaps heavily with its standardized +and well-supported alternative (wheel). + +The ``.egg`` file extension +--------------------------- + +The ``.egg`` file extension is used exclusively for distributions of the +``bdist_egg`` format. As such, it serves no purpose in a scenario where +PyPI disables new distribution uploads for ``bdist_egg`` distributions. + +Removal Process +=============== + +This PEP does **NOT** propose removing any existing files from PyPI, only +disallowing new ones from being uploaded. + +PyPI will provide a deprecation period of one month. At the beginning +of the deprecation period, maintainers of projects that have uploaded one or +more egg distributions since 1 Jan 2023 will receive a one-time email informing +them of the upcoming end of support for egg distribution uploads. + +During the deprecation period, users will continue to be allowed to upload egg +distributions to new and existing projects. Uploading an egg distribution +during this period will also send all maintainers of the project +a similar email as above, reminding them of the upcoming end of support. + +After the deprecation period, support for uploading egg distributions will +cease to exist on PyPI. + +Prior Art +--------- + +The removal process above was based on that of :pep:`527`, with the following +changes: + +* All projects will be continue to be allowed to upload eggs + during the deprecation period, not just those that have done so previously. +* Uploading an egg during the deprecation period will also trigger an email + to maintainers, in addition to the one-time email at the beginning. + +Backwards Compatibility +======================= + +Limited Impact +-------------- + +As noted in the rationale section, this PEP is expected to have no impact +on the overwhelming majority of PyPI users and projects, and there has been +`substantial community coordination `_ +over the past 1 1/2 years to minimize the impact on the few last use cases. + +Hosted Files +------------ + +This PEP does **NOT** propose the removal of any egg distributions that have +already been uploaded to PyPI. All previously uploaded egg distributions will +remain downloadable, ensuring that existing users will continue to be able +to download them. + +Deprecation Period +------------------ + +This PEP uses the removal process documented above, which specifies +a deprecation period of 1 month for projects that have previously uploaded +egg distributions to PyPI. + +After the end of the deprecation period, support for uploading new egg +distributions will cease to exist on PyPI. + +Security Implications +===================== + +This PEP does not identify any positive or negative security implications +associated with removing upload support for egg distributions. + +How To Teach This +================= + +As part of the removal process, PyPI will send emails to all maintainers of +projects that have previously uploaded egg distributions in 2023. + +Additionally, PyPI will write a post on the +`PyPI blog `_ that publicly announces the deprecation +period's start and end. + +Copyright +========= + +This document is placed in the public domain or under the +CC0-1.0-Universal license, whichever is more permissive.