Skip to content
This repository has been archived by the owner on May 14, 2024. It is now read-only.

[associated vote ended on 2022-11-04] Change release cadence of Ansible from 'every 3 weeks' to 'every 4 weeks' #151

Closed
felixfontein opened this issue Oct 13, 2022 · 29 comments

Comments

@felixfontein
Copy link
Contributor

Summary

Right now we are releasing new minor Ansible versions every three weeks (with some exceptions, like holiday seasons etc.). We originally chose the number 3 since Ansible 2.9 was also releasing every three weeks. After we decided for every three weeks, but before Ansible 2.10 got released, the core team adjusted their release schedule (for Ansible 2.9 and back then ansible-base 2.10) to release every four weeks, with a release candidate three weeks after the previous release. Back then we decided to stick to a 3-week cycle for Ansible, also to make it more obvious that ansible-base and Ansible versions can be different (back then that was brand new). We stuck to this 3-week cycle since then.

Now the version numbers of Ansible and ansible-core are sufficiently different, so we could also start to re-align the ansible-core and Ansible releases. Obviously a new major release of Ansible shouldn't happen exactly when the ansible-core 'major' release happens, but we already reduced that to three weeks (https://github.com/ansible/ansible/blob/devel/docs/docsite/rst/roadmap/COLLECTIONS_7.rst#release-schedule), as opposed to the five weeks we had for ansible-core 2.13 / Ansible 6, and even longer durations before.

So one potential idea would be to start releasing Ansible every four weeks, to align with ansible-core releases. Due to the three-week duration between the two major releases, one could also first start with new releases every three weeks until the releases are back aligned, and then release every four weeks.

With three weeks between Ansible releases, the schedule for Ansible 7 / ansible-core 2.14 looks as follows:

  • 2022-11-07 ansible-core 2.14.0
  • 2022-11-29 Ansible 7.0.0
  • 2022-12-06 ansible-core 2.14.1
  • 2022-12-20 Ansible 7.1.0
  • 2022-01-03/10 ansible-core 2.14.2 (could be one of these dates due to holiday season, maybe even one week later)
  • 2022-01-10 (or a week later) Ansible 7.2.0

As you can see after a few releases Ansible catches up with ansible-core, and could from that point on be released always after a ansible-core release.

What do you think?

CC @Ompragash @rooftopcellist

@rooftopcellist
Copy link

@felixfontein Thank you for bringing this up! I see two main benefits with aligning the ansible-core and Ansible community release cadence:

  • It will be easier to determine at a glance which ansible-core version is in a give Ansible community, because the minor version of Ansible will always been the same as the patch version of ansible-core. For example Ansible 7.2.0 would contain ansible-core 2.14.2.
  • Ansible community releases could coincide with either ansible-core RC releases or ansible-core GA releases. The big benefit here is that is it will be easier to track for the team doing the ansible releases, and will mean less context switching.

With that second point in mind, I put together an alternate potential schedule which aligns them sooner (we can refer to it as Idea B).

  • 2022-11-07 ansible-core 2.14.0
  • 2022-11-28 Ansible 7.0.0
  • 2022-12-05 ansible-core 2.14.1 & Ansible 7.1.0
  • 2023-01-3 ansible-core 2.14.2 & Ansible 7.2.0 [moved to Tuesday as Mon is New Years, will align with what core team decides]
  • 2023-01-30 ansible-core 2.14.3 & Ansible 7.3.0

With this approach:

  • ansible-core releases happen on Mondays unless there is a holiday (already the case)
  • Ansible community releases would happen within 2 days of the corresponding core release
  • This consolidates releases so that if everything goes smoothly, the core and community release could happen on the same day by the same person. And if there are collection patches needed as a result of core changes, there is some wiggle room to do that.

Another option (Idea C), which would consolidate release days would be having the community release on the 3 weeks after the corresponding core GA release (meaning it would correspond with the following RC).

Thoughts?

@Andersson007
Copy link
Contributor

+1 for aligning with ansible-core releases and releasing every 4 weeks

@mariolenz
Copy link
Contributor

I think it's a good idea to align our releases with ansible-core, so +1 from me.

  • 2022-12-05 ansible-core 2.14.1 & Ansible 7.1.0
  • 2023-01-3 ansible-core 2.14.2 & Ansible 7.2.0 [moved to Tuesday as Mon is New Years, will align with what core team decides]
  • 2023-01-30 ansible-core 2.14.3 & Ansible 7.3.0

I think it might be too much to release the same day. But I don't see why we should wait a week. How about:

  • 2022-12-05 ansible-core 2.14.1
  • 2022-12-06 Ansible 7.1.0
  • 2023-01-03 ansible-core 2.14.2
  • 2023-01-04 Ansible 7.2.0
  • 2023-01-30 ansible-core 2.14.3
  • 2023-01-31 Ansible 7.3.0

That is, one day after the ansible-core release?

@felixfontein
Copy link
Contributor Author

I'm +1 for releasing both every four weeks and making them aligned, but I don't like a three weeks (or even two weeks) delay between ansible-core and Ansible releases. I think that delay should be one day to at most a week. (I'd prefer something like 1-2 days, but if there's a majority or "let's wait longer" I think it shouldn't be more than a week.) In any case, I would avoid having the Ansible release too close (i.e. on the same day) as the ansible-core release, mainly to avoid having the Ansible release on Monday or Tuesday morning (at least Europe time). The main idea here is that collections who want to release in time for Ansible have a bit of time to finish their release; if Ansible would also be released on Monday, these collections would have to make sure thay are released by then. Since community.general is one of these collections (maybe even the only one strictly syncing to Ansible) and I'm doing the releases there, I'd prefer to be able to do them on Monday evening or even Tuesday morning (both Europe time), which would be problematic if the Ansible release would happen on Monday afternoon/evening (US time). Once it happens on Tuesday (and not in the early morning) in US time, or even later than that, there would be no potential problem :)

(Of course for specific releases there can always be a longer delay, due to vacations, folks being sick, or other unforseen circumstances. That's always possible and this topic isn't about that, but more about the general idea. I hope everyone agrees :) )

@mariolenz
Copy link
Contributor

I'd prefer something like 1-2 days, but if there's a majority or "let's wait longer" I think it shouldn't be more than a week.

1-2 days sounds good. One week is a bit on the late side imho.

@felixfontein If one day is OK for you, I'd prefer this. But if 2 days are better for you to handle community.general releases, I won't object. But I think it should be 1 or 2 days, not more.

@gotmax23
Copy link
Contributor

I agree with @mariolenz. FWIW, this schedule is better for me as the the ansible{,-core} package maintainer in Fedora. I appreciate a predictable release schedule with ansible being released shortly after ansible-core. This way, I can locally build and test the two together and push one update. It takes more of my time when they're over a week apart, because I can't do everything together. When they're closer to 4-5 days apart, that ends up delaying the ansible-core update, because I have to reset the ansible-core update to add ansible to it, as stable Fedora package updates have a mandatory testing period.

@felixfontein
Copy link
Contributor Author

I don't really care much about the distance between ansible-core and Ansible releases, but more on when the Ansible release happens in the week :) As long as the release doesn't start on Tuesday early morning (US time) or before, it's fine for me (i.e. I have Tuesday morning or lunchtime to do the release, European time). Since ansible-core releases usually happen on Mondays, +1 day is fine for me.

In case the ansible-core release happens only on Tuesday (sometimes it's delayed, for example if AZP has problems), I also don't mind if Ansible is released on the same day, as long as c.g is out ;-)

@felixfontein
Copy link
Contributor Author

@gotmax23 what you write also sounds very reasonable, I agree that the releases should generally happen soon after each other. This will definitely help all packagers (including you).

@mariolenz about your schedule, the main drawback I see is that the delay between 7.0.0 and 7.1.0 would be very short - namely only one week:

  • 2022-11-07 ansible-core 2.14.0
  • 2022-11-28 Ansible 7.0.0
  • 2022-12-05 ansible-core 2.14.1
  • 2022-12-06 Ansible 7.1.0

What do folks think about this? We could delay 7.1.0 by a week, but then we're again making life harder for packagers. Maybe we should just try to decrease the time between ansible-core 'major' release and Ansible major release shorter (two weeks instead of the three we're currently giving it? or maybe even less eventually?).

@gotmax23
Copy link
Contributor

Maybe we should just try to decrease the time between ansible-core 'major' release and Ansible major release shorter (two weeks instead of the three we're currently giving it? or maybe even less eventually?).

+1 to making the gap shorter. I don't think we should block users and distribution packagers who follow the version constraints from updating to the new ansible-core major version.

@Ompragash
Copy link
Member

@felixfontein +1 to your proposal and releasing Ansible close to ansible-core GA makes it easier for packagers.
However, core decides on the ansible-core release schedule (and for 2.13.0 the release happened a week earlier than the proposed date). I think these discussions should happen publicly too to avoid confusion and the planning of community releases becomes smoother!

@mariolenz
Copy link
Contributor

about your schedule, the main drawback I see is that the delay between 7.0.0 and 7.1.0 would be very short - namely only one week:

Good point @felixfontein! How about keeping the release cadence to every 3 weeks until 7.3.0 and then switch to 4 weeks? If I got the dates right, it should look like this:

  • 2022-11-07 ansible-core 2.14.0
  • 2022-11-29 Ansible 7.0.0
  • 2022-12-05 ansible-core 2.14.1
  • 2022-12-20 Ansible 7.1.0
  • 2023-01-02 ansible-core 2.14.2
  • 2023-01-10 Ansible 7.2.0
  • 2023-01-30 ansible-core 2.14.3
  • 2023-01-31 Ansible 7.3.0

This means we would release as planned until 7.3.0 and then switch to 4 weeks. No need to release sooner or later until then, and with 7.3.0 we automatically get the ansible-core release date + day.

@rooftopcellist
Copy link

I agree with having the Ansible releases 1-2 days after the ansible-core release, especially given the logistics/timing reasons mentioned above.

I am more in favor of having a shorter gap between ansible-core 2.14.0 and Ansible 7.0.0 (2 weeks instead of 3), and having 7.1.0 a day after 2.14.1, which I think is what @felixfontein was suggesting. That way ansible-core and Ansible community are aligned as early as possible (by 7.1.0), which makes things easier to track.

@mariolenz
Copy link
Contributor

@rooftopcellist You mean like this:

  • 2022-11-07 ansible-core 2.14.0
  • 2022-11-22 Ansible 7.0.0
  • 2022-12-05 ansible-core 2.14.1
  • 2022-12-06 Ansible 7.1.0

@felixfontein
Copy link
Contributor Author

Including Beta/RC1 this would be:

  • 2022-11-07 ansible-core 2.14.0
  • 2022-11-08/09 Ansible 7.0.0b1
  • 2022-11-15 Ansible 7.0.0rc1
  • 2022-11-22 Ansible 7.0.0
  • 2022-12-05 ansible-core 2.14.1
  • 2022-12-06 Ansible 7.1.0

This sounds fine with me, but we might want to add a precaution like "If we find out we need another release candidate, it will be made on 2022-11-22 and the 7.0.0 release will be delayed by a week". That way we can still react if after the RC some important enough problems are found.

In any case, if we want to make this modification already now, we should vote on this as soon as possible :)

@mariolenz
Copy link
Contributor

This sounds fine with me, but we might want to add a precaution like "If we find out we need another release candidate, it will be made on 2022-11-22 and the 7.0.0 release will be delayed by a week". That way we can still react if after the RC some important enough problems are found.

Good point, let's add this. However, since it looks like we are more or less agreed on releasing the community package a day after ansible-core, we maybe should also make clear that "this will not delay the 7.1.0 release".

In any case, if we want to make this modification already now, we should vote on this as soon as possible :)

I agree, you should open a vote for this. Maybe ending November 1, so people have a few days to react on the next Bullhorn issue?

@felixfontein
Copy link
Contributor Author

Hmm, we still haven't started a vote, so the vote must go at least until November 3rd anyway.

@felixfontein
Copy link
Contributor Author

Proposal:

  1. Release 7.0.0rc1 one week after 7.0.0b1, where 7.0.0b1 is released approx. one day after ansible-core 2.14.0.
  2. If there is no major problem with 7.0.0rc1 reported until the end of the week when it was released, the 7.0.0 release will happen one week after the 7.0.0rc1 release.
  3. Otherwise 7.0.0rc2 wlil be released one week after the 7.0.0rc1 release, and 7.0.0 one week after 7.0.0rc2.
  4. The 7.X.0 release will happen appox. one day after 2.14.X for X > 0.

Does this sound good? Should we vote on it? @rooftopcellist @Andersson007 @mariolenz @gotmax23 @Ompragash If everyone is fine with it, I can start a vote tomorrow morning. (If someone thinks the vote should start before then, feel free to start the process yourself :) )

@mariolenz
Copy link
Contributor

@felixfontein Sounds good, let's vote on it!

@felixfontein
Copy link
Contributor Author

Voting on this has now started: #157

@felixfontein felixfontein changed the title Change release cadence of Ansible from 'every 3 weeks' to 'every 4 weeks' [Vote ends on 2022-11-04] Change release cadence of Ansible from 'every 3 weeks' to 'every 4 weeks' Oct 28, 2022
@felixfontein felixfontein added the active-vote These are currently active votes label Oct 28, 2022
@felixfontein
Copy link
Contributor Author

@ansible-community/steering-committee please don't forget #157. This vote on the Ansible release cadence ends on November 4th and hasn't many votes yet.

@ssbarnea
Copy link
Member

ssbarnea commented Nov 2, 2022

I did not vote on that because I am ok with any option. Posted this to ack that I read it.

@maxamillion
Copy link

+1 for alignment

@mariolenz
Copy link
Contributor

mariolenz commented Nov 4, 2022

I counted votes: 7 x +1 from SC (felixfontein markuman mariolenz gotmax23 Andersson007 russoz gundalow), 1 x + 1 from community (cybette)

edit: And a +1 from @maxamillion here, but I'm not sure if we count this if it's not done in the official vote.

@maxamillion
Copy link

maxamillion commented Nov 4, 2022

I counted votes: 7 x +1 from SC (felixfontein markuman mariolenz gotmax23 Andersson007 russoz gundalow), 1 x + 1 from community (cybette)

@mariolenz That's the count I got as well. 👍

@mariolenz mariolenz changed the title [Vote ends on 2022-11-04] Change release cadence of Ansible from 'every 3 weeks' to 'every 4 weeks' [Vote ended on 2022-11-04] Change release cadence of Ansible from 'every 3 weeks' to 'every 4 weeks' Nov 4, 2022
@mariolenz mariolenz removed the active-vote These are currently active votes label Nov 4, 2022
@rooftopcellist
Copy link

rooftopcellist commented Nov 4, 2022

Looks like I just missed the vote, I am also in favor of that proposed schedule. I am really happy with this change, and I think it will make the ansible-core and community releases easier to manage, for many of the reasons @gotmax23 mentioned earlier.

Thank you @felixfontein for bringing up and leading the discussion, and thanks to all of you for your involvement!

It looks like there are some dates that need to be updated on https://docs.ansible.com/ansible/devel//roadmap/COLLECTIONS_7.html (specifically the 7.0.0 release date itself from Nov 29 --> Nov 22)

I'll request that to be updated.

@mariolenz mariolenz added the being_implemented This is currently being implemented label Nov 4, 2022
@mariolenz
Copy link
Contributor

@felixfontein I've opened ansible/ansible#79307 to change the roadmap. Would be great if you could check that I really got the new dates right. I would remove the [WIP] if you think this PR is OK.

@felixfontein
Copy link
Contributor Author

I counted votes: 7 x +1 from SC (felixfontein markuman mariolenz gotmax23 Andersson007 russoz gundalow), 1 x + 1 from community (cybette)

I can confirm this.

@mariolenz mariolenz added implemented and removed discussion_topic being_implemented This is currently being implemented labels Nov 4, 2022
@mariolenz
Copy link
Contributor

ansible/ansible#79307 is merged, so I think we can close this.

@felixfontein
Copy link
Contributor Author

Thanks everyone!

@felixfontein felixfontein moved this from Backlog to Resolved in Community Topics TODO Nov 4, 2022
@felixfontein felixfontein changed the title [Vote ended on 2022-11-04] Change release cadence of Ansible from 'every 3 weeks' to 'every 4 weeks' [associated vote ended on 2022-11-04] Change release cadence of Ansible from 'every 3 weeks' to 'every 4 weeks' Mar 29, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
No open projects
Status: Resolved
Development

No branches or pull requests

8 participants