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
docs: document CI versions of Ubuntu #13625
Conversation
Review period will end on 2022-08-02 at 00:00:00 UTC. |
As asked in #13619, here is a first attempt to document our decision (if everyone is in line with this). The document is still a draft. |
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.
Thanks! Can we also add a maintainer guide for migrating to a new distribution?
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.
Looks great so far! Thanks for this @iMichka!
Review period ended. |
I rewrote the documentation based on all your feedback. @MikeMcQuaid I did not describe the migration process: I plan to do this in a second pull request, to keep the discussion focused in this one. |
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.
Great work @iMichka. Some optional suggestions. Happy for this to be merged with or without my suggestions once it's non-draft.
Done. Let's gather some more feedback before merging this. |
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.
Agree with the overall shape of this, but perhaps some of the details need working out.
@MikeMcQuaid / @carlocab I initially wrote 22.04, and I think this was discussed elsewhere, but I thought no strong decision was taken up to now. I was looking at the statistics @sjackman posted on Slack: 50% of our users are using Ubuntu 20.04 and 20% Ubuntu 22.04. This means that if we use 22.04, more than 50% of our users will need to install Homebrew's glibc. My logic for using 20.04 (the proposed On macOS there are always 3 supported versions: the rotation is 3 years. There we can always ship the latest version because we build for 3 macOS versions. On Linux we are not doing this, so a 2 year rotation is a good middle ground in my opinion. Of course if we already decided to use 22.04 and there are good reasons (that we want to write down), then disregard my change and let me know :) |
I'll try to make a case for 22.04 instead. From what I understand, the desire to limit how many users have to use brewed
There is also concern about using a newer GCC in 22.04 in CI because some (mostly C++) formulae will fail to build, but I also think this is something we should try to fix, and usually it's just a matter of some missing By contrast, when a formula needs a newer GCC because our host GCC in CI is too old, it can be quite painful. All C++ dependents of that formulae immediately acquire a dependency on brewed GCC as well. While we have taken the steps to make sure this no longer holds up GCC updates, it still creates a maintenance headache. Importantly, unlike the above issues, it is not due to "bad behavior" on the part of the formula like shim bypasses, opportunistic linking or lack of maintenance to maintain compatibility with newer GCC. Ironically this problem is more likely for formula which are very actively maintained and try to use newer features of C++. To me we shouldn't be creating maintenance burdens for formulae which are doing the right thing by staying up to date. It makes a lot of sense for us to be submitting upstream fixes when formulae are missing There are probably many valid rebuttals to what I've said so please let me know what you think! |
Does this mean we have a 2 year window to migrate but also we have to migrate in that 2 year window? I'd probably like to see something like e.g. we use the latest LTS at least ~3-4 months after release and we always migrate to the latest LTS within at most 12 months of release. Given we're a rolling-release package manager and we're aggressively migrating to the latest macOS version on release (sometimes even in public beta): we need to ensure that macOS and Linux are somewhat in-step with e.g. compiler usage.
I agree with this. This is similar to what we've done with portable Ruby on macOS: often only the newest version of macOS with relatively low adoption avoids a portable Ruby but this makes it easier for us to be able to rely on a newer Ruby version everywhere. Same deal here but with @danielnachun for reference: how big is a 1) bottled and 2) installed
@danielnachun how hard is this looking currently? Is it a question of overzealous detection we could hack around in Homebrew/brew or legitimate location hardcoding that will break when moved?
Agreed. Again: we're a rolling-release package manager. We try to ship the newest things as quickest as possible. That's going to be easier for us on Linux with newer toolchains. |
I rewrote the document for Ubuntu 22.04, with some more explanations. @danielnachun / @MikeMcQuaid I copied / adjusted some stuff you said above directly into the documentation. It will probably need some rewording but at least we can all agree on the reasoning and the final choice for Ubuntu 22.04 (this year) and the proposed migration timeline. |
It's 200MB in both cases to my knowledge. Not the smallest package but not huge either.
It is absolutely legitimate location hardcoding, so prefix patching is obligatory for this to work. That on its own isn't too bad as we know how we will implement that. The harder part is that there are 3 issues I'm aware of where prefix patching is insufficient to make Two of them are because in The other problem is that |
Yeh, that's tiny.
@danielnachun Good to know. From my perspective I think we need to operate with the assumption that this will take a non-trivial amount of time after a migration to occur. If we beat that pessimistic assumption: great, but let's not rely on it for our plans. Does that change anyone's mind given it's the case?
👍🏻 totally fair @danielnachun. |
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.
Wording is great.
Let's merge this. I'll work on adding a small section for the necessary migration steps (though these may change over time as new challenges arise). |
brew style
with your changes locally?brew typecheck
with your changes locally?brew tests
with your changes locally?