-
-
Notifications
You must be signed in to change notification settings - Fork 512
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
Drop Python 3.8 #5013
Comments
We had a bit of discussion on this topic in some place (maybe the private core chat?). The gist of it (and if we never find a reference, happy to take this simply as the expression of solely my opinion) was to keep Python 3.8 as part of the CI matrix as long as we don't see issues with the load. In the end, this comes down to the decision on whether we, as conda-forge, want to follow CPython's schedule for support or NumPy's NEP29 which is a bit stricter in dropping old versions. |
This was discussed in one of the recent core calls, and should be in the minutes. While we're free to adapt our choice as necessary, there was a clear desire to match CPython's support window, as long as it doesn't blow out our resources. |
Well offline the other day there was also a discussion about the CI queue getting larger. So think it is worth raising what resources we want to commit to this Put another way every decision where we commit resources to one item means another item may not get them. Not to say it is exactly zero sum (we can ask for more resources from those who make asks of us), but there is some trade off that we need to be considering and the impact it has on what we are able to do |
Yes, we're all aware of the resource constraints, but not nearly all of the growth in our consumption is due to another python version (e.g. we dropped pypy3.8, so the full matrix is still 6 builds); there's also an overall growth of conda-forge in terms of packages, and some stacks just have 2-3+h builds across multiple feedstocks, so if those get touched by a migration it's a big hit (and the combination of py312 + boost + protobuf is quite the whammy migration-wise). @jezdez mentioned that we should be able to get the pool from azure pipelines to be increased, which would obviate that discussion, but in any case, dropping 3.8 was considered having a broad impact on the wider ecosystem, so we decided to try to keep supporting it (with a caveat that it's best effort and we can change our minds of course), and see how things develop. |
Sorry, wrong thread 🙈 |
One way that I'm reconciling with this is:
One way to reconcile this is to:
|
I feel like the hurdles we experience in #5790 support dropping Python 3.8. Personally, I feel like we would help ourselves a lot by adopting a certain policy here. This would make it easier for all consumers what is expected to be supported. Given that a fair share of people involved are interested in scientific Python packages, I have the preference to adopt SPEC0. |
I don't think we should adopt SPEC0 as conda-forge has grown out of a being a scientific python community to a general python community. Dropping a python version because of a need to release an ABI breaking downstream package (albeit a very important package) as a pre-release seems like the wrong thing to do. We should have this discussion after numpy 2.0 is released to not have that over our heads so that we decide on what's best for the community. |
Whether it is SPEC0 or not I would prefer to move to a strict "time bound" policy for dropping versions. Its very "tiring" to have these discussions about backward compatibility. The reason I support NEP29/SPEC0 is that somebody took the time to address the concerns, and draw a line somewhere. (FWIW, I'm asking Numpy to adhere to their own suggestions and drop python 3.9 https://mail.python.org/archives/list/numpy-discussion@python.org/thread/AHTATJKGUEOILBNUI5IGGZPXJ5FXIRAU/ )
Preparing for Numpy 2.0 has been chosen by many of the core developers as a project that is of importance to the community. I don't think there is ever "a right time" to have these dicussions, the pending numpy 2.0 release is just a good forcing function for this discussion. |
Is there really still appetite to build new packages for python 3.8 or 3.9? My feeling is that:
This way we:
Again, we wouldn't stop buliding new patch versions of the python package itself, just stop reduce our downstream matrix to:
"3 versions" of python seems plenty for me. |
Yes, let's keep building downstreams for 3.9. As long as python 3.9 is supported, some packages will keep supporting 3.9 and conda-forge packages are used in their CI configurations and having new packages is important for development. (For eg: pytorch) |
Strong -1 on this. Make the recipe reflect the metadata that's encoded by upstream. I can see an argument for the unclear "Python>3", but otherwise we're just breaking configurations that would otherwise work and create confusion against configurations that upstream intends to support. And in the case of noarch, it comes with no cost to us. |
🤷♂️ At this point we are 6 weeks from Python 3.8 EOL, might as well push to the end. Figure at this point we would drop it whenever we add Python 3.13, which is likely not far away either Should add I'm saying this as someone who has advocated for dropping Python 3.8 a lot earlier. It just seems like this discussion will resolve itself very soon For other Python versions and policy discussions, they were not the focus of this issue. So don't think we should be having them here. We should start new issue(s) scoped for those topics. These conversations are too important to not have in places where they are easily searchable and discoverable (discussing them under a Python 3.8 issue makes them a bit harder to find and creates avoidable confusion) |
The flipside of this is that we have a lot of I think it would make sense to set the lower bound in noarch recipes to our oldest supported python version. That's realistically the only thing we can test and support. Upstream may support more, but conda-forge doesn't have to - when we drop python 3.8, that IMO should include noarch packages. Perhaps not as an obligation, but at least as a linting rule.
👍 That's the plan AFAIU it |
Could we please move this discussion to issue ( conda-forge/conda-forge.github.io#2210 )? Think this is a good conversation to have and there's already some thoughts in that issue |
Reading this old thread again, I wonder if we can prioritize the interaction with MSFT / Azure Pipeline again. Conda-forge has grown a lot, but our limit of 200(?) agents hasn't changed in a long time. |
Opened a PR to drop in #6344 |
Did i miss a conversation? I thought we were on track to keeping support until Oct 2024. |
Yes, but it's only 5 weeks away and I don't think we would lose anything by dropping building packages a month early. Python 3.13 migration is about to start and it will be a waste of resources to keep building new packages in the migration (because the migration will have a build number bump) just to drop it a month later. Python 3.13 is orthogonal to 3.8 discussion, but in terms of practicality, I think it's okay to drop it now instead of waiting another month. What do you think? |
I agree with Isuru here. My understanding of the discussion w.r.t. PEP 602 (one example from the core call minutes is here) was that we'd do a best effort to keep building 3.8 towards its EOL, even if that means one more entry in the CI matrix everywhere. But we've ~always used new python migrations as a reason to get rid of a version that's (close to) EOL, and I think we shouldn't change that, because it makes sense on a lot of levels (c.f. Isuru's comment above). Let's keep the CI matrix from blowing up, the migration will be enough work as-is IMO. |
I understand if we want to say "until the appropriate RC is released" |
That's a good idea. We can say python 3.X is supported until EOL or until python 3.(X+5).rc1 is released whichever comes first. |
Should we encode this as a CFEP? |
We could. Though I think it is important to remember that this is a volunteer effort with donated resources. IOW we should not tie ourselves to an anchor that makes it hard for us to adapt to changing constraints |
At the very least document it so we have a reference we can use next time this conversation comes up. |
Yes this is why I was suggesting we open a dedicated issue on this topic to discuss as opposed to having it in the annual Python bringup/drop issues & PRs Simply having the conversation in one easy to find place would be quite helpful for our future selves |
Recently we added the Python 3.12 migration ( #4914 ). Typically when we have added a new Python version we have bumped the minimum Python version supported as well. Currently Python 3.8 is the minimum. So am proposing we drop Python 3.8 moving our minimum Python version to 3.9. Thoughts?
cc @conda-forge/core
The text was updated successfully, but these errors were encountered: