#832 Proposal for versioning guideline overhaul (including tilde)
Closed: accepted 7 months ago by tibbs. Opened 9 months ago by tibbs.

Ticket #398 is enormous and difficult to follow, so I would like to use a fresh ticket to present the current situation and my plan for moving forward.

Executive summary of this proposal:

FPC votes soon on a "minimal change" draft that allows tilde: https://fedoraproject.org/wiki/User:Tibbs/TildeVersioning2.
When caret versioning becomes available, FPC votes on a full overhaul: https://fedoraproject.org/wiki/User:Tibbs/TildeCaretVersioning.

A diff of the first draft is at https://fedoraproject.org/w/index.php?title=User%3ATibbs%2FTildeVersioning2&type=revision&diff=latest&oldid=528965. It includes a simplification of the preamble and a section on Epoch: but those can be undone; the only relevant change in the preamble is the removal of the ban on using tilde. I will convert this to a PR soon.


After spending a pile of time wrapping my head around the ins and outs of versioning, staring at the RPM source code and having random conversations, I came to the conclusion that simply having tilde is insufficient and that another "magic" RPM operator was needed. But my discovery was not novel; @ignatenkobrain had previously come up with the same thing in 2016 and had even implemented it. What was missing was a clear indication of why it was actually needed, and so the implementation was not merged. A fresh implementation appears in https://github.com/rpm-software-management/rpm/pull/597 and at this time it does appear that it will be merged. A corresponding implementation for libsolv has already been merged.

I have used this new operator to write a fresh set of guidelines which I believe to be complete, consistent, and much simpler than previous drafts. This has all been tested with a patched RPM running on an F29 system, and so far I've not been able to come with a situation which was handled by the previous guidelines and not handled by these (in a way that requires Epoch). This draft appears in https://fedoraproject.org/wiki/User:Tibbs/TildeCaretVersioning.

The following problem exists, though: no version of Fedora supports caret versioning, and even if the PR is merged soon, an objection has been raised (on the #rpm.org IRC channel) to any backport of this, even to rawhide. And a new RPM release is not in the works because, it seems, there is nothing yet worth releasing. Assuming this holds true, we're in something of a catch-22 situation and it may be a while before Fedora would see this functionality.

And of course once it's in Fedora uniformly, it still needs to be tested through the release engineering pipeline. And then there is the issue of EPEL. It seems... really unpleasant to have a two different sets of versioning guidelines. While it is possible that this could be backported (as the code change is truly minimal) that's completely out of our hands. It is true that tilde was backported to EL6 specifically so that Fedora could use it, so perhaps there's hope.

But I don't want to just sit around doing nothing in the hopes that one day caret versioning makes it into RPM everywhere while ignoring those who want to use the tilde functionality today. So I have produced a "minimal change" draft: https://fedoraproject.org/wiki/User:Tibbs/TildeVersioning2. I believe it has a reasonable chance of satisfying those who want to use tilde while not introducing churn into the existing versioning process. I would rather patch things now and overhaul them only once when we can do that.

This draft basically says "use tilde versioning for upstream tagged prereleases, but don't mix it with snapshots" and otherwise keeps the same guidelines as we have now. Since the big conceptual problems occur when you move back and forth between snapshots and tagged prereleases, banning this while generally allowing tilde would hopefully let people who want it use it in the circumstances where they want it.

There are certainly more complicated implementations which still fall short of an overhaul, but they require more "patches" on top of the current guidelines. I can certainly write up more variants if people want to see them.

We talked about this at this weeks meeting: https://meetbot-raw.fedoraproject.org/fedora-meeting-1/2018-11-29/fpc.2018-11-29-17.00.txt

  • #832 Proposal for version guideline overhaul (including tilde)
    (geppetto, 17:30:39)
  • Tibbs minimal proposal for tilde in versioning (+1:4, 0:0, -1:0)
    (geppetto, 17:53:39)
  • ACTION: More voting in the ticket, or another week (geppetto,

17:53:23 <geppetto> … I think churchyard will probably +1 anyway

Here you go :)



Thanks for slogging through all the desired uses and coming up with something minimal and sensible that should avoid making things worse.

OK, folks, that's +6 so I will get down to business on this soon. It looks like a busy day and weekend for me so probably not until Monday.

Metadata Update from @tibbs:
- Issue untagged with: meeting
- Issue tagged with: writeup

8 months ago

After a family emergency and then falling ill with the flu for 11 days, I'm back and have finally written this up.

Announcement text:

The versioning guidelines have been modified to allow limited use of RPM's tilde (~) notation when packaging upstream-tagged prereleases.

Metadata Update from @tibbs:
- Issue untagged with: writeup
- Issue tagged with: announce

8 months ago

Metadata Update from @tibbs:
- Issue untagged with: announce
- Issue close_status updated to: accepted
- Issue priority set to: None (was: In Committee)
- Issue status updated to: Closed (was: Open)

7 months ago

Login to comment on this ticket.