#40 Update the updates policy document
Closed 3 years ago by zbyszek. Opened 3 years ago by kevin.
fesco/ kevin/fesco-docs updates-update  into  master

@@ -15,11 +15,39 @@ 

  pushing the updates. The link:https://fedoraproject.org/wiki/Fedora_Release_Life_Cycle[Fedora Release Life Cycle]

  provides a more detailed overview of the development process.

  

+ == Common updates requirements for all Fedora releases

+ 

+ Some critera applies to any update to any fedora branch/release:

+ 

+ [[updating-inter-dependent-packages]]

+ === Updating inter-dependent packages

+ 

+ When one updated package requires one or more other packages, the packages should be submitted

+ together as a single update. For instance, if package A depends on packages B and C, and you want to

+ update to a new version of package A which requires new versions of B and C, you must submit a

+ single update containing the updated versions of all three packages. It is a bad idea to submit

+ three separate updates, because if the update for package A is pushed stable before the updates for

+ packages B and C, it will cause dependency problems. There is information on how to submit

+ multi-package updates in the

+ link:https://fedoraproject.org/wiki/Package_update_HOWTO#Updating_inter-dependent_packages[package update HOWTO]

+ and information about using side-tags for multiple updates in 

+ link:https://docs.fedoraproject.org/en-US/rawhide-gating/multi-builds/[Rawhide Gating/multi-builds].

+ 

+ [[consumable-updates]]

+ === Consumable updates

+ 

+ Bodhi updates should only be created for builds which are expected to qualify for being pushed to stable.

+ Maintainers should not use bodhi's testing states to test updates they never intend to push stable.

+ This sort of testing should be done in link:https://copr.fedorainfracloud.org/[Copr] or other

+ seperate public repositories. Consult with the QA team for further testing assistance.

+ 

  == Rawhide / devel / master

  

  link:https://fedoraproject.org/wiki/Releases/Rawhide[Rawhide] is the always-rolling development tree.  Package

  updates built for rawhide are composed every day and pushed out to all rawhide consumers.  New builds against

- this tree also are added to the build root (ie, other packages build from them).

+ this tree also are added to the build root (ie, other packages build from them). This tree

+ is intended to meet the link:https://fedoraproject.org/wiki/Basic_Release_Criteria[Basic Release Critera] for any

+ successfull compose so maintainers can integrate their changes with everyone else.

  

  Repos available: link:https://fedoraproject.org/wiki/Repositories#rawhide[_rawhide_]

  
@@ -34,20 +62,29 @@ 

  results. Package maintainer can opt-in for the gating of a package, by setting up individual gating policies,

  see link:https://docs.fedoraproject.org/en-US/rawhide-gating/optin/[Rawhide Gating/optin].

  

- For updates to rawhide packages, Maintainers SHOULD:

+ As soon as a build is completed, a bodhi update is automatically created. The update is used to 

+ show test results. If gating tests pass, the update is marked stable after a few minutes, pushed stable

+ and will be added to the next nightly compose.

  

- * Try not to push a broken build (breaks the default buildroot package set, etc.).

+ For updates to rawhide packages, Maintainers MUST:

+ 

+ * not push any known broken builds (breaks the default buildroot package set, etc.). 

+   This causes additional work for other maintainers trying to integrate their changes.

  * When a proposed update contains an ABI or API change: notify *a week in advance* both the

    link:https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/[devel list]

    and maintainers directly (using the ``_packagename_-\owner@fedoraproject.org`` alias)

    whose packages depend on yours to rebuild or offer to do these rebuilds for them.

- * Use a separate buildsystem tag when dealing with mass builds of many packages, so they can land at

-   the same time. File a link:https://pagure.io/releng/new_issue[rel-eng ticket] for this.

+ * Use a side tag tag when dealing with mass builds of many packages, so they can land at

+   the same time. See

+   link:https://docs.fedoraproject.org/en-US/rawhide-gating/multi-builds/[Rawhide Gating/multi-builds]

  * Feel free to push out the newest version of packages as long as they do not cause breakage. Also

    keep in mind when the next Fedora release will be branched off, and be fairly confident that there

    will be a stable enough release in time for the next Fedora release. Otherwise you may have to

    back down to an older, stable version after the branching, which may involve epochs and other

    inconveniences.

+ * Once a package has been added to the compose and that compose has finished and synced to the master

+   mirrors, it will normally not be untagged. This is required to allow others to depend on the

+   build once it has become visible. In exceptional cases, releng may untag packages.

  * If approved by FESCo, push pre-release versions of low level packages.

    FESCo approves certain packages, including (but not limited to) ``glibc`` and ``gcc``,

    to provide pre-release versions here.
@@ -58,51 +95,61 @@ 

  

  A link:https://fedoraproject.org/wiki/Releases/Branched[Branched] release exists for part of the

  development cycle. It is branched off Rawhide and eventually becomes the next stable release.

- After the <<bodhi-enabling>> point, Branched releases do use the update feedback system (Bodhi).

+ All successfull branched composes should meet the 

+ link:https://fedoraproject.org/wiki/Basic_Release_Criteria[Basic Release Critera]

+ 

+ Branched releases do use the update feedback system (Bodhi): At first just like rawhide (updates are

+ automatically created when a build finishes, tests run and builds are automatically pushed into the next

+ compose), but then at Beta Freeze they switch to using it as stable releases do (maintainers must create

+ updates and submit them for testing, etc).

+ 

  There are several "phases" that a branched release goes through that affect what updates can and

  should be done. In general maintainers should keep in mind that this tree is being used to stabilize

  for the next release, so changes should be careful and considered and heading toward stability.

  

- [[branched-pre-bodhi-enabling]]

- === https://fedoraproject.org/wiki/Releases/Branched[Branched], pre-Bodhi enabling

+ [[post-branch-freeze]]

+ === https://fedoraproject.org/wiki/Releases/Branched[Branched], post-branch-freeze

+ 

+ Once the new release is branched off rawhide, the updates flow through bodhi is stopped until

+ there has been a successful branched compose. This period usually lasts just a few days. Release

+ engineering may pass some updates to stable to get the compose to complete, but otherwise all updates

+ are stopped until this initial branched compose is completed. This is to make sure we have a

+ compose to build on and aren't dealing with problems landing in new updates before we are

+ ready for them.

+ 

+ [[post-branch-freeze-to-bodhi-compose-enablement]]

+ === https://fedoraproject.org/wiki/Releases/Branched[Branched], post-branch-freeze-to-bodhi-compose-enablement

  

  For a short time after link:https://fedoraproject.org/wiki/Fedora_Release_Life_Cycle[the branch event

- happens] but before the <<bodhi-enabling>> point, the Branched release works exactly like Rawhide:

+ happens] but before the <<beta-freeze>> point the Branched release works like Rawhide: 

  builds submitted by packagers are considered

- link:https://fedoraproject.org/wiki/Repositories#stable[stable] immediately, and sent to the

+ link:https://fedoraproject.org/wiki/Repositories#stable[stable] after passing through any gating tests

+ via a bodhi update, and are sent to the

  link:https://fedoraproject.org/wiki/Repositories#fedora[_fedora_ repository] directly in the next nightly

  compose. There are no restrictions beyond those for Rawhide at this point, but maintainers *SHOULD* be

  thinking about stabilization from this point onward, and making sure their packages will be in good

- condition well in advance of the stable release. Some packages will be signed at this point, but not

- all of them. You may have to use `--nogpgcheck` to install or update.

+ condition well in advance of the stable release. 

  

  Repos available: link:https://fedoraproject.org/wiki/Repositories#fedora[_fedora_]

  

- [[bodhi-enabling]]

- === Bodhi enabling

+ [[beta-freeze]] [[bodhi-compose-enablement]]

+ === beta-freeze and bodhi-compose-enablement

  

- At the _Bodhi enabling point_, the Bodhi update system is enabled for the Branched release. After

- this point *for the entire remaining lifetime of the release*, all updates must go through Bodhi

- before they can be marked _stable_ and moved to either

- link:https://fedoraproject.org/wiki/Repositories#fedora[_fedora_] or

- link:https://fedoraproject.org/wiki/Repositories#updates[_updates_].

- At present, the _Bodhi enabling point_ occurs on the day of the

- link:https://fedoraproject.org/wiki/Milestone_freezes[Beta freeze],

- but it is important to remember that they are distinct events:

- the Beta freeze lasts until Beta release, but Bodhi enabling is permanent.

+ At the <<bodhi-compose-enablement>> point, the Bodhi update system is changed for the branched release to behave 

+ as it does for stable releases (see below) instead of rawhide. That is, updates are manually created

+ by maintainers instead of automatically being created and checked only against gating tests.

+ Updates now pass through updates-testing to allow for user feedback.

  

  Repos available: link:https://fedoraproject.org/wiki/Repositories#fedora[_fedora_],

  link:https://fedoraproject.org/wiki/Repositories#updates-testing[_updates-testing_]

  

- At this point all packages will be signed and gpgcheck should be enabled for all installs/updates.

- 

  [[pre-beta]]

  === Pre Beta

  

- This is the time between the <<bodhi-enabling>> point and the Beta release. During this time we are

+ This is the time between the <<branched-beta-freeze>> point and the Beta release. During this time we are

  attempting to stabilize the major versions of software that will be shipped with the final release

  of the OS. Major updates can be tolerated, but breaking things for early testers should be avoided

- if possible. Additionally, as we get close to Alpha or Beta releases any change that breaks composes

+ if possible. Additionally, as we get close to Beta or Final releases any change that breaks composes

  of Live media, install media or testing should be avoided. Packages for Changes should be landing

  and getting major testing.

  
@@ -131,7 +178,7 @@ 

  ==== Milestone freezes

  

  During this period there are two link:https://fedoraproject.org/wiki/Milestone_freezes[Milestone freezes],

- _Alpha freeze_ and _Beta freeze_. Each is scheduled to run for the two weeks leading up to

+ _Beta freeze_ and _Final freeze_. Each is scheduled to run for the three weeks leading up to

  the release date (and in fact lasts until the release is signed off, even if it is delayed). During

  these times, builds will not be marked _stable_ and moved from

  link:https://fedoraproject.org/wiki/Repositories#updates-testing[_updates-testing_] to
@@ -468,50 +515,14 @@ 

  work to prevent the issue from happening again. A past record of such issues can be found at

  link:https://fedoraproject.org/wiki/Updates_Lessons[Updates Lessons].

  

- FESCo will work with QA and others to prevent or mitigate the issue.

+ [[bodhi]]

+ All updates to any Fedora pass though the link:https://bodhi.fedoraproject.org updates application.

  

- [[updating-inter-dependent-packages]]

- == Updating inter-dependent packages

+ [[openqa]]

+ link:https://openqa.fedoraproject.org[OpenQA] tests critpath updates in stable releases and compose artifacts

+ for rawhide/branched composes/release candidates.

  

- When one updated package requires another (or more than one other), the packages should be submitted

- together as a single update. For instance, if package A depends on packages B and C, and you want to

- update to a new version of package A which requires new versions of B and C, you must submit a

- single update containing the updated versions of all three packages. It is a bad idea to submit

- three separate updates, because if the update for package A is pushed stable before the updates for

- packages B and C, it will cause dependency problems. There is information on how to submit

- multi-package updates in the

- link:https://fedoraproject.org/wiki/Package_update_HOWTO#Updating_inter-dependent_packages[package update HOWTO].

- 

- [[taskotron]]

- == Taskotron

- 

- The Taskotron automated testing system runs two tests against all updates submitted to Bodhi: a

- dependency check (to ensure all dependencies of the package(s) can be fulfilled from the

- repositories) and an upgrade path check (to ensure the update does not break the upgrade path from

- release to release, i.e. that the update does not contain a package versioned higher than the newest

- version of the same package available in a later Fedora release). Taskotron adds comments to Bodhi

- with the results of these test runs. Failing either test will disable

- link:https://fedoraproject.org/wiki/Bodhi#Karma_Automatism[Bodhi karma automatism] for

- the update (if it was enabled). If you submit an update that fails one of these

- tests, please check the result and fix the problem. If you are sure there is an error in the

- test rather than an error in your package, you may still manually push the update or re-enable karma

- automatism.

- 

- Previously, the old AutoQA system ran similar checks to Taskotron.

- The scope of these automated checks is expected to expand in future.

- The link:https://fedoraproject.org/wiki/QA:Package_Update_Acceptance_Test_Plan[Package Update Acceptance Test Plan]

- was written as the original plan for AutoQA update validation,

- and may still be seen as a framework for future work on Taskotron.

- 

- [[bodhi-use]]

- == Bodhi Use

- 

- Bodhi is meant as the method for getting updates into an existing release or pre-release. It does

- provide a testing mechanism to make sure that nothing unforeseen will arise, but the expectation is

- that packages submitted are likely ready to ship as an update. As such, any packages submitted to

- Bodhi must be done with the intent that the package submitted is ready for general consumption. The

- users kind enough to test these packages have come to expect this, and doing anything else moves

- against their good will, and is likely to drive testers away. Bodhi and updates-testing are not a

- place for experimentation or advanced notification of potentially disruptive updates. These should

- be handled with packages in link:https://copr.fedorainfracloud.org/[Copr] or another public repository

- with a message to call for testing on the appropriate mailing lists.

+ [[fedora-ci]]

+ link:https://docs.fedoraproject.org/en-US/ci/[Fedora CI] runs tests on all bodhi updates. If package 

+ maintainers have marked the tests as blocking, the bodhi update will be blocked

+ from going stable.

  • Drop references to Alpha (we no longer have an Alpha)
  • Drop references to taskotron (it has been retired)
  • Consolidate some things as common to all branches.
  • Reword things where we didn't use to have bodhi enabled
    (But now it is all the time everywhere).
  • Mention side-tags in several more places
  • Drop "Bodhi enablement" Since we always have bodhi enabled.
  • Add references to "Base Critera" for rawhide/branched composes.
  • Try to note when bodhi automatically makes an update and when
    maintainers have to do so themselves.
  • Added fedora-ci and openqa links/sections.

CHANGE: allow releng to untag things from rawhide in exceptional
situations (left up to releng). (ie, needs fesco ratification)

Signed-off-by: Kevin Fenzi kevin@scrye.com

Well, "Bodhi enablement" can't be dropped exactly, though we should probably rename it. There is still a big difference between Rawhide-and-early-Branched "immediate automatic stable push as long as gating checks pass" mode and the mode we enter shortly after Branching where karma or time requirements are enforced. That's what is currently referred to as the "Bodhi enablement point". Suggestions for new names on a postcard. :)

.-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-.
|                                                           .-------.   |
|                                                           |       |   |
|    Dear Fedora,                                           |       |   |
|                                                           |   50¢ |   |
|                                                           |       |   |
|             I propose the term:                           `-------'   |
|                                                                       |
|                                                                       |
|                                                                       |
|                         "Updates testing enablement"                  |
|                                                                       |
|                                                                       |
|      Sincerely,                                                       |
|      Miro                                                             |
|                                                                       |
|      PS This is supposed to be a postcard                             |
|                                                                       |
|                                                                       |
`-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-'

(Edited to add the stamp.)

Not a post card, but FWIW the schedule now calls it "Bodhi updates-testing activation point" after receiving similar feedback from Adam and/or Mohan. (Mohadam?)

When one updated package requires another (or more than one other)

Maybe "When one updated package requires on or more other packages" ? I think that'd be more natural than the version with a parenthetical clarification.

Maybe split the (source) text one-sentence-per-line?

"." should be here, and not after HOWTO] above.

Try not to push a broken build

Pushing broken builds was considered "semi-ok" in the past, and hence this recommendation is so weak.
We should make it much stronger:

Never push a broken build

And "SHOULD" above could be changed to "MUST".

All updates MUST be ready for consumption in the Fedora release their bodhi update is created for.

This may be read as that packagers must not submit updates unless they are 100% sure about them (esp. with "MUST").
Maybe:

Bodhi updates should be created only for packages which are expected to qualify for being pushed to stable.
Maintainers should not create bodhi updates for test or other builds that they never intend to push stable.
This sort of testing should be done in link:https://copr.fedorainfracloud.org/[Copr] or other seperate public repositories.

Also:

Consult with the QA team for further testing assistance.

I'm not sure. Can the QA team realistically help, except in isolated cases? Most of the testing is done by contributors who are not part of the official "QA team".

It's intended that this tree meets

"This tree is intended to meet" ?

As soon as a build is completed, a bodhi update is automatically created and the update is used to
show test results. If gating tests pass, the update is marked stable after a few minutes, pushed stable
and will be added to the next nightly compose.

I'm looking at e.g. https://englishstudyonline.org/fanboys/, and the uses of "and" here seem to fall into the "coordinate two or more items", which would mean that some commas are missing.

I think this would read better as:

As soon as a build is completed, a bodhi update is automatically created.
The update is used to show test results.
If gating tests pass, the update is marked stable after a few minutes, pushed stable, and will be added to the next nightly compose.

This is to prevent others from being able to depend on changes once they have happened.

"This is required to allow others to depend on the build once it has become visible."

In exceptional cases, releng may untag packages, but this will be a last resort.

Unnecessary repeat. Maybe just "In exceptional cases, releng may untag packages."

automatically created when a build finishes, tests run and automatically pushed to include in the next

"automatically created when a build finishes, tests run, and builds are automatically pushed to the next"

(or "into the next compose")

until there is a successfull

"until there has been a successful" (note typo fix)

have indicated that some of these tests block release

Unless I'm misunderstanding what this is about, this should be something like "have marked the tests as blocking"

FESCo will work with QA and others to prevent or mitigate the issue.

This sentence repeats what is in the previous paragraph.

When one updated package requires another (or more than one other)

Maybe "When one updated package requires on or more other packages" ? I think that'd be more natural than the version with a parenthetical clarification.

Maybe split the (source) text one-sentence-per-line?

Agreed. Done.

"." should be here, and not after HOWTO] above.

Fixed.

Try not to push a broken build

Pushing broken builds was considered "semi-ok" in the past, and hence this recommendation is so weak.
We should make it much stronger:

Never push a broken build

And "SHOULD" above could be changed to "MUST".

ok. How about "Never push a known broken build" ?

All updates MUST be ready for consumption in the Fedora release their bodhi update is created for.

This may be read as that packagers must not submit updates unless they are 100% sure about them (esp. with "MUST").
Maybe:

Bodhi updates should be created only for packages which are expected to qualify for being pushed to stable.
Maintainers should not create bodhi updates for test or other builds that they never intend to push stable.
This sort of testing should be done in link:https://copr.fedorainfracloud.org/[Copr] or other seperate public repositories.

How about:
Bodhi updates should only be created for builds which are expected to qualify for being pushed to stable.

Also:

Consult with the QA team for further testing assistance.

I'm not sure. Can the QA team realistically help, except in isolated cases? Most of the testing is done by contributors who are not part of the official "QA team".

Well, I was picturing some base package wanting special testing before being officially built. I think the QA folks could indeed advise how to test it and call for testers.
But perhaps we should make sure they want this in there before we include it. @adamwill ?

It's intended that this tree meets

"This tree is intended to meet" ?

Changed.

As soon as a build is completed, a bodhi update is automatically created and the update is used to
show test results. If gating tests pass, the update is marked stable after a few minutes, pushed stable
and will be added to the next nightly compose.

I'm looking at e.g. https://englishstudyonline.org/fanboys/, and the uses of "and" here seem to fall into the "coordinate two or more items", which would mean that some commas are missing.

I think this would read better as:

As soon as a build is completed, a bodhi update is automatically created.
The update is used to show test results.
If gating tests pass, the update is marked stable after a few minutes, pushed stable, and will be added to the next nightly compose.

Changed.

This is to prevent others from being able to depend on changes once they have happened.

"This is required to allow others to depend on the build once it has become visible."

In exceptional cases, releng may untag packages, but this will be a last resort.

Unnecessary repeat. Maybe just "In exceptional cases, releng may untag packages."

Changed.

automatically created when a build finishes, tests run and automatically pushed to include in the next

"automatically created when a build finishes, tests run, and builds are automatically pushed to the next"

(or "into the next compose")

Changed.

until there is a successfull

"until there has been a successful" (note typo fix)

Changed.

(below)

"(see below)" ?

Changed.

have indicated that some of these tests block release

Unless I'm misunderstanding what this is about, this should be something like "have marked the tests as blocking"

Changed.

FESCo will work with QA and others to prevent or mitigate the issue.

This sentence repeats what is in the previous paragraph.

Yep. Dropped.

Will push these changes as another commit (and can squash them at the end when we are ok with them).

1 new commit added

  • changes from pr review
3 years ago

I think this should be renamed to something like "from post-branch-freeze to bodhi-change-point" as there's no freeze period and to avoid confusion with beta-freeze

Why "beta-freeze"? Isn't that at the end of Pre Beta period?
What about "Bodhi compose enablement point"?

I think this should be renamed to something like "from post-branch-freeze to bodhi-change-point" as there's no freeze period and to avoid confusion with beta-freeze

Well, its 'pre' the beta freeze, but I guess I can see how someone might confuse that with another freeze... it's hard to describe it without describing it in relation to a thing thats a freeze. :(
Will try post-branch-freeze-to-bodhi-change-point. Thanks.

Why "beta-freeze"? Isn't that at the end of Pre Beta period?

No, it's the beginning of the pre-beta period...

What about "Bodhi compose enablement point"?

ok, adjusted. Another commit will be pushed in a min.

Thanks for comments, keep em coming!

1 new commit added

  • Adjust some more for comments/feedback.
3 years ago

Why call it "bodhi compose enablement"? I find that is even less descriptive than "updates-testing enablement point". I think it will be probably confusing to anybody who is not familiar with how the internal processes work (and does not care whether a release is composed by bodhi or koji at any point in time).

The only thing that changes for packagers is that they need to create updates manually instead of them being created automatically, so why not call by how it affects packagers: the point in time after which bodhi updates need to be crated manually by packagers instead of automatically? Maybe ... "Switch to manual update creation" , "Start of manual update flow", or even "Termination point of automatic bodhi update creation"?

Yeah, I know, at this point this sounds like "I like my bikeshed green" ... but especially for new contributors, descriptive language matters a lot, and exposing implementation details, like which process is used to "compose" builds into a repository, is more confusing than helpful, in my experience.

Why call it "bodhi compose enablement"?

I have to concur. The title is "beta-freeze and bodhi-compose-enablement", but the text talks about neither of the two. I agree with @decathorpe that the primary way how we refer to this phase should be based on how users (i.e. our packagers) view this. There should also be a separate paragraph that describes that in this phase the way that composes are done is changed.

These freezes are technically not a part of the Updates Policy, but are briefly mentioned here for clarity. The link:https://fedoraproject.org/wiki/Milestone_freezes[Milestone freezes] page provides more details and is the canonical reference in case of any conflict.

IIRC, this text was written by @adamwill ages ago. I don't think it makes sense anymore. This document describes the freezes in detail as an integral part of the update policy. So I think it'd be better to just say something like
"link:https://fedoraproject.org/wiki/Milestone_freezes[Milestone freezes] describes the processes of submitting packages as freeze exceptions."

--

Re: the detailed description of karma requirements for packages.
1. Are those descriptions even correct? https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/PQNU6ODOGNYLEASNHMN72TJGBJ6PWDEM/ says they are not ;( @decathorpe comment please.
2. Do we want those detailed descriptions? We have very verbose and repeated descriptions of critpath and the minimum karma requirements, and then we say that packagers must create updates, and only in a footnote clarify that effectively this is all enforced by bodhi. (A text like "From this point onward Maintainers MUST Push all updates first to updates-testing." is actively harmful, because it confuses packers by telling them to do something which they can't actually do and what is done automatically.)

I think we should completely invert the text:
- in the main text, just say "Updates must be created in bodhi. Minimum karma requirements for updates are specified in the table below. Bodhi sets reasonable defaults and enforces those requirements for updates."
- add a table where the reqs are listed. I think this will be much easier to grok than the repeated descriptions in prose. (Obviously the table must match what bodhi actually implements...)

The text does not describe automatic pushing of updates. The table should make a distinction between when bodhi will automatically push an update to stable and when the maintainer is allowed to manually push the update to stable.

Re: the detailed description of karma requirements for packages.
1. Are those descriptions even correct? https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/PQNU6ODOGNYLEASNHMN72TJGBJ6PWDEM/ says they are not ;( @decathorpe comment please.

Yeah, this is really confusing, because there are multiple avenues for packages to get submitted for "stable", and the values are different for critpath packages. So unless I am remembering something wrong, these are the ways to make update go "stable":


non-critpath updates:

  • update reaches "autokarma" (minimum +1, default value +3)
  • update is unpushed if it reaches "negative autokarma" (default value -3)
  • update reaches "autotime" (minimum 7 days, default value 7 days - unless when applied to a branched release between "bodhi updates-testing enablement point" and "beta freeze", then both those values are 3 days)
  • update reaches "minimum stable karma" and packager pushes it to stable manually before it reaches the set "autokarma" or "autotime" values

critpath / EPEL updates:

  • update reaches "autokarma" (minimum +2, default value +3)
  • update is unpushed if it reaches "negative autokarma" (default value -3)
  • update reaches "autotime" (minimum 14 days, default value 14 days, unsure how this value is different between updates-testing enablement and beta freeze)
  • update reaches "minimum stable karma" and packager pushes it to stable manually before it reaches the set "autokarma" or "autotime" values

Both the automatic "stable" pushes by bodhi for "autokarma" and "autotime" only happen if the respective option is enabled for the update (on by default).

The "minimum stable karma" seems to be +2 regardless of critpath / EPEL status, but this doesn't seem to be documented anywhere.


This is, to the best of my knowledge, the "complete linearized decision tree for updates going to stable" . If I made a mistake, please correct me. Maybe @mattia can help us out here.

This is, to the best of my knowledge, the "complete linearized decision tree for updates going to stable" . If I made a mistake, please correct me. Maybe @mattia can help us out here.

A quick graph of the requirements needed for pushing an update to stable are summarized here. This is what the draft says, then I checked in Bodhi and it seems correct to me.

For non-critpath updates we only have a requirement of 3 or 7 days in testing, but that can easily be overridden by the submitter setting a min karma to +1, so that as soon as the updates get a positive karma, it will be autopushed to stable.

Would someone want to propose a PR/commit on top of this one? I am afraid I am finding it hard to fold in most recent round of comments. You want a table for all the ways packages go stable?

I'm fine changing bodhi-compose-enablement, but I don't like any of the proposed new names...

I think things might be getting a bit unwieldy here. Originally this doc was for maintainers to know what to do... but now it seems like it's turning into a comprehensive doc on how the updates work with composes and how the fedora lifecycle works. Perhaps it should be split into 2 docs? one just for what maintainers should know/do and one with more details on how everything works with composes, etc?

+1 'bodhi-compose-enablement' is a bad name for this policy. If we want a new 'generic' name that can be used for various docs aimed at various people, "full Beta requirement activation point"? Otherwise I kind of like @decathorpe 's suggestion of using a name relating to what packagers actually have to do, submit updates manually, for this document and others aimed at packagers.

These freezes are technically not a part of the Updates Policy, but are briefly mentioned here for clarity. The link:https://fedoraproject.org/wiki/Milestone_freezes[Milestone freezes] page provides more details and is the canonical reference in case of any conflict.

IIRC, this text was written by @adamwill ages ago. I don't think it makes sense anymore. This document describes the freezes in detail as an integral part of the update policy. So I think it'd be better to just say something like
"link:https://fedoraproject.org/wiki/Milestone_freezes[Milestone freezes] describes the processes of submitting packages as freeze exceptions."

I disagree. The Milestone freezes page is still the actual definition of that policy/process, and contains plenty of detail that this policy (as it stands, and after this PR) does not. It also doesn't really "describe the process of submitting packages as freeze exceptions" - it just links to https://fedoraproject.org/wiki/QA:SOP_freeze_exception_bug_process for that, which is the document that actually does that. The Milestone freezes page documents the whole of what a 'freeze' is and what it applies to and what that means. We could change "briefly mentioned" to just "mentioned" or "referred to", though.

Two more commits on top in #41, PTAL.

Pull-Request has been closed by zbyszek

3 years ago
Metadata