Clarification on packaging latest versions of software #1549
Labels
No labels
announce
bootstrap
Closed As
accepted
Closed As
duplicate
Closed As
exceptionexpired
Closed As
fixed
Closed As
invalid
Closed As
nothingtodo
Closed As
permanentexception
Closed As
rejected
Closed As
temporaryexception
Closed As
wontfix
cmake
committee
draftneeded
hasdraft
meeting
meson
needinfo
Priority
In Committee
Priority
Needs Review
Priority
Waiting For Reporter
rust
writeup
No milestone
No project
No assignees
5 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
packaging/guidelines#1549
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
Ever since I can remember, I've always packaged the latest version of software. This was in the review template I had picked up ages ago, and it's now in the "standard" template that Fedora review (and the service) use:
However, i see that the guidelines don't really say this. A few language specific ones say "latest SHOULD ..", but the general guidelines provide no advice/direction on whether this needs to be done.
Catalyst
A case that I've just run into is this review:
https://bugzilla.redhat.com/show_bug.cgi?id=2491110
Here, an older version of a general purpose python package (exa-py) is being packaged because the application it's being packaged for (hermes-agent) pins it to this older version.
While this unblocks hermes-agent in the short term it produces a few long term issues:
My historical understanding of the spirit of the guidelines has been that we always package the latest versions (independent of what depends or may depend on it in the future). This is because each package is treated as an independent system package.
Even after a package has been included, we try to update packages to their latest versions---independently of packages that depend/may on them. We do impact checks and if dependent packages break, we help packagers/upstreams port their code to support the new version as much as possible. I consider this an important duty of package maintainers (and perhaps the category of task that takes more time than anything else we do).
Packaging older versions feels weird to me. An extension is that then we don't need to update already packaged bits either---not shared objects, or other packages---until every dependent package has caught up.
I understand that this is something that should be left as a SHOULD to allow sufficient leeway in complex cases, but perhaps some guidance on this would be useful---similar to how we have guidance on bundling where we say that "Fedora packages SHOULD make every effort to avoid having multiple, separate, upstream projects bundled together in a single package" with some text explaining why.
(Note: I also see that the bundling guidelines does not really explain why bundling should be avoided---i found this wiki page explaining it that should perhaps be linked to/moved into the docs somewhere: https://fedoraproject.org/wiki/Bundled_Libraries ? I'll file a separate ticket for this, though).
Maybe also include a soft-exception if the dependancy in Fedora is too old, or if the intent is to package it into a branch that does not have the appropriate build requirements for it (F43 currently). It's also possible that for some weird reason, the latest version introduced a reduction in functionality.
Maybe "SHOULD package the latest version" can be added to the checklist here?
https://docs.fedoraproject.org/en-US/packaging-guidelines/ReviewGuidelines/#_things_to_check_on_review
On the other hand, that checklist (and the whole page) are rather dated ...
Per RFC 2119, SHOULD guidance basically includes "soft-exceptions" already, so I don't think we need to spell that out explicitly in our guidelines.
Yeh, I think the expectation/wording comes from the old times where people would manually publicly release via. a tarball somewhere ... now we live in a world where every git commit can be a release.