== Adjust EOLs and SLs on branches [NOTE] .Note ==== This SOP is about adjust EOLs and SLs on so-called "arbitrary" branches. Unretiring a package _also_ involves changing the EOL on a branch, but you won't find information on that here. See the unretirement SOP for more info there. ==== === Description With "arbitrary branching", modules can include streams for an RPM that are not directly associated with a Fedora release. Modules _themselves_ can have branches not directly associated with a Fedora release. For instance, our [.title-ref]#python3# module has a [.title-ref]#3.6# branch. The SLs on that module branch all go EOL on 2018-06-01. *@torsava*, one of the https://src.fedoraproject.org/modules/python3k[python3 module maintainers], may request that this branch have its EOL extended until 2018-12-01. When a maintainer wants to change EOL on a rpm, module, or container branch, they need to file a https://pagure.io/releng/issues[releng ticket] requesting it. They have no way to do it on their own. Releng must review the request, and then process it. === Policy Here are some _policy_ guidelines to help you (releng) make decisions about these tickets * Clarify. Does the maintainer want the EOL lengthed for an rpm? Or for a module? Or for a container? If they just say "increase the EOL for [.title-ref]#httpd#, please", it is not clear which thing they're really talking about. * Expect that maintainers generally know _when_ their EOL should go until. You don't need to go and research upstream mailing lists to figure out what makes sense. Politely asking the maintainer for some background information on _why_ the EOL should be changed is good to record in the ticket for posterity. Bonus points if they can provide references to upstream discussions that make the request make sense. * EOLs should _almost always_ only be extended into the future. Shortening an EOL should only be done with care. There might be modules out there that depend on an rpm branch with a conflicting EOL of their own. If a _shorter_ EOL is requested for an rpm branch, you should verify that no modules that depend on it have a conflicting EOL. If a _shorter_ EOL is requested for a module branch, you should verify that no other modules require it that have a conflicting EOL. * EOLs should not be arbitrary dates. At Flock 2017, we https://pagure.io/fedrepo_req/issue/100[decided on using two standard dates] for EOLs to help make things less crazy. You should use December 1st or June 1st of any given year for all EOL dates. * Many branches will _often_ have multiple SLs all with the _same_ EOL. I.e., the branch is fully supported until such time as it is totally retired. There is no gray area. However, it is _possible_ to have branches with piecemeal SLs and EOLs. A branch may support [.title-ref]#bug_fixes# until time X but will further support [.title-ref]#security_fixes# until time Y. This is nicely flexible for the maintainers, but also introduces complexity. If a maintainer requests piecemeal SL EOLs, ask to make sure they really want this kind of complexity. === Action We have a script in the releng repo: .... $ PYTHONPATH=scripts/pdc python3 scripts/pdc/adjust-eol.py -h .... [NOTE] .Note ==== Run it with [.title-ref]#python3#. It imports [.title-ref]#fedrepo_req# which is python3 by default. Installing [.title-ref]#python2# dependencies should be possible when needed. ==== Here is an example of using it to increase the SL of the [.title-ref]#3.6# branch of the [.title-ref]#python3# module (not the rpm branch): .... $ PYTHONPATH=scripts/pdc python3 scripts/pdc/adjust-eol.py \ fedora \ SOME_TOKEN \ python3 \ module \ 3.6 \ 2018-12-01 Connecting to PDC args.server 'fedora' with token 'a9a1e4cbca122c21580d1fe4646e603a770c5280' Found 2 existing SLs in PDC. Adjust eol of (module)python3#3.6 security_fixes:2018-06-01 to 2018-12-01? [y/N]: y Adjust eol of (module)python3#3.6 bug_fixes:2018-06-01 to 2018-12-01? [y/N]: y Set eol to 2018-12-01 on ['(module)python3#3.6 security_fixes:2018-06-01', '(module)python3#3.6 bug_fixes:2018-06-01'] ....