Skip to content

Add LTS to SPEC 0 #389

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

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

jarrodmillman
Copy link
Member

@jarrodmillman jarrodmillman commented May 13, 2025

Fix #190. Fix #386. See scikit-learn/scikit-learn#30888 (comment).

Todo:

  • Get scikit-learn feedback
  • Get approval from all core projects that currently endorse SPEC 0
  • update spec-0000/SPEC0_versions.py

Copy link
Member

@bsipocz bsipocz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really like phrasing this as LTS, it feels to be a nice extension and compromise!

I haven't looked in into the test failures, obviously the approval is not for any potentially relevant failures.

@jarrodmillman jarrodmillman marked this pull request as draft May 13, 2025 23:11
@virchan
Copy link
Member

virchan commented May 13, 2025

I think what's outlined in LTS is consistent with what scikit-learn is doing in scikit-learn/scikit-learn#30888.

So I would like to ping @lesteve and @lucascolley to see if they have any thoughts or input.

@jarrodmillman jarrodmillman force-pushed the spec0+1 branch 4 times, most recently from 3877a37 to 62246ef Compare May 14, 2025 01:02
{{< admonition note >}}
Certain projects (e.g., projects that have more resources) may wish to provide long-term support (LTS) of an additional year.

Specifically, for projects wishing to provide LTS we recommend that:
Copy link
Contributor

@mdhaber mdhaber May 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The first sentence is that all projects should adopt a common policy. This goes against that, so I think we should acknowledge the discrepancy in some way. If we do not recommend one over the other, the first sentence might change to be "adopt one of two time-based poicies...". If we have a preference for the first but recognize the need for the other, we might say something to that effect here.

Copy link
Contributor

@mdhaber mdhaber left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestions about the new text are inline.

If we were modifying other text:

  • I don't understand the connection between the timeframe over which new releases support old dependency versions and the timeframe over which a given (feature) release will get bug fix releases. I think the SPEC would be more focused if it only mentions the former.
  • The "Ecosystem Adoption" and "Implementation" sections are empty. Is that desirable?
  • The background and motivation appears at the end, after the policy itself. Was that intentional?
  • The SPEC only mentions limiting support duration as a motivation. Does it also recommend providing at least a certain amount of time - just not much more?

But if the intent is to address only LTS here, feel free to hide this comment as "off topic".

Copy link
Contributor

@lucascolley lucascolley left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree with Matt's comments, but otherwise this looks like a useful change!

Co-authored-by: Matt Haberland <[email protected]>
@@ -32,8 +32,8 @@ All versions refer to feature releases (i.e., Python 3.8.0, NumPy 1.19.0; not Py

Specifically, we recommend that:

1. Support for Python versions be dropped **3 years** after their initial release.
2. Support for core package dependencies be dropped **2 years** after their initial release.
1. Support for Python versions be dropped **3 years** after the next version of Python is released.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am a bit confused about this. This seems like one more year of support for the non-LTS recommendation but I may be missing some context ...

For Python (yearly release cadence), "3 years after the next version is released" means "4 years since the initial release".

The changes in chart.md seem to agree with this "one more year of Python support".

Copy link
Contributor

@mdhaber mdhaber May 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. When talking about this correction of the logic, we've discussed only support for core package dependencies like NumPy. Since the time between releases is typically 6 months, we've actually discussed that we could drop support for an old version 18 months after the next version release. Since the release cadence of Python is annual, we could keep the same nominal time by making this two years after the next release and still keep the same nominal schedule.

So one option is to change these numbers to 1.5 and 2. We could make both 2 years for simplicity, but indeed, that would change the nominal support time for core dependencies.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Updating SPEC 0 for NumPy 2.0 transition Address @shoyer's comments on SPEC 0
6 participants