Red Hat GmbH, Registered seat: Werner von Siemens Ring 12, D-85630 Grasbrunn, Germany Commercial register: Amtsgericht Muenchen/Munich, HRB 153243, Managing Directors: Ryan Barnhart, Charles Cachera, Avril Crosse O'Flaherty
IrSO 0.5 <##|###| has Ironic 27 - 31
IrSO 0.6 |###|###|###|###| has Ironic 30, 31, 32
IrSO 0.7 | | |###|###|###|###| has Ironic 31, 32, 33
IrSO 0.8 | | | | |###|###|###|###| has Ironic 32, 33, 34
Ironic 30 <##|###|###|###| EOL with IrSO 0.6
Ironic 31 <##|###|###|###|###|###| EOL with IrSO 0.7
Ironic 32 |###|###|###|###|###|###|###|###| EOL with IrSO 0.8
Ironic 33 | | |###|###|###|###|###|###|###|###|
BMO 0.10 <##|###|###|###|
BMO 0.11 |###|###|###|###|###|###|###|###| starts with IrSO 0.6, Ironic 32
BMO 0.12 | | | | |###|###|###|###|###|###|###|###| starts with IrSO 0.8, Ironic 34
IrSO 0.5 <##|###|###|###| has Ironic 27 - 31
IrSO 0.6 |###|###|###|###|###|###|###|###| has Ironic 30, 31, 32
IrSO 0.7 | | |###|###|###|###|###|###|###|###| has Ironic 31, 32, 33
IrSO 0.8 | | | | |###|###|###|###|###|##> has Ironic 32, 33, 34
Ironic 30 <##|###|###|###|???|???|???|???| EOL 4 months into IrSO 0.6?
Ironic 31 <##|###|###|###|###|###|???|???|???|???| EOL 4 months into IrSO 0.7?
Ironic 32 |###|###|###|###|###|###|###|###|???|??> EOL 4 months into IrSO 0.8?
Ironic 33 | | |###|###|###|###|###|###|###|##>
To view this discussion visit https://groups.google.com/d/msgid/metal3-dev/GVXP189MB2005CF8DBFB052DC342F60CF890EA%40GVXP189MB2005.EURP189.PROD.OUTLOOK.COM.
Hi Dmitry, all,
I've been super busy this weke, so I will think about this for a sec further, but will also pitch in two more things into the mix:
We need to start doing patch releases for IRSO and Ironic-image as well
For IRSO, it should be nice and clean operation with the current release workflow, but for Ironic-image we haven't had more than one patch release over any minors so far and that was for CVE fix, yet it would benefit greatly as Ironic-image is pulling both Centos and Ironic during build time and is not pinned. The latest tags are thus full of very old packages, and we'll receive fixes beyond the merged PRs in the branches when released. There should be no issue with this one, its just not happening right now.
Since it kinda affects releasing, I'll also re-insert the "monorepo" idea into the discussion
We have so much duplication with our controller repos, codewise but especially CI wise that I'd love to see our controllers merge into one repo Kubernetes style, to share the code/CI machinery and simplify things a lot (and complicate some for sure). This would lead of course into coordinated release between IRSO/BMO/CAPM3/IPAM and could be called just Metal3 release. ... That would be a major change in organizing the code, and the releases as well, so before we lock in the releasing I wanted to get the idea out. Maybe it is a bad one, maybe it is a good one, give it a through from your POV.
OK, I guess these are the only immediate comments.
I think we would still need separate tags, e.g. for CAPM3 and BMO since their APIs are changing separately. Otherwise we would end up with a new "major" Metal3 version all the time. First CAPM3 goes to v1beta2, then BMO releases v1beta1, for example. Kustomize is one project that has this way of releasing multiple tags from one repo and honestly it feels confusing to me.
Do they need to be, and is it a really problem, even if they do? For example, we have Kubernetes with way more components and API versions than us, and they can manage it just fine?
My pet peeve is metal3-dev-env. It needs constant updating with all the release branches in all the sub-projects. A constant hassle. It breaks quite often and since all the CAPM3 e2e tests depend on metal3-dev-env still, all of that is then broken. Furthermore, because of the central metal3-dev-env way of running the tests, we have project-infra that defines the Jenkins pipelines. Also these need constant updating with variables and defaults, sometimes even going through the jenkins job builder repo.
Having most of the code in one repo, we could get rid of dev-env as well, as that is mostly integration glue between repos. We're already duplicating the code in CAPM3 for CAPM3 e2e, which shows it could in the Metal3 repo all along. We have now separate e2e environments for dev-env, CAPM3, BMO and IRSO, which is MAJOR pain in the buttocks. Dmitry is on-record in CAPM3 e2e PR asking why are we duplicating things. Having per component e2e is what we need, but doing it by duplicating half of dev-env in each repo is not the way IMO.
Where am I going? If we get rid of metal3-dev-env (at least for CI use), we no longer need to have Jenkins pipelines in project-infra, they can be directly in the relevant repo. Suddenly we don't have the three level indirection jjb -> project-infra -> metal3-dev-env -> CAPM3 e2e. With that we should have much less to update. But we will then need proper e2e tests for each repo. For CAPM3 I think it is already in progress. For IPAM we need to start. Ironic-image is tested with IrSO, and BMO has its own e2e so in that regard we are good.
Indeed this is the monster we need to get rid of. Each minor release and each change that goes cross-repo is painful, hard to coordinate and often hard to even test (in CI) as you need to coordinate multiple repos.
Keep in mind that not everyone is using the same set of components.
How is that an issue? Consumer is free to take the pieces they want, even if components share a codebase or a release number. Note: I'm not suggesting we put ironic-image to that repo, but 4 of our controllers (CAPM3, BMO, IPAM and IRSO). I'm also not suggesting we're slamming them in one controller or one Docker image, I'm suggesting we put the code from our controller repos into one and use the synergy the reuse the codebase and the CI for major simplification of project structure.
Furthermore, does it really solve the problem? We can have the same release cadence even without a monorepo, I've listed two possible options. But do you really want to tie CAPM3 releases to Ironic ones or Ironic-Images releases to CAPI?
From my POV, it would solve quite a few problems. Some are mentioned above (CI), but we'd also get to share controller code and not implement same things four times over, have some bump PRs merged four times over, scan same things four times over etc. It would have a lot of synergies, both CI wise, but also code wise, and day to day operation wise. We at ESJ feel this pain a lot, and it is wasting a lot of time and effort.
It would also solve some perception/visibility issues as we don't have a clear main repo. We have somewhere CAPM3, somewhere BMO, etc. Whether we want it or not, but were monitored and scored in many places based on the main repo alone. CNCF project health, LFX insights, etc. This might not seem much to some of you, but community health and diversity and contributor experience etc are major things for the project when we aim to for the eventual graduation.
For the downsides, we definitely have the issue of Ironic release schedule, but there are many ways to deal with that. We can still release that each time upstream Ironic releases. In monorepo, we can just take the latest or most stable, or whatever we deem most fit during the development cycle. Or we can just add support to IRSO in a patch release (yes, its un-semver like, but hey, CAPI adds new k8s support in .1 release too). That should not be a blocker for re-structuring Metal3 IMO.
To view this discussion visit https://groups.google.com/d/msgid/metal3-dev/GVXP189MB20055AE68882E31BCD969C69891CA%40GVXP189MB2005.EURP189.PROD.OUTLOOK.COM.