On Thu, 2022-07-07 at 10:49 -0700, Stewart Smith via devel wrote:
> Zbigniew Jędrzejewski-Szmek <zbys...@in.waw.pl> writes:
> > In https://pagure.io/fesco/issue/2803 Artem asked for a user-visible
> > notification when a Fedora stops being supported. Various proposals
> > for online checks were discussed in the bug, but I think we might make
> > do with something much simpler.
> 
> We've been thinking a lot in this space in Amazon Linux, and have done
> some things that are starting to be a bit wider in scope in the AL2022
> time frame, and that we've wanted to bring back as ideas to Fedora.
> 
> One of which is simply how you tell someone there's something new they
> could move to. If doing so by the command line, you need to somehow work
> out what X to pass to `dnf system-upgrade ... --releasever=X`, while I'd
> much rather be able to put it in, say, the motd, and have other tooling
> be able to know through the same system that "why yes, you are up to
> date on patches on version X, but version Y is available"
> 
> The GNOME Software Center parses the hard coded URL of
> https://admin.fedoraproject.org/pkgdb/api/collections/
> which does already have an EOL tag on older Fedora releases, so this
> could be used today to print warnings all over the place if the format
> was standard enough and documented... and that other distros could use
> it easily enough with a custom URL without patching gnome-software...
> 
> I would be totally in favor of some simple standard metadata we could host
> somewhere, easily configure into various bits of software that would
> prominently display it to users (or report back to some central thing,
> like various agents do with "dnf checkupdate" and "rpm -qa" output, that
> point to support statements about the OS.
> 
> We actually have a skeleton design for such a thing (it says what
> updates and upgrades are available), but we've lagged on
> both posting to devel@ that it's something we've been working on, and I
> need to go and poke the person who needs to click the "publish this repo
> to github" button for the DNF plugin. I'll go do that now, as it would
> certainly add to this conversation.

The problem with this is that it's a very fuzzy, messy space that's
hard to put limits and requirements on.

The URL you mentioned is a case in point. That has more or less assumed
the status of running joke among a small group of people who care about
it. When you go to that URL, what you're getting now is a static JSON
document that is hand-maintained in the fedora ansible tree:

https://pagure.io/fedora-infra/ansible/blob/main/f/roles/pkgdb-proxy/files/pkgdb-gnome-software-collections.json

when a release is branched, released, or EOLed, somebody from releng
has to remember to edit that file, and get the edit right. These days
that...usually...happens.

Way back in the mists of time, what you got at that URL was a view on
the release database of the pkgdb app, but that app hasn't existed for,
uh, quite a lot of years now. When it was decommissioned, we discovered
several things were relying on that API endpoint, which we replaced
with a static JSON file just until it could be replaced with something
less dumb. Yup, still here.

The original planned replacement, IIRC, was PDC, which has now had an
entire lifecycle (conceived, created, deployed, given up on, and nearly
retired) without ever fully implementing all the release lifecycle
tracking bits that various pkgdb consumers wanted. (It's been a while,
but IIRC, there were issues with distinguishing between 'EOL', 'current
stable', 'branched' and 'rawhide' releases from PDC data).

There are various sources of some kind of truth regarding the Fedora
release cycle. Bodhi has one - you can query
https://bodhi.fedoraproject.org/releases/ with content-type JSON and
you'll get some JSON back with some properties of various things Bodhi
considers to be "releases", including a "state".

I maintain one which is used by my 'fedfind' tool/library that various
bits of infra (mostly QA things, but also a few others) use. It is a
*different* hand-edited bit of JSON, which I created after being
annoyed at the collections one being updated wrongly a few times:
https://fedorapeople.org/groups/qa/metadata/release.json

There's the CurrentFedoraVersion template on the wiki:
https://fedoraproject.org/wiki/Template:CurrentFedoraVersion

There's also, I think, some variables for 'current' releases in the
Fedora infra ansible deployment.

There are some fun issues you run up against when you play around in
this sandbox long enough. One, for instance - when *exactly* is a new
Fedora release "released"? Is it when the 'fedora' repo is frozen and
Bodhi is kicked over to pushing new 'stable' updates to the 'updates'
repo instead? (That's Bodhi's definition). Is it when the releases/NN
tree on the public mirror system is available? (That's the one I use,
more or less, for fedfind). Is it when the release announcement goes
out? The point here being, if you think about it hard enough, the
question of what 'states' a distro (or any software product) can be in
is quite a difficult one and probably has a lot of answers.

Another - what do we do about, e.g., Fedora IoT and Fedora CoreOS,
which have their own somewhat different release/life cycles? What about
module lifecycles? What is it about *lifecycles* that's important,
anyway? Don't we maybe want to just have a sort of generic system for
"important events"?

I kinda have a dream here, where there would be one canonical system
for registering 'Fedora-related events', and all 'truths' about what
releases are stable and EOL and whatknot in various systems, along with
lots of other stuff, could be derived from it. That thing would be a
really dumb list of 'events', where an event is really just something
like this:

"thing X reached state Y"

where X and Y are both free text. The system would publish a message
for each event, and it could also be queried. So when a Fedora release
went EOL, as part of the SOP for doing that, an event:

"fedora36 reached state eol"

or something like that would be created, the system would publish that,
and anyone who wanted to figure out what releases are eol could query
the system for all things in state 'eol' and work it out. You could
*also* use the system for things like:

"fedora36 reached state stringfreeze"

or whatever.

I built a very dumb implementation of this:
https://pagure.io/fedora-qa/releasestream

and meant to try and improve it a bit and get it deployed and then
start trying to get people to actually use it for stuff, but ran into
ENOTIME issues. I'm still hoping to get back to it at some point...
-- 
Adam Williamson
Fedora QA
IRC: adamw | Twitter: adamw_ha
https://www.happyassassin.net

_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
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/devel@lists.fedoraproject.org
Do not reply to spam on the list, report it: 
https://pagure.io/fedora-infrastructure

Reply via email to