Hi,

On 12/17/25 8:36 PM, W. Michael Petullo via golang wrote:
As per Changes/GolangPackagesVendoredByDefault [1], all golang libraries
that are currently leaves (as defined in [2]) will be mass retired. This
will happen in the coming days. The full list of packages is available at
[3].
I am glad to see this. The vendored-dependency approach has made my
maintenance of Fedora's Hugo package much easier. Gone is the dread
that each version of Hugo will require multiple package reviews of new
Go dependencies. Thank you!

Glad to hear!

Yet I do worry about some packages. The golang-modernc series, for
example, has a number of idiosyncrasies that I would not want each
application packager to have to relearn.

At least for the modernc sqlite3 package, it's possible to patch it out in favor of https://github.com/mattn/go-sqlite3/ which is also able to be linked against the system libsqlite3 [1], unlike the modernc version. You can see the trivy package for an example of this. I think syncthing allows using go buildtags to choose between a modernc sqlite3 and mattn sqlite3 backend, so for that package, not much extra work is required at all.

But if you could elucidate what those issues are so we can potentially come up with a solution, that would be helpful.

Is there a way to establish exceptions to the leaf-implies-retirement
rule?

I can exclude those packages when I perform the retirements if you'd like.

Is there a way for an otherwise vendored-dependency application to make use of
external Go packages when there are exceptional circumstances?

Again, It would be helpful to know what those exceptional circumstances are, but it is probably possible (with some fiddling) to use Go workspaces like Debian does [2] to use certain dependencies from the /usr/share/gocode tree and then source the rest from the vendor directory.

There was discussion in the Packaging Committee ticket about making the Guidelines laxer and saying that new packages SHOULD be built with vendoring and Go Vendor Tools to still allow using the old approach. But I'm not super convinced. The golang-*-devel packages and the associated automation are not being maintained, the old tooling is not compliant with the new licensing guidelines, and the unbundling approach has clearly proved unsustainable. Therefore, I don't think a hybrid approach or allowing more packages using the old approach to be introduced into the distribution is going to work out well in the long term. It undermines the overarching goal of this change — i.e., to simply and unify Go packaging in the entire distribution and not rely on unmaintained and out-of-date components.

Best,
Maxwell

[1] https://github.com/mattn/go-sqlite3/
[2] https://gitlab.com/fedora/sigs/go/go-rpm-macros/-/issues/31
--
_______________________________________________
devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/[email protected]
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to