F39 proposal: Mass Retire Golang Leaves (Self-Contained Change proposal)

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

 



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

This document represents a proposed Change. As part of the Changes
process, proposals are publicly announced in order to receive
community feedback. This proposal will only be implemented if approved
by the Fedora Engineering Steering Committee.

== Summary ==

As of Jan 2023, 275/1660 (17%) library only Go source packages are
leaves.
Overall, these packages are maintained by 35 different maintainers along with
the Go SIG.
[https://pagure.io/GoSIG/go-leaves/blob/main/f/leaves These leaves]
([https://pagure.io/GoSIG/go-leaves/blob/main/f/leaves-by-maintainer
by maintainer])
will be mass retired in Fedora 39.

== Owner ==
* Name: [[User:gotmax23| Maxwell G]]; [[User:alexsaezm | Alejandro
Sáez Morollón]]; [https://pagure.io/GoSIG/go-sig the Go SIG]
* Email: gotmax@e.email; asm@xxxxxxxxxx; golang@xxxxxxxxxxxxxxxxxxxxxxx


== Definitions ==

* ''library only source package'' -- a component/source package that
only contains noarch golang ''*-devel'' subpackages.
* ''binary subpackage'' -- an arched subpackage that contains go binaries.
* ''source package with binaries'' - a component/source package that
contains at least one ''binary subpackage''; may also contain library
subpackages.
* ''leaf'' -- a library only source package whose subpackages don't
have any dependents

== Detailed Description ==
The Go SIG maintains over 2000 source packages. 275 of these packages are
''leaves''. Overall, these packages are assigned to 35 different maintainers.
We'd like to clean up these unneeded packages to allow us to better direct our
time and unclutter the distribution. Handling this large number of leaves one
by one and maintainer by maintainer proved ineffective, so we're taking a more
heavy handed approach and mass retiring these leaf packages prior to the
release of Fedora 39.

''Source packages with binaries'' will be excluded even if the ''binary
subpackage''(s) and/or the -devel subpackage(s) are leaves.

See the next section for more information on how we plan to implement this.
In short:
* We wrote a script to identify the ''leaf'' packages.
* The current list of ''leaf'' packages is available at
https://pagure.io/GoSIG/go-leaves/blob/main/f/leaves. A by maintainer
breakdown is available at
https://pagure.io/GoSIG/go-leaves/blob/main/f/leaves-by-maintainer.
* We will contact the maintainers of these packages and allow them to opt-out.
* We will use Copr to verify our work before proceeding with the mass removal.

=== Implementation ===

Finding the leaves:

([https://git.sr.ht/~gotmax23/fedora-scripts/tree/main/item/go-sig/go_leaves.py
go_leaves.py])

# Find the source packages that BuildRequire go-rpm-macros or any
golang.src subpackage
# Iterate over the source packages list and find the subpackages for each one
# If all of a source package's subpackages are noarch and contain
"-devel", it is considered a leaf.
# Remove packages from the leaves list if they've opted out.
# Store the output in
https://pagure.io/GoSIG/go-leaves/blob/main/f/leaves. Update it
periodically.

Confirmation:

# Create a blank ''blocker'' package that Conflicts with the to be
removed packages.
# Create a new Copr with the blocker package in its default buildroot.
This will simulate the actual removal of these packages.
# Rebuild all of the non leaf packages.
# Investigate new failures and rebuild in a control Copr.

Opt outs:

# A list of opt outs will be kept in
https://pagure.io/GoSIG/go-leaves. Go SIG members will have `commit`.
# As explained in the aforementioned repo's README, packagers can
simply push an `opt-out/{component}` text file with a short
justification to opt out.


Mass Retirement:

# Shallow clone the ''leaves''' distgit repositories and run `fedpkg
retire` on each.
# Double check that the packages are properly blocked/retired in Koji and PDC.


== Feedback ==
This was briefly discussed in a Go SIG meeting
([https://meetbot.fedoraproject.org/fedora-golang/2023-01-16/go_sig_meeting.2023-01-16-19.00.html
minutes]).
Feedback was generally positive.

== Benefit to Fedora ==

This change will allow the Go SIG to focus its limited people power on
maintaining packages that are actually needed.
Fedora won't waste resources uselessly rebuilding these packages.
Hopefully, the other packages will be better maintained.


== Scope ==
* Proposal owners:
** ✅ Write a script to determine leaves.
([https://git.sr.ht/~gotmax23/fedora-scripts/tree/main/item/go-sig/go_leaves.py
go_leaves.py])
** ✅ Store an updated list of leaves in https://pagure.io/GoSIG/go-leaves
** Directly contact affected maintainers and devel-announce. Ensure
opt outs are properly accounted for.
** Simulate the removal of these packages and rebuild the Golang stack
in Copr. Investigate any new failures.
** Mass retire packages after waiting a few weeks for maintainers to
opt out. Aim to have this completed before the mass rebuild.

* Release engineering: [https://pagure.io/releng/issue/11253 #11253]
** After we preform the mass retirement, releng will allow any Go SIG
member to unretire a ''leaf'' within eight weeks even if they're not
the main admin.
** The change owners will mass retire the packages themselves using
go-sig/provenpackager membership.
** Ensure that the packages are properly blocked/retired in Koji and PDC.

== Upgrade/compatibility impact ==

There should be none. These library packages are not meant for end users.
We will not Obsolete these packages, so they won't be removed from
existing systems.


== Contingency Plan ==

The change can be deferred if the prep work isn't completed in time.

The change owners are taking multiple measures to avoid retiring packages that
are not actually ''leaves'' (i.e. false positives).
In the event of unforeseen issues, some or all of the packages can be
unretired and rebuilt.
Retagging builds from F38 is also possible,
as Golang library packages only contain source code and are architecture
independent.


== Documentation ==
The current draft of the package leaves script
[https://git.sr.ht/~gotmax23/fedora-scripts/tree/main/item/go-sig/go_leaves.py
is available].


== Release Notes ==

Remove unused Golang libraries from the repositories.
These packages are not meant for end user consumption to begin with.
We will not Obsolete these packages, so they won't be removed from
existing systems.


-- 
Ben Cotton
He / Him / His
Fedora Program Manager
Red Hat
TZ=America/Indiana/Indianapolis
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[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