Repository navigation
APE 18: Adopt NEP 29 - #63
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
I state that this APE has precedence over 10 but I don't know what the rules are on retiring APEs.
Added |
Hopefully @astropy/coordinators and/or @perrygreenfield know... |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
👍 to this, just two comments:
|
|
|
||
| While this APE will not replicate the whole of NEP 29, and NEP 29 should be considered the canonical source for the support policy, the core scheme to be adopted is as follows: | ||
|
|
||
| astropy will support: |
There was a problem hiding this comment.
The core astropy package as well as other coordinated and infrastructure packages will support
There was a problem hiding this comment.
This is perhaps something different from APE 10, that this would be project wide
There was a problem hiding this comment.
I would not force infra and coordinated to follow this, e.g. they currently usually support more, especially the infra packages.
There was a problem hiding this comment.
So I would just go that they can't drop more than what is suggested in NEP29, but they could still support older versions of they want to
There was a problem hiding this comment.
Yeah, not sure how we can enforce this project-wide in a realistic manner. We barely have enough people to maintain the core as it is.
There was a problem hiding this comment.
Maybe we should say the "rule" applies to core, but coordinated&infrastructure packages will "aim" to follow this unless there's a reason not to? I.e. just say for everything else it's a guideline.
I think the virtue of that is that it gives some guidance for packages that are sort of like "we don't have a rule because we haven't really thought that deeply about it". Or alternatively/additionally, it provides an excuse to ask institutional players to help us bring things "up to standard" (I'm thinking here about how the py 3.x transition provided some people at institutions a way to fund additional work by existing Astropy devs)
There was a problem hiding this comment.
many of the infra packages didn't really have a reason to drop old versions for a while, and I fail to see why it would be different in the future. As I said above, in many cases dropping a version is more work than keeping it, thus the "aim" is problematic in practice. And frankly, what is important for the ecosystem is that all coordinated and infra support at least the NEP29, that there is no situation when something gets dropped sooner than this schedule.
There was a problem hiding this comment.
Agree we can make it a rule for core and recommendation for other parts of the project?
There was a problem hiding this comment.
if they have a reason to still support 3.4, then why not
Just thinking about #10888 that I just put in, which would require 3.7+ for astropy to work properly. If a coordinated package tries to force using Python 3.4 + astropy 4.2 then there will be problems. Not sure if that is credible.
There was a problem hiding this comment.
I'm not sure what you mean credible here, it's always up to the package manager to resolve the version requirements, I don't see any force being involved here.
E.g. on 3.4, it could be possible to install the latest version of a coordinated package, and naturally, it would come with an older astropy version. It's down to the CI of the coordinated package to make sure they are compatible with their minimum supported version combination, after all the user should know best why they are stuck on an older python/numpy combo.
(3.4 is probably a bad example, but a real life example, with astroquery we had to stay python2.7 compatible much much longer than astropy core as it took long for casa to move off it. We, the astroquery maintainers decided that it's something we were willing to do, and it was totally independent of the version support policy of core that was decided separately. )
I think NEP 29 saw this coming hence they decided on a time based scheme, rather than one tied to the CPython release schedule. So I think the answer is it doesn't. From the alternatives section of NEP 29:
|
| -------- | ||
|
|
||
| APE 10 previously determined supported CPython versions, and provided a list up to the 4.0 release. | ||
| Since APE 10 was written the wider scientific Python community have written and largely adopted `NEP 29`_ as a policy for supported versions of both CPython and Numpy. |
There was a problem hiding this comment.
While I'm fine with this, I think it might be good to give at least one concrete example of a way the more "accelerated" schedule will help things. Like what py3.7 features would we want to implement sooner rather than later? (manylinux2010 might be the answer! Or data classes?)
There was a problem hiding this comment.
I added a small justification in the backwards compatibility section, I don't really want to do a "let's adopt 3.7 because new features things" because I would rather this stand the test of time. I am happy to pull the justification section up here if you think it's a better place for it?
There was a problem hiding this comment.
I see your point on "stand the test of time", but I was thinking the point of this is to give a couple of concrete examples to what is currently a very abstract phrasing. So just meant something like "For example, at the time of the py3.7 release infrastructure maitainers found their life would be easier if manylinux2010 was an option". Or similar.
But if you really want it to be timeless, I'm ok with either pulling it up here or leaving as-is 🤷.
Co-authored-by: Erik Tollerud <[email protected]>
|
|
||
| * All minor versions of Python released 42 months prior to the project, and at minimum the two latest minor versions. | ||
| * All minor versions of numpy released in the 24 months prior to the project, and at minimum the last three minor versions. | ||
|
|
There was a problem hiding this comment.
| Note that, as stated in `NEP 29`_, these timelines all apply for the versions | |
| set at the time of the non-bugfix release. This means that the full | |
| support timelines for LTS versions of astropy are 66 and 48 months for Python | |
| and numpy, respectively. | |
this is the change I was asking for clarification of in https://github.com/astropy/astropy-APEs/pull/63/files#r506624591
There was a problem hiding this comment.
Maybe worth saying since these are currently supported for two years (in case we change that some day)
There was a problem hiding this comment.
I find this phrasing very confusing.
What about rewording to say the 42 and 24 are for the start of a release "family", and support won't be dropped in a bugfix release, neither on LTS nor on normal feature release bugfix?
There was a problem hiding this comment.
(also, I promised Stu a blurb about the exceptation, e.g. the latest LTS dropped a numpy version the release, as it would have been dropped based on NEP29 very soon after the release)
There was a problem hiding this comment.
What about rewording to say the 42 and 24 are for the start of a release "family", and support won't be dropped in a bugfix release, neither on LTS nor on normal feature release bugfix?
👍 This is in NEP 29, but I am happy to call it out here in terms of the LTS if people feel it needs more clarity.
There was a problem hiding this comment.
I disagree that it's very clear in NEP 29 for the casual reader. That is it's very specific and when I read very carefully I understand the above, and really anyone in this conversation is clearly interested enough to dig deeply on this. But I do not think the typical reader who comes upon this via google and just wants to know "how long will an astropy support this Python version" will take the time to click through to NEP 29, map it onto our Astropy-specific release candence, etc.
That said, if y'all think this wording is not clearer, maybe the better thing is to just give a few concrete examples and let the reader extrapolate? Something like:
| set at the time of the non-bugfix release. So for example the v4.0 release, an | |
| LTS, would support Python 3.6 (released 23 mo earlier), and would continue to | |
| support it until the end of the LTS window (24 mo after the 4.0 release). | |
| Whereas 4.2, planned for late 2020, would unambiguously only support 3.7 (as | |
| its full lifetime falls within the 3.7 window). |
Or @cadirS wording from https://github.com/astropy/astropy-APEs/pull/63/files#r506678119 makes sense to me too.
There was a problem hiding this comment.
See my extra sentence about the bugfix lifetimes.
There was a problem hiding this comment.
(I don't find these concrete examples any useful, try to swap it out with e.g 1.3 and it will all read obsolete for the casual reader who you say would not bother to read/try to understand the tables and figures in NEP29)
There was a problem hiding this comment.
There is a line now stating that the versions are supported for the lifetime of the bugfixes, so hopefully that resolves the core of your comment @eteq in a way people are happy with?
|
There has been also some starting momentum for setting maximum versions of dependencies, but it hasn't yet formalized in a formal document. If there will be any, I'm happy to put in a separate APE for it. |
|
@Cadair - maybe you can add #10900 under implementation? |
mhvk
left a comment
There was a problem hiding this comment.
Looks all very good to me. I would put it in as is.
astrofrog
left a comment
There was a problem hiding this comment.
Some very minor wording improvements (hopefully) below
Co-authored-by: Thomas Robitaille <[email protected]>
Co-authored-by: Brigitta Sipőcz <[email protected]>
|
I have adopted @bsipocz's suggestion regarding all the other versions, and edited the text to make it clear we are extending the numpy policy in NEP 29 by doing that. I think given we merged astropy/astropy#10900 there is unlikely to be strong disagreement to this proposal, we should probably move to getting it merged? |
mhvk
left a comment
There was a problem hiding this comment.
Re-approving; just one omitted word.
|
|
||
| * All minor versions of Python released 42 months prior to the project, and at minimum the two latest minor versions. | ||
| * All minor versions of numpy released in the 24 months prior to the project, and at minimum the last three minor versions. | ||
|
|
|
I cannot merge this, but maybe someone who can can do the honour? Thanks, @Cadair! |
| Decision rationale | ||
| ------------------ | ||
|
|
||
| <To be filled in by the coordinating committee when the APE is accepted or rejected> |
There was a problem hiding this comment.
I guess this line does need to be changed.
|
@astropy/coordinators Can this get wrapped up? |
Co-authored-by: Thomas Robitaille <[email protected]>
|
With the change above, the CoCo was happy to approve this APE, so I am merging now. |
The future is now.
Fixes #62
Rendered Version
The following table shows the next few releases of the astropy core package and the versions of CPython and Numpy it will support under this proposal: