-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

On behalf of the ELN SIG, I'd like to share with you some of our plans
for summer 2023. First, as some of you may know, we will be more
actively beginning the process of launching CentOS Stream 10. We have
made some recent changes to our strategy and schedule and this email
will attempt to cover them both in detail. This will be a long email,
so strap in!

== tl;dr ==
* We'll do an ELN mass rebuild to see how many builds will fail
* We'll import ELN packages to c10s gradually, starting with just the
runtime set. We'll use ELN as the buildroot at the start.
* We'll import the buildroot set to c10s when it gets small enough.
* You’ll see activity in CentOS Stream 10, but it’s not yet time to
get involved. A general availability announcement will follow sometime
in the first half of 2024.
== tl;dr ==

We plan to perform a targeted mass-rebuild of Fedora ELN in a side-tag
beginning on June 26th. We will be bumping the %{dist} value for ELN
(currently .eln126) to avoid rpmdev-bumpspec noise. This rebuild will
be used as a "canary" for how successful the initial import of CentOS
Stream would be if we were to start it on that day. We are making
several changes to our original plan as we do this.

First, as the cleanup of unnecessary dependencies in the Fedora ELN
has not yet completed, we are revising our plan of performing a
mass-import of *all* Fedora ELN content to CentOS Stream 10 in July.
Instead, we plan to move to a phased approach wherein we will first
import, build and test only the portions of CentOS Stream 10 that we
currently have slated for inclusion in the delivered "runtime". As a
necessary side-effect of this, it means that we will NOT be
transitioning directly to CentOS Stream 10 as a self-hosted
environment.

Instead, we will be retaining the Fedora ELN buildroot repository for
use as the CentOS Stream 10 buildroot repository for some time (quite
possibly until as late as February 6th, when Fedora 40 branches from
Rawhide and CentOS Stream ceases syncing builds from Fedora ELN).
During this time, CentOS Stream 10 builds will be superseded in the
buildroot by Fedora ELN builds. While this sounds counterintuitive,
this will actually allow us to take advantage of Fedora ELN to avoid
build-ordering problems, such as those from soname bumps. The reason
for this is that Fedora ELN, unlike when it in turn is synced from
Fedora Rawhide, will functionally contain all of the same intended
build attributes as CentOS Stream, such as build macros, compiler
baseline flags and specfile conditionals. Since Fedora ELN should
already be a preview of what CentOS Stream 10 should look like, we
anticipate that there will be far fewer opportunities for build
environment differences to rear their heads. Note that there will, of
course, be an override option in place should we need to explicitly
tag a CentOS Stream 10 build into the buildroot.

This leads me to my next schedule announcement: we will be performing
the initial CentOS Stream 10 branch creation in Gitlab for all
packages in the Fedora ELN runtime package set[1]  during the week of
July 19th, coincident with the Fedora 39 mass-rebuild. Once the
branches are created, we will also kick off the mass-build of that
package set using Fedora ELN as the buildroot. Given the timing with
the Fedora mass-rebuild, we are looking into whether to have our
CentOS Stream 10 import "piggyback" off of it by carrying our
Rawhide->ELN sync through to the ELN->CS10 sync, or if we would be
better off waiting and performing the import manually.

The last bit of the plan is something of a non-announcement. As of
right now, we do not have a firm date on when we will be importing the
CentOS Stream buildroot-only components into CentOS Stream 10. We're
toying with the idea of not doing this at all until we diverge from
Fedora 40 (2024-02-06) in order to maximize the time we have to trim
down the build dependencies. This way we do not end up importing and
retiring dozens or hundreds of unwanted packages into CentOS Stream
Gitlab, only to retire them shortly thereafter.

A lot of this is new and somewhat experimental. That's why we have
decided on this rather aggressive timeline: if this does not go as
smoothly as we hope, we will have ample time to correct before CentOS
Stream 10 goes live for wider contribution.

Alright, I guess this isn't quite as long as I expected it was going
to be, but it's quite dense. Questions and suggestions are most
welcome.


== Some Expected Questions We Have Answers For ==

Q1: Does this mean that CentOS Stream 10 is opening for contribution soon?
A1: From the geological scale of enterprise software, absolutely! From
the scale of a Fedora cycle, it's still at least six months out. That
said, since we're priming the pump in public this time around, you
will have a much clearer window into how things get rolling.

Q2: Why are the CentOS Stream 10 builds not going to take priority
over the ELN external repo in the buildroot once they succeed at
building?
A2: Because as we discovered with ELN, it's extremely difficult to get
build ordering correct. If we build PackageA in CentOS Stream 10 and
then LibraryB on which it depends bumps soname in Fedora ELN and
rebuilds both LibraryB and PackageA, in a side-tag, we would need
logic to figure out which order things need to be rebuilt in CentOS
Stream 10 so that we didn't inadvertently get the timing incorrect.
It's much harder to get right than you might expect and it's why in
Fedora ELN nowadays we largely "cheat" when a Rawhide side-tag is
merged and just tag the Rawhide build into Fedora ELN buildroot
instead, since we know it is already built in the correct order, so we
just need to rebuild it. I can give you a much longer (neé
exhaustively longer) explanation if you want. (You don't.)


== Open Questions ==
1) For the "canary" Fedora ELN rebuild, we have two choices on how to
select the git hash to be built for each package in the ELN list:

Approach 1 (Rawhide-style):
1. Clone each package
2. Check for the existence of the `eln` branch.
  a. If the `eln` branch exists, build from the HEAD of that branch
into the side-tag.
  b. Otherwise, build from the HEAD of the `rawhide` branch into the side-tag.

Approach 2 (Conservative-style):
1. Query Koji for the latest-tagged build of each package in Fedora ELN
2. Interrogate the build task of that build for the git hash
3. Build that git hash into the side-tag.

Approach 2 is more heavyweight, relying on a lot of Koji queries
back-and-forth, whereas Approach 1 will pick up changes that have
appeared in Rawhide since the last build (which is more in line with
how Fedora's mass-rebuilds work). I'm personally leaning towards
Approach 2, but I'm open to good arguments either way.


If you have read all the way to the end, I hereby award you one gold
star for sheer tenacity. ⭐



[1] https://tiny.distro.builders/view-source-package-name-list--view-eln.txt
See also https://tiny.distro.builders/view--view-eln.html for a more
readable view.
-----BEGIN PGP SIGNATURE-----

iQGzBAEBCAAdFiEEhQqd0dvyrMxvxJSRRduFpWgobREFAmSMZhAACgkQRduFpWgo
bRGlKQv/SfDVJ6Ny+T80fnUK4KsDacxrpYcXYpAf+GPUdeELdMwXIJL+N/23Cg0L
NoyK0GhKYqJu9SMKYH/1TWEbbxymyOipm/4XLzh59439hRdaogOOE5G0Q3/4wLLH
C1woO4rJwRDNEgUBxf/EHXHZc63yEevPaVZfjiBjZTVZ913FA6XqNp8BCxoCliWV
gFp1tIF6wIk3Nn4vcSdnLbEZnQoS/7qnSQJejddxxKq8RykJaEv0KrwxR9guctSg
VGbmTvlguhH2xReXL+Dx139PBXNuPYz+zB/vAK+Yu1MTsYHT6ysWHRUpRNJIfUbR
MaiWrxJ0+wldqNvXs4d0kWqtx7qV1DQ8RvUdBml7S+bjgvWyk4+a+NUk0Jjn64CF
f1eKXPaE3SEDPzM2CP5o7emTA+jzIcLJN2AhgfeycqfuQbeQ/B6S1Bm7LSzQLYeo
LyL6b1q5JWbZsEH9lu4MFodY6f+1REvVH4hY01FyhzEnZsHl5Vc1279NHE/S6V15
b+x6/yE4
=2u3F
-----END PGP SIGNATURE-----
_______________________________________________
devel-announce mailing list -- devel-annou...@lists.fedoraproject.org
To unsubscribe send an email to devel-announce-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-annou...@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue
_______________________________________________
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, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to