Description of problem:
dnf update erroneously enables module stream for libgit2, see below.
# dnf update
Last metadata expiration check: 0:01:32 ago on Thu 04 Oct 2018 05:40:12 PM CEST.
Problem 1: cannot install the best update candidate for package libnghttp2-1.33.0-1.fc29.x86_64
- package libnghttp2-1.33.0-1.module_2177+2526c218.x86_64 is excluded
Problem 2: cannot install the best update candidate for package libuv-1:1.23.0-1.fc29.x86_64
- package libuv-1:1.23.0-1.module_2177+2526c218.x86_64 is excluded
Problem 3: cannot install the best update candidate for package nodejs-1:10.11.0-1.fc29.x86_64
- package nodejs-1:10.11.0-1.module_2200+adbac02b.x86_64 is excluded
Problem 4: cannot install the best update candidate for package npm-1:6.4.1-188.8.131.52.1.fc29.x86_64
- package npm-1:6.4.1-184.108.40.206.1.module_2200+adbac02b.x86_64 is excluded
Problem 5: cannot install the best update candidate for package perl-HTTP-Tiny-0.076-1.fc29.noarch
- package perl-HTTP-Tiny-0.076-1.module_2073+eebc5b71.noarch is excluded
Package Arch Version Repository Size
libgit2 x86_64 0.27.4-1.module_2222+9bfbc8d7 fedora-modular 412 k
Enabling module streams:
Upgrade 1 Package
Total download size: 412 k
Is this ok [y/N]:
I did not use any modules/streams on F28. Also checked that none is used in F29.
# dnf list installed |& grep -i modular
# dnf list installed |& grep -i libgit2
libgit2.x86_64 0.27.4-1.fc29 @fedora
# dnf check-update
Last metadata expiration check: 0:32:32 ago on Thu 04 Oct 2018 05:40:12 PM CEST.
libgit2.x86_64 0.27.4-1.module_2222+9bfbc8d7 fedora-modular
libgit2.x86_64 0.27.4-1.module_2222+9bfbc8d7 updates-testing-modular
Note, that the Installed version is the same as the version offered from the module stream as an update.
I am going to attach the debugdata output of dnf update --debugsolver.
Version-Release number of selected component (if applicable):
dnf.noarch 3.6.1-1.fc29 @updates-testing
dnf-data.noarch 3.6.1-1.fc29 @updates-testing
dnf-plugins-core.noarch 3.0.4-1.fc29 @updates-testing
libsolv.x86_64 0.6.35-3.fc29 @updates-testing
rpm.x86_64 4.14.2-1.fc29 @fedora
rpm-libs.x86_64 4.14.2-1.fc29 @fedora
Steps to Reproduce:
1. dnf update
Enabling module streams: libgit2 0.27
The installed version is kept untouched (unless there is an actual update).
No stream gets enabled without the user's explicit request.
This is an F29 VM upgraded from F28 using
# dnf -y system-upgrade download --releasever=29 --refresh --enablerepo=updates-testing && dnf -y system-upgrade reboot
Similar bugs, but they appear to describe just the false messages at the beginning of dnf update,
not the functional problem described here.
Created attachment 1490675 [details]
Tar-GZiped Output of dnf update --debugsolver
Proposing as Blocker/FreezeException based on the following criteria:
"The installed system must be able appropriately to install, remove, and update software with the default console tool for the relevant software type."
I assume, that Enabling module stream during an update, without the user's explicit request, violates the 'must be able to *appropriately* update'.
This is entirely fine, because it is default stream. So end behaves as expected.
I agree with Igor. It work like expected.
It is technically fine but I'm not sure we should be adding new defaults to stable releases. It's not forbidden currently but it's confused a number of people.
Yeah, I am not comfortable with introducing this default stream feature suddenly in post-Beta Fedora 29, if that's what happened. I was working on the assumption we would only get default module streams in F30+.
This seems against at least the spirit of the Changes policy. That states that by the '100% code complete deadline' - which came before Beta - "New accepted changes must be code complete, meaning all the code required to enable to the new change is finished." This may technically have complied with that in that the *dnf-side code necessary for default module streams to exist* was "finished", I guess, but that seems like a tricksy way of looking at things. The clear intent of the requirement is that we get to test all the elements of the Change in the Beta, and since no default module streams (AFAIK) existed for F29 at Beta time, that was not the case.
Just to clarify from my side (libgit2 maintainer): making module default didn't change libgit2/pygit2 versions, it was just about changing from traditional to modular. So ABI/API is fully compatible.
For me it's not the contents that are of concern, but the mechanism itself and the policies / expectations around it.
Discussed during the 2018-10-08 blocker review meeting: 
The decision to punt (postpone decision) was made:
"Punt to FESCo - this doesn't really violate the release criteria, but we are concerned about it as it relates to the Change process, so we will file a ticket asking FESCo to consider it"
Just to make it clear, the libgit2 maintainer ignored the following requirement written on the module packaging guidelines page: "Setting or changing the default stream or the default installation profile requires a Fedora Change request, and it is only allowed in between Fedora releases."
We do have a policy around this which this change violates. It looks like it was merged by Mohan without proper review of the policy, so we need to figure out why that communication broke down. I'll look into that.
I'm not sure how we want to proceed in this specific case, but based on other conversations I've had with Igor, I am not convinced this stream should be the default for libgit2 anyway.
I've submitted a PR to remove this as a default stream. It needs to go through the Change process for Fedora 30.
I'm requesting a Freeze Exception on this BZ to allow Igor to pull in a non-modular RPM of the same version as was previously in the default module stream so we don't regress anything.
libgit2-0.27.5-1.fc29 has been submitted as an update to Fedora 29. https://bodhi.fedoraproject.org/updates/FEDORA-2018-abfd4c6ac3
https://pagure.io/releng/fedora-module-defaults/pull-request/33 has also been merged, so after tonight's compose, there will no longer be a default module stream for libgit2.
libgit2-0.27.5-1.fc29 has been pushed to the Fedora 29 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2018-abfd4c6ac3
libgit2-0.27.5-1.fc29 has been pushed to the Fedora 29 stable repository. If problems still persist, please make note of it in this bug report.