-
-
Notifications
You must be signed in to change notification settings - Fork 25.9k
RFC Write an explicit rule about bumping our minimum dependencies #30888
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
Comments
Speaking with @lesteve in real life and looking at the proposal, I'm fine with it. I really think that there is value in having a statement instead of going back each time we need to move forward with version bumping. To me, it is a strong proposal because:
|
I like the proposed schedule. I think we should formalise this as quickly as reasonable and then make a blog post announcing the changes that are coming for 1.7. We could also announce the general policy, but maybe in a separate post to give room to show the policy, the retrospective, etc
Can you explain this again? Though maybe it isn't worth it because I like the proposal, even without understanding this difference. |
What do you think about bumping pure python deps only in november (it's usually december but the goal is november 😄 ) as well ? |
I'm happy with this proposal, and we should add a note to our "how to release doc" to make sure we don't forget. cc @scikit-learn/core-devs for visibility. |
I am happy with the proposal. Can we formalize this proposal with a quick SLEP? This way users know the schedule and other projects can see an alternative to SPEC0. Edit: I meant a SLEP (scikit-learn enhancement proposal) |
So as discussed during the monthly meeting, the soft consensus seemed to be:
|
One of the many variants to be discussed 😉. At the meeting @ogrisel suggested bumping numpy, scipy etc ... both in December and in June, whereas I initially went for only in December where you bump Python to be more conservative. I'll wait for more feed-back and try to identify the kind of variants we have ... |
I think we should write a blog post no matter what. I think it gets read by more people and/or we can use it to announce that there is a SLEP. Jeremie's suggestion to only bump things i 8000 n the November release sounds nice. When you say SPEC, do you mean SLEP? To me it seems like if we want to formally write things down it should be a SLEP as this is just about scikit-learn. Or is is useful for others to use this "SPEC0+1", in which case maybe a SPEC? |
If possible, the best case scenario would be to add to the existing SPEC0 IMO. Stefan said on discord that he is open to including a variant for longer term support. I think that makes sense since there is nothing completely specific to scikit-learn here, right? |
My current plan:
Maybe I am being overly cautious, but IMO coupling this scikit-learn discussion too early with SPEC0 is the best way to tangle too many things and lose the momentum that has been going on on this topic 😉. |
from #30895 (comment) @lesteve :
With "plan 1" described at #30895 (comment) |
I also have a quick and dirty script as mentioned in #30895 (comment). I'll try to devote some time to have something written up for next monthly developer meeting (next Monday, i.e. March 31) |
Here is a draft of what the consensus seems to be for our "dependencies minimum version bumping rule": Guideline
Example for the upcoming scikit-learn 1.8 releaseThe upcoming 1.8 release is scheduled around November/December, let's pretend it will happen on 2025-12-01, Python 3.10 (released in October 2021) will be more than 4 years old and will be dropped so our minimum supported Python will be Python 3.11 (a bit more than 3 years old). The dependencies minimum versions will be bumped as follow:
The new minimum version were generated from this hacky script, with definitely some room for improvement. Rough Comparison with SPEC0
|
I unfortunately won't be there, but just to flag this, is anyone from scikit-learn planning to attend the Scientific Python Developer Summit this year? If so, I think it would be really useful to work on an extension of SPEC 0 which accommodates for these slightly more conservative rules. |
I think @virchan is planning to attend physically. Some of us expressed interest to go to the Scientific Python Developer Summit, but unfortunately can not make it this year. @glemaitre (and maybe I) may try to get involved remotely, depending on how feasible this is. I tried to highlight the difference with respect to SPEC0 in #30888 (comment). IMO, one of the main difference is that SPEC0 thinks in term of "when I can drop support for a particular version" whereas I find it slightly more natural to think in terms of "how old should my minimum supported version be". For dependencies with regular releases (Python, numpy, scikit-learn, etc ...), the difference between the two is small. If your dependency releases every 6 months, dropping support for a release that is more than 2 years old means your minimum version is roughly 1.5 years old. For dependencies with somewhat irregular release cadence (e.g. joblib or threadpoolctl), the difference is greater. Dropping support for joblib 1.3.0 that will be more than 2 years old in December 2025 means our minimum version 1.4.0 would be less than 8 months old, which is too aggressive compared to what we have been doing (rule of thumb for joblib + threadpoolctl: minimum version is roughly 2 years old). |
The Scientific Python Summit 2025 issue tracker is now open. It might be a good idea to mention this SPEC0+1 discussion there as well. I’d be happy to follow up on anything for scikit-learn during the summit. |
Uh oh!
There was an error while loading. Please reload this page.
Roughly a year ago, SPEC0 was rejected following a vote and we said we would write our own rule, but we did not 😅.
Until now 💪.
This was spurred by a Discord discussion with @lucascolley, @betatim, @jeremiedbb and @ogrisel.
cc @glemaitre whom I had a chat with about this.
Proposed rule
Rationale
Proposed plan
we didn't bump our dependency in 1.6 so we would bump them in 1.7 (June 2025) and start the regular December version bump in December 2025.
This is what it would look like for the next 4 scikit-learn releases (
python-date-diff
column is the age of the min Python at the time of the scikit-learn release, and similarly for other dependencies).Python:
non pure-Python dependencies:
pure Python dependencies:
Comparison to SPEC0
Note: SPEC0 talks about the age of the dropped dependency release, which I find slightly harder to think about than the age of the minimum depency release. The age of the dropped dependency release also depends on the dependency release cadence. This does not matter than much for dependencies with regular releases like numpy, but makes more of a difference for dependencies with less regular releases, like joblib.
"What is our implicit rule?" investigation
tl; dr: very ad-hoc and sometimes more adventurous than the proposed rule
I used a quick and dirty script to figure out what we have been doing historically.
Python:
the proposed rule means our minimum Python is a bit more than 3 years old, which fits what we have done historically. Note that scikit-learn 1.1 dropped 3.7 quite aggressively (#22617 does not mention any particular reason), and that we did not bump our dependency for 1.6.
numpy:
roughly 3 years in terms of time-based rule, which roughly matches what the proposed rule would do. Note the aggressive bump in 1.1.
scipy:
roughly 3 years in terms of time-based rule, which roughly matches what the proposed rule would do. Note the aggressive bump in 1.1.
pandas:
roughly 3 years in terms of time-based rule, which roughly matches what the proposed rule would do. Note the aggressive bump in 1.1.
joblib:
the proposed rule (2 years) roughly corresponds to what we have been doing when deciding to bump. Note:
The proposed rule (2 years) roughly corresponds to what we have been doing historically when deciding to bump.
The text was updated successfully, but these errors were encountered: