We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

CentOS Stream: stable and continuous

00:00

Formal Metadata

Title
CentOS Stream: stable and continuous
Title of Series
Number of Parts
287
Author
License
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
CentOS Stream was introduced in September 2019. In December 2020 it made news, raised a lot of questions and created long hand-wavy discussions and confusing arguments. During 2021 CentOS Stream 9 finally has found its place in the RHEL 9 development process. And now, in early 2022, we can take a good look at how it actually works. This talk is focused on the development process of the CentOS Stream distribution. We are going to talk about bootstrap, package updates, continuous integration, testing and contribution. We welcome distribution developers, but also users which are interested to know what's hidden under the hood of a typical enterprise-level system.
Matrix (mathematics)Online chatStreaming mediaDifferent (Kate Ryan album)Distribution (mathematics)James Waddell Alexander IIStreaming mediaData conversionArrow of timeCuboidRepresentation (politics)DiagramUML
Streaming mediaDistribution (mathematics)Branch (computer science)Stability theoryMoment (mathematics)Point (geometry)Event horizonBootstrap aggregatingMultiplication signDiagramRow (database)Streaming mediaOpen sourceSource codeBit rateMathematicsRoutingBuildingRevision controlRepository (publishing)Software developerMultiplicationSlide ruleLine (geometry)DataflowInternetworkingDistribution (mathematics)Rule of inferenceSet (mathematics)CASE <Informatik>DampingArrow of timeConnectivity (graph theory)CuboidRepresentation (politics)Logical constantIntegrated development environmentTheory of relativityData conversionEnterprise architectureSubsetFreezingDifferent (Kate Ryan album)Video gameArithmetic meanPhase transitionPhysical systemContent (media)WaveFunctional (mathematics)Office suiteFamilyInterpreter (computing)SoftwareInteractive televisionContext awarenessDiagram
Streaming mediaFlagMacro (computer science)Content (media)Distribution (mathematics)Independence (probability theory)MassPhase transitionSubsetComputer configurationContent (media)Streaming mediaFreezingPhase transitionSynchronizationIntegrated development environmentOrder of magnitudePoint (geometry)Moment (mathematics)Connectivity (graph theory)Source codeBranch (computer science)Software developerMultiplication signBootstrap aggregatingEnterprise architectureSubsetStability theoryFlagBuildingComputer configurationInteractive televisionMacro (computer science)Different (Kate Ryan album)Configuration spaceDistribution (mathematics)Doubling the cubeMathematicsPatch (Unix)Link (knot theory)Analytic continuationHydraulic jumpProcess (computing)Set (mathematics)Office suiteQuicksortService (economics)Value-added networkInterpreter (computing)Table (information)Stopping timeCycle (graph theory)Video gameDemosceneControl flowComputer animation
Independence (probability theory)MassPhase transitionStreaming mediaSubsetComputer configurationFlagRepository (publishing)Integrated development environmentSynchronizationComputer-generated imageryStreaming mediaProcess (computing)Flow separationMultiplication signScheduling (computing)Software developerRule of inferenceProjective planeSource codeBinary codeFormal verificationMereologyProcedural programmingMiniDiscGroup actionSubsetBootstrap aggregatingPoint (geometry)Computer fileDistribution (mathematics)Arithmetic meanCASE <Informatik>Level (video gaming)Software testingFlagRepository (publishing)Patch (Unix)Medical imagingCodeFrequencyBootingMathematicsMessage passingRoutingLogic gateFunctional (mathematics)State of matterEvoluteBranch (computer science)Open setSlide ruleTorusFreewarePlanningStreamlines, streaklines, and pathlinesAdditionMusical ensembleBoss CorporationMarginal distributionPhysical systemStack (abstract data type)Office suiteComputer animationProgram flowchart
Repository (publishing)Streaming mediaComputer-generated imagerySynchronizationIntegrated development environmentEnterprise architectureProcess (computing)Software developerRevision controlStreaming mediaSoftware developerProcess (computing)ResultantFormal verificationSoftware testingMultiplication signDiagramDifferent (Kate Ryan album)Logic gateBranch (computer science)Source codeBinary codeBitMereologySynchronizationRepository (publishing)WhiteboardArrow of timeBootstrap aggregatingMathematicsRevision controlMoment (mathematics)Bookmark (World Wide Web)Arithmetic meanSlide ruleEndliche ModelltheorieCuboidSimilarity (geometry)Stability theoryMedical imagingAnalogyLevel (video gaming)Correspondence (mathematics)Computing platformLink (knot theory)State of matterHydraulic jumpNumberLine (geometry)CASE <Informatik>Moving averageGastropod shellRow (database)DataflowShape (magazine)Oval1 (number)Bus (computing)Green's functionOffice suiteView (database)Numbering schemeReal numberNetwork topologyPerturbation theoryCentralizer and normalizerTerm (mathematics)Diagram
SynchronizationContent (media)Software testingTask (computing)Streaming mediaAdditionDisk read-and-write headMultiplication signMereologyArithmetic meanComplex numberRight angleExtreme programmingLogic gateEnterprise architectureSlide rulePhysical system1 (number)Computer animationMeeting/Interview
Streaming mediaEnterprise architectureSynchronizationProcess (computing)Streaming mediaSoftware testingDataflowProjective planeComputer configurationComplex numberRight angleWhiteboardSynchronizationData managementDistribution (mathematics)Query languageMereologyContinuous integrationProcess (computing)Generic programmingRevision controlLevel (video gaming)Insertion lossRepository (publishing)Online chatRippingOpen sourceFigurate numberKey (cryptography)Value-added networkComputer-assisted translationVideo gameTorusPrisoner's dilemmaElectronic mailing listTotal S.A.INTEGRALExtreme programmingBootstrap aggregatingDisk read-and-write headMeeting/InterviewComputer animation
Computer animation
Transcript: English(auto-generated)
Hello everyone, thank you for joining the distribution dev room and welcome to my talk about the centroid stream and how it works My name is Aleksandra Feodrova. I'm CI engineer at Red Hat. I work on CI for Fedora, RHEL and centroid stream
You can find me on various channels if you want to learn more But let's get started In last year we saw many news and conversations about centroid stream and Many of them started with a picture
Which looked like this where Fedora, RHEL and centroid are represented as boxes connected with arrows And I cannot say that this picture is wrong I think there is a way to interpret it, but I think it is very misleading for example when you link boxes like this with arrows you
implicitly assume that relation between Fedora and centroid stream and centroid stream and RHEL are similar But as we will see in the talk today of that This is actually very very different
so in my approach to this topic I try to represent Linux distributions not as boxes, but actually as lines Because we all know that Linux distribution is not just the set of Data on the ISO which you use to install your system. It's also the
updates flow the channel or the stream which Can be very different from distribution to distribution and actually creates the main value of using Linux distributions Over just copy pasting some content from places on the internet the
rules how these updates channels function define what this Linux distribution is and That's why I prefer to
show the Linux distribution on diagrams not as a box, but as a line and It also can be multiple lines for example here on this diagram I have drawn the a chart of Fedora distribution where I tried to Explain the rate of changes over time and you can see that a fedora
Internally has several branches. There is a fedora row height branch which goes on and on and gets most recent latest and greatest pieces of the Open-source software, and then we have stable branches
Which we create at certain points and then which go through certain development phases through freeze through release and then all the way to the end of life and This approach I will Apply to
The center stream on today, and let's see how it works So let's consider first the bootstrap Bootstrap in Can mean different different things for different people, but in the way we talk about Linux distributions
Bootstrapping means how do we create that initial set of components initial set of tools and Initial built environment which are then used to build everything else and built with constant updates flow we need to start from something and nowadays distributions rarely start new version from scratch they
usually use something as a base on which we can build upon and That is exactly the case in the center stream world center stream Bootstrap story is the story about fedora so
Here is the picture again. I know it might be a bit overwhelming, but it's actually quite simple So this is how the bootstrap how sent to a stream starts First we have the same fedora row height branches we saw on the previous slide
Fedora row height is a flow of updates which land in fedora repositories and get the newest versions of everything and then we have fedora ELN fedora ELN is was a recent concept and we introduced it as a rebuilt of fedora row height sources in the
Enterprise like build route so we take the same sources of the same fedora height packages only of subset of them not all of them so fedora has more than 20,000 packages and fedora ELN is about
several thousand maybe three or four and Then we rebuild them in the build environment which resembles in a way the enterprise Linux environment then the bootstrap event Happens if you see on this diagram it happens in a very
Relatively short amount of time and it happens when a certain fedora stable branch is created and It happens before the moment fedora branch is created in the moment fedora branch is Freezed and ready to be released
so when you See how fedora and centro stream are related While fedora is critically important for centro stream and rel and it creates the foundation on which centro stream is built
the actual technical interaction between fedora and centro stream Packages and components and updates Happen in this very very short amount of time Again, relatively to the lifecycle of the centro stream itself only within that bootstrap moment
And so what happens in that bootstrap moment is that we take a certain snapshot of the fedora ELN at this moment And we use it to start building centro stream packages and while fedora stable branch is being developed we continuously sync fedora updates into that freshly new created centro stream
Build environment and rebuild it with the same sources as centro as packages So within this bootstrap time centro stream Doesn't have its own content all the content it has is fedora sources sources from a stable branch
Which are rebuilt in the enterprise-like environment And then when fedora reaches its development freeze before the release This is the point where fedora is
Going to be like locked down for the release For the release itself And for the stable updates and at this moment We have a point where centro stream breaks the sync from fedora and becomes its independent
Content so centro stream gets the possibility to actually change stuff in that In the in the packages Some components break this Synchronization earlier some still continue fetching certain changes from fedora stable branch later
And maybe some continue to get new changes from other sources but basically, yeah after development freeze of fedora centro stream becomes fully independent and then It has no link to the exact fedora updates fedora updates go in fedora centro stream gets its own
patches and contributions so Having this picture in mind. Let's double check. So the common question was I I saw several times was does centro stream now replace fedora. I hope now you can answer this
the answer is no because Looking again at this picture centro stream development starts when fedora development ends And this is there is basically no overlap except a bootstrap phase So centro stream originates from fedora, but it in no way replaces it
So yet another question then which people ask is Is centro stream now a fedora lts? Well, we can say sort of but really no because
And again, it is important to understand that bootstrap of a centro stream is not a Just taking Rpms from fedora and continuing the path continuing updating them Bootstrap and centro stream means taking sources from fedora
Reworking them And then building them in a different environment with different build configuration with different macro with different set of content different build flags And while we use fedora sources to
Create this initial centro stream content It actually is a separate distribution so There is no easy continuity between uh fedora stable branch into centro stream the jump between fedora stable branch and the beginning of the center stream is
Really the gap between them is too too large So Now what centro stream bootstrap does I added some notes here to clarify So we use fedora eln snapshot of fedora eln as a starting point
We consume updates from fedora branch until fedora development freeze Rework them We only work on the curated subset of packages It's like order of magnitude smaller than in fedora this subset packet these packages get trimmed dependencies
and build flags and options are Different via set according to red hat enterprise linux business requirements and Yeah, we we do several masterables during the bootstrap phase. So nothing of fedora Packages is taken as a binary package included in centro stream. No, there is always a rebuild process changing sources
changing build configurations And important to also note that this synchronously bootstraps rel
Was bootstrapped from fedora several times already for each of the major releases of rel and What makes this whole process new is that with centro stream 9 this process became public So we now see it in
action in all public resources So you can actually see how the created subset of packages is built You can see how the packages appear in the centro stream code. You can see the evolution of the build route how this goes through Certain changes to get to the right state of the distribution
And yeah, this is the benefit which centro stream brings is that During the bootstrap process you can actually Influence how the project is bootstrapped you can bring your use cases and
Add or remove packages from that created subset You can discuss the build flags and you can participate in deciding how the next Years of the centro stream are going to to work so now once we
Figured out the bootstrap part how centro stream starts Let's look into how centro stream goes on Or being developed and Linux distributions are developed by updating packages So the development of a centro stream or rel and rel
Means developing the updates of packages And as I mentioned before when we Were talking about bootstrap This was the main point where centro stream interacted with fedora
Once we go into the development and updates process We don't talk about fedora anymore fedora is the upstream which then targets the next major release of course It is important to contribute to this because next major release
also Need to use fedora as a base as a foundation but the updates themselves and the development of the Bootstrapped centro stream and rel are not tied to fedora updates in any way anymore So the update story is story about centro stream and rel
and as I mentioned Development and update of the linux distribution means development and update of a package to on very high level the path of the update of a package in Centro stream looks as follows
So you need to merge the update of sources a patch the new source code or new spec file Into centro stream gitlab Then you need to build it in the centro stream build system, which is code g Then once you have a binary rpms To work with you need to test them
and then once you have the Rpms of the proper quality you can publish them to your repository to the iso image and so on This is a high level picture Slightly more detailed picture in the path of a package. I have drawn here on this slide
so I want to highlight here the separate levels of checks which the package goes through So as I said, we first need to merge resources to gitlab And to merge sources to gitlab we have checks on merge request
So all contributions to centro stream goes through open pull requests merge request in centro stream gitlab You can comment on them. You can also see how ci Is triggered on them so we run some sanity tests some also functional testing and some additional verification on merge request before
this change is merged in the centro stream sources Once the change goes into gitlab and gets merged into the centro stream 9 branch We built a package and we built a binary rpm out of these disk.git sources
The binary rpm we built first lands in the gate tag as we say it so it's Tagged into this into a pool of packages which are ready for verification Then once the package is built and in the gate tag, it needs to pass certain package level checks
so functional testing sanity testing whatever levels of testing are available and then once package is verified we Put this package into the pending tag. So in the pool of packages which are ready for to be composed After package lands in the pending tag
We have periodic compose procedure which creates a repository and images And they like boot iso dvd iso and all those familiar artifacts out of the pool of packages from a pending tag Then this repository and those images need to pass compose checks
And then they can be published to the actual centro stream mirrors So these are like three levels of checks each check is an interesting topic on its own which we can talk more but Let's proceed and take a look into where is rel
So if we look into the sources the gitlab sources The rpm specs the files in the disk.git Which centro stream uses these are exactly the same sources as the rel sources
The contribution to centro stream when it's merged to centro stream. It is a contribution to rel That's why the ultimate action of merging is controlled by rel development So anyone can submit a merge request but accepting this merge request means accepting it to rel
So the Only the rel developers can actually do this acceptance of the merge request now once the Sources are accepted in in the disk.git. They become the rel sources
And then the build process happens And so in the build process, we have two Synchronized build procedures one for centro stream or which is happening in centro stream koji And one is mirroring these exact steps, but on the rel side, which is our internal rel infrastructure
So we built simultaneously rel and centro stream binary packages from the same sources These packages pass the package checks synchronously and they synchronously land in the pending tag
And then the third part of this process the composing process this goes independently a rel has its own compose process and compose verification and shipping rules and Schedules and centro project has a compose and compose checks and mirrors on its own
so if you're interested in What kind of rules are governing the publication of centro stream composes to mirrors You can Come to centro's community. You can bring your ideas. You can bring your gating checks if you like and this
whole process of publication of images in the repositories Needs to be discussed with centro's board and it's rolled over by centro's board Now on this diagram i'm trying to
Take a little bit of a closer look into that middle synchronization part to explain how the joint synchronized gate with package tests actually work So as I mentioned we built Simultaneously we built two packages one binary package we built with centro stream And the others binary package built from the same sources at the same time we built for the Red Hat Enterprise Linux
Both packages appear in the gate and these gates don't work independently these gates Can have different tests and Rel tests we usually have more rel tasks. They are running on the internal side of infrastructure
but the test results of these Tests they are considered together. So centro stream package Can pass to the next step Only if its rel corresponding part also passes its required tests
Packages go through all gating steps only together If one of them fails, nothing gets promoted to the next step and nothing gets shipped to centro stream or to rel and worth mentioning also that
The entire process on this picture Even though it seems synchronized between centro stream and Red Hat Enterprise Linux, it is actually performed by rel development and GUI because rel delivery depends on it, so it's managed by rel qualification and rel engineering
with this Schema of a pipeline in mind. Let's look into the common question people ask on various platforms Is centro stream like Debian testing? No
The closest concept in Debian Possibly is The Debian stable proposed updates repository I bet you didn't hear about it before but there exists such a repository and it is similar in terms of that it creates a channel for updates which are
expected to be shipped in the next minor stable release in Debian but It's worth to note that Debian doesn't have this similar package level verification and package and synchronization in that verification process
So while it is your closest bet in the Debian world It's actually still not the same thing as the centro stream as I described before And now the story of centro stream updates wouldn't be complete without talking about how centro stream relates to minor releases of rel
So in this picture, I use my favorite change over time graph, but now I've tried to explain how rel development and rel shipping are different and where's the place of the centro stream here
So as I mentioned rel packages are built in at the same moment in time when centro stream packages are built And they passed the gating of the verification at the same time the centro stream packages are passing this verification The difference between centro stream and rel in this case is that once a rel package passes the verification it lands in the rel nightly
It is not yet shipped to the rel mirrors so rel shipping looks more like that red line down there which has these steps for each minor release so we
Release a certain minor version of rel it gets some updates, but very small number of them Waits for some time and then with the next minor release it does a jump to reach to Accumulate all the packages which were updated during that time
Then again, it waits for the updates for some time and then it does the next jump and so on while A rel development branch which is centro stream actually gets these updates all the time And releases them as they are ready as they pass the verification including the compose verification
And many people were concerned about how this affects the compatibility but um Looking at this diagram we we can see that centro stream actually doesn't run away from rel It is tracking rel development branch, but rel development branch goes on within the
rel ebi compatibility and It doesn't fluctuate around this that much. We keep collecting packages for the next minor release That's what we're doing in the development branch and that's what centro stream is tracking
So again Usual question is centers. Does it mean that center stream is rolling like gen 2? No Center stream is stabilized on the state or the major rel release was uh released at
and once it is done, uh, we Do the updates we continue updating the center stream and rel But we're continuing to update it only within this State which we set when we were doing a major first major release The rel compatibility applies to center stream the same way as it applies to each rel minor release
And if you're interested in more details of how this works for rel You can take a look at this link and See certain levels of compatibility which exist
And now we had many questions we saw some questions there and You may be wondering now. What is center stream like then? And The thing here is that Yes center stream is a new concept and it's quite a unique concept
It is no surprise that we try to explain it via familiar terms and try to find analogies in other places where we Over, uh, we know some examples but in fact center stream is like centroes, you know, it's
stable, it's continuous it goes together with rel and it's synchronized with rel and that's How it works So maybe in some future years Rather than trying to find something what center stream is like We will be talking about center stream as center stream model as its own model, which uh worth maybe looking at
And as a bonus slide Maybe slightly better boxes if you're still stuck with the box diagrams and arrows there Maybe this will help you like the arrows have meaning
and the fedora to center stream arrow is bootstrap which happens once per major release and center stream to rel is the interpoint synchronous updates of the development branches and That's about it Thank you for listening i'm
Looking forward to questions and of course reach out if you want to talk more
And I was muted so i'll repeat again Um As I said, like welcome to the live streaming part of this and i'm just going to the
uh questions and answers and yeah, if you Fall asleep during the talk now, it's time to wake up and start asking your questions And the first one I see is How do the gating tests in center stream compared to the ones in fedora ci?
If there are additional tests in stream that Can they be contributed back So this is an awesome question and there are like two kind of notes here first We keep ci systems in fedora redhead
enterprise linux and center stream Very much the same. So basically if you figured out how to run tests in fedora Uh, you know how to uh, how it possibly be Can be ported to center stream and the opposite if you know how to run tests on rel You can run it on center stream and you can run it on
fedora But this is on on the infrastructure side. We try to maintain the infrastructures in synchronization When we talk about like the test content itself Uh currently there are much more tests we run on the internal part of the rel infrastructure
It's just historically these tests these infrastructures were built over years And we are just starting the center stream part and we're just uh, like edit ci for fedora Relatively recently so not all rel internal tests are available in fedora or center stream right now
So to maybe Repeat that uh Slide let let me find the one With the synchronization. Yeah so you can see here why it's not as such a big of an issue for center stream right now is that uh this
real part of the testing a real part of the ci Actually participates in testing centers updates in the way that uh, yeah If internal part fails the center stream update will not pass through as well But we are working with rel query folks to also Upstreaming tests and making all of them, uh public and open source
There's literally the upstream first for tests initiative in rel quality engineering right now so I hope in the future you will see more of the rel internal testing published to the infrastructure to the of fedora and upstream projects and to
Uh center stream. Yeah The other question more of a comment I see is that uh On on the debian part where I was probably Misinterpreting some of the debian process. Uh, thank you for the comment
So the comment says, uh, it's not actually so I I said debian stable proposed updates repositories used for Uh creating minor debian, uh minor releases of debian, but the comment is that uh, it's not actually uh minor releases of debian, uh The minor releases of debian created from stable rip not from the proposed updates
so Then I would say that uh center stream is actually even closer to just debian stable repository in this in this uh situation But it's it's actually yeah, i'm not sure how I would
should be mapped properly and maybe yeah, as I said, we just should stop trying to Map center stream to something else and just take it for what it is into a stream And I wonder if there are any other questions
Okay Um Yes, I do have a rel 9 t-shirt rel 9 is coming and we are preparing for that that's uh, I think uh, actually
If you're Yeah, just personal recommendation take it for what it is if I were starting a new project right now Uh, I wouldn't I would really start it based on center stream 9 and save myself from doing one Unnecessary major upgrade uh like of course if if I
Had an insert infrastructure already like tailored to centers 8 and rel 8 and whatever I would probably continue using so but for new projects new infrastructures I would consider already hopping on on central stream 9 getting used to it and then like
Flowing into rel 9 release and everything else Okay, any other questions or just join me in the Uh chat for the talk. I will be sitting there waiting for more questions if you come
with more all just for a generic discussion on center stream Neil, I will send your question about rel 9 swag to redhead management and we will try to figure out something for you Noted michael, I'll also also yeah, I will figure it out
Okay Anything else? Okay, what I can
Maybe talk more about Um What else we have? Yeah, we have Yeah, fedora eln 10. That's maybe worth reminding especially, uh, like fedora Eln, it doesn't have a version fedora. Eln is something which goes together with rawhide
On and on and on and on And take the latest and greatest. So basically fedora eln already bootstraps the center stream 10 now So if you're looking forward for the future This is where you can participate in shaping what rel 10 or center stream 10
Are going to be in the future. That's that's already started So I I know some some folks are still like surviving center is uh six end of life, but we're actually going to uh, also rel 10 quite soon. I mean
A couple of years soon, maybe that that kind of level
and honestly, this is the uh, like
as a continuous integration engineer I always felt that you know, linux distributions are the ultimate challenge of continuous integration And when I see this, uh kind of flow of fedora through eln to center stream to rel This really pleases this ci engineer inside me seeing how how this flow works
I know like not everyone is on board with the idea and this is perfectly okay But I think it's it's worth like, uh having this as an option having this as a place to Look at at least and maybe figure out like what's your future plans around this what what are we?
Where is it going to be and how it will work? So we're closing up the live streaming session and again, like welcome to the other room