include::_partials/attributes.adoc[]

== Retire Orphaned Packages

=== Description

Every release prior to the
https://fedoraproject.org/wiki/Schedule[Feature Freeze/Branching]
Release Engineering retires
https://fedoraproject.org/wiki/Orphaned_package_that_need_new_maintainers[orphaned
packages]. This keeps out unowned software and prevents future problems
down the road.

=== Action

The orphan process takes place in stages:

. Detecting a list of orphans and the dependencies that will be broken
if the orphans are removed.
. Sending the list of potential orphans to devel@lists.fedoraproject.org
for community review and removal from the orphan list.
. Retriring packages nobody wants to adopt.

==== Detecting Orphans

A script called `find_unblocked_orphans.py` assists in the detection
process. It should be run on a machine that has `koji` and
`python-fedora` installed. It runs without options and takes a while to
complete.

`find_unblocked_orphans.py` is available in the
https://pagure.io/releng[Release Engineering git repository]

==== Announcing Packages to be retired

`find_unblocked_orphans.py` outputs text to stdout on the command line
in a form suitable for the body of an email message.

....
$ ./find-unblocked-orphans.py > email-message
....

Email the output to the development list
(`devel@lists.fedodraproject.org`) at least a month before the feature
freeze, send mails with updated lists as necessary. This gives
maintainers an opportunity to pick up orphans that are important to them
or are required by other packages.

==== Retiring Orphans

Once maintainers have been given an opportunity to pick up orphaned
packages, the remaining
https://fedoraproject.org/wiki/How_to_remove_a_package_at_end_of_life[packages
are retired]

===== Bugs

This procedure probably leaves open bugs for the retired packages
behind. It is not within the scope of release engineering to take care
of these. If bugs are closed, only bugs targeted at Rawhide should be
affected, since other branches might still be maintained.

=== Verification

To verify that the packages were blocked correctly we can use the
`latest-pkg` `koji` action.

[source,subs="attributes+"]
....
$ koji latest-pkg dist-f{branched} wdm
....

This should return nothing, as the `wdm` package is blocked.

=== Consider Before Running

Generally we retire anything that doesn't leave broken dependencies. If
there are orphans whose removal would result in broken dependencies a
second warning should be sent to `devel@lists.fedoraproject.org` and to
`<package>-owner@fedoraproject.org` for each dependent package.

Allow another couple of days for maintainers to take notice and fix
these package so the package repository can be maintained without broken
dependencies or needing to the package. It is not good to have broken
package dependencies in our package repositories so every effort should
be made to find owners or to fix the broken dependencies.
