Go leaves will be mass retired in one month
by Maxwell G
(Resending as it seems this didn't reach the ML the first time...)
Hi Fedorians,
Changes/Mass_Retire_Golang_Leaves [1] has been approved by FESCo. As
part of this Change, all Go library packages that are leaves will be be
mass retired and removed from the Fedora 39 repositories in
approximately one month.
The following maintainers/groups own co-maintain or watch at least one
package that we have identified as a leaf:
@deepinde-sig
@go-sig
@osbuild-sig
agerstmayr
anthr76
athoscr
atim
carlwgeorge
dcavalca
dctrud
eclipseo
fab
fale
fuller
gundersanne
jchaloup
jdoss
jjelen
laiot
logic
mayorga
mgoodwin
nathans
obudai
pwouters
qulogic
rga
rominf
yanqiyu
I will forward this message to those users separately instead of BCCing.
Apparently, some people have broken filters that hide any email sent to
the ML even if it's addressed to them directly.
See [2] for a full list of leaves and [3] for a maintainer by maintainer
breakdown. Maintainers may opt out by cloning
https://pagure.io/GoSIG/go-leaves/ and pushing an `opt-out/{PKGNAME}`
file with a short justification.
Something like:
```
git clone ssh://git@pagure.io/GoSIG/go-leaves.git
cd go-leaves
echo "Dependency for foo (review bug #XXXXX)" > ./opt-out/bar
git add ./opt-out/bar
git commit -m "opt out bar"
git push origin
```
All Go SIG members have write access to this repository. Other users can
submit a pull request. You're also welcome to file an issue and I'll
push the file for you.
After a month has passed, we'll remove Go SIG write access from the
repository and stop accepting additional opt-outs. Then, we'll preform
test builds in Copr to make sure there's no false positives in the list.
Finally, I'll verify the results, opt out any additional false
positives, and preform the mass retirement. As usual, anybody can
unretire packages without a re-review within eight weeks by filing a
releng ticket.
[1] https://fedoraproject.org/wiki/Changes/Mass_Retire_Golang_Leaves
[2] https://pagure.io/GoSIG/go-leaves/blob/main/f/leaves
[3] https://pagure.io/GoSIG/go-leaves/blob/main/f/leaves-by-maintainer
Thank you for your cooperation,
--
Maxwell G (@gotmax23)
Pronouns: He/They
2 weeks, 6 days
F39 proposal: Mass Retire Golang Leaves (Self-Contained Change proposal)
by Ben Cotton
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(a)e.email; asm(a)redhat.com; golang(a)lists.fedoraproject.org
== 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_leave...
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...
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_leave...
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_leave...
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
1 month, 3 weeks