-
-
Notifications
You must be signed in to change notification settings - Fork 10.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
glibc: set next version #19238
glibc: set next version #19238
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would like @Bo98 to chime in before this is merged. He had some concerns about increasing the glibc
version that I'd like to be spelled out a bit before.
Happy to wait on @Bo98's comment :) On this particular PR, we are not changing the glibc version yet. We just change the "next value", in preparation of the actual change, so this particular PR should be OK. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, ok, fine with being merged as-is now and can get @Bo98's thoughts before we pull the trigger on the next version, thanks! 👍🏻
#19248 should explain this better. While brewed glibc does work well for what it does, it ultimately isn't problem free. We simply do not test against glibc on individual formulae and have received unfixed issue reports about things that doesn't quite work well:
It's not unusable or anything but will break some user workflows and we offer no guarantees it works as we don't test it. 40% of our Ubuntu users are running 22.04. That's a lot to move to tier 2 support. Ubuntu 24.04 is not even a year old yet. That's not to say we should never upgrade - we definitely should and not get into a situation where we're using 6-year-old versions of Ubuntu. But I also reckon we shouldn't necessarily upgrade too early either. I think the questions we should ask every bump are:
Basically: we should make sure we're actually benefiting from bumping the minimum version. |
I see, I thought it was more a technical issue, but it is more about user experience and what support we want to give to our users. Last time we had this discussion we updated the docs: https://docs.brew.sh/Linux-CI#past-and-next-versions
See also the reasons here: https://docs.brew.sh/Linux-CI#why-always-use-the-latest-version I am happy to revisit this if needed. The idea is that the more we wait, the more work it is for us. Another alternative would be to bottle for ubuntu 24.04 and 22.04, allowing for a smooth switch over a period of 3-5 years for our users. |
EDIT: See below for additional context. |
Worth noting this was before we updated glibc and got feedback from users on how it went. We updated the docs in early August 2022 (#13625) but proceeded with the changes in late August 2022 (#13733). The main issue I have is we're not offering tier 1 support for older glibc and setting the minimum bar for tier 1 support to be a Linux distro released < 1 year ago seems extremely restrictive, unless we can demonstrate to users why it's worth it like we could last time (e.g. multiple formulae cannot be updated). |
That makes things more interesting. In that case, I agree that we should be more cautious if it didn't go well the last time we did this. |
It sounds like this is what @Bo98 objects to. @Bo98 what would you want this to say/be instead?
Strong 👎🏻 from me on doubling CI time for this.
Let's remember that "Tier 2 support" is, as of yet, currently undefined beyond a single issue. Not a slam-dunk by any means but: it is worth noting that GitHub Actions'
I don't really agree that, as-is, this would be a breaking change. The term "breaking change" is being thrown around a lot (too much, in my opinion) recently. To answer your "why bump?" question, based on what @iMichka said above: we are going to have to bump at some point and the longer we wait, the harder it will be to do so. My take is that it would be nicer to not have to wait until we have hard blockers due to migration. We should aim to plan to document clearly in advance (this was done) what our plans are and actually stick to them. I agree that it sounds like we need to have more discussion before moving forward but, in my opinion, the best format of this discussion is not "let's do X", "let's not do X" but instead "let's do X", "let's do Y" instead, ideally with actual pull requests proposing changes to the relevant documentation. |
Second latest is probably a reasonable middle ground. Remember at the time we switched last time we were previously using the 4th latest, which I agree is too long. In terms of GCC, about ~15 months after Ubuntu 22.04 was released (a few months after we moved), GCC 12 did become available in the main repository (the runtime libraries have always been version 12) alongside GCC 11 so we should probably switch to that. Not sure if the same will happen to 24.04 yet so hard to suggest docs change for that yet.
It reflects reality of our CI coverage though and how the solution to some issues has been to use a newer Ubuntu. We probably should have CI that tests formulae on brewed glibc but we don't.
We agreed it was last time but could try ship it in a patch release this time. Swift dependents used to all break but I might have fixed them now. Main Swift formula might still break but that's better than last time.
This is one point I don't understand. The process to update does not change over time so it shouldn't get more difficult. |
Second latest Ubuntu release or Ubuntu LTS? If the latter: essentially this is "wait 2 years until after an LTS release", right?
Sounds like it's maybe ~15 months or conditional on this and a ~24 month max?
Any technical process that's done less often becomes harder than a process that's done more often. If we had something that needs bumped once a month vs. once every 4 years: the chance of documentation/knowledge/maintainer attrition causing a fuck-up is dramatically higher. That's not me saying "therefore we must do this now" but it is definitely an input into the equation here. Doing it entirely from a user-centric perspective doesn't account for this stuff and ends up with worse user outcomes. |
LTS yeah
Probably yeah
I'm not suggesting a change in cadence, just a change in the baseline. When the baseline is aligned the cadence should be roughly every 2 years still. |
GCC 12 could be worth considering as latest |
This is good reasoning for moving to GCC 12 sooner rather than later. What motivated the glibc version bump last time? Do we have any cases or pain points based on our glibc version? If we don't really have anything here: I think from the above I'd suggest we just bump GCC and not glibc this time (and document how you decide such things). |
By my recollection: the bump to from 16.04 to 22.04 was 100% motivated by the GCC version. I don't think having an old glibc ever really caused us any problems. |
Yeah, I think newer glibc was mainly a side-effect of updating Ubuntu rather than something we specifically needed. Not aware of any core formulae that need a newer glibc > 2.35. Some things we did get from glibc update:
|
@Homebrew/maintainers given discussion here: my suggestion is that we:
Any thoughts/objections/other ideas? |
See https://docs.brew.sh/Linux-CI#past-and-next-versions for ref
brew style
with your changes locally?brew typecheck
with your changes locally?brew tests
with your changes locally?