Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions APE10.rst
Original file line number Diff line number Diff line change
Expand Up @@ -270,3 +270,6 @@ After v3.0, a decision was made to adjust the release calendar by +3 months.
The table above has been updated appropriately. v3.3 was also removed on this
basis, as the timing for the end of Python 2.x support is better aligned with an
end-of-2019 4.0 release.

This APE is superceded by `APE18 <APE18.rst>`_, which contains the version
support plan for versions from 4.0 on.
70 changes: 70 additions & 0 deletions APE18.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
Adopt NEP 29 for CPython and Numpy Version Support
--------------------------------------------------

author: Stuart Mumford and Thomas Robitaille

date-created: 2020 October 16

date-last-revised: 2021 February 25

type: Standard Track

status: Accepted


Abstract
--------

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.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

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?)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

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?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

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 🤷.

This APE proposes that Astropy adopt this policy following other projects in the scientific ecosystem.


Detailed description
--------------------

This APE fully adopts `NEP 29`_ for both CPython and Numpy versions for the core astropy package, and it supersedes APE 10 wherever there is a conflict between that APE and this APE or `NEP 29`_.

This APE will not replicate the content of `NEP 29`_, and the full text of `NEP 29`_ is adopted via this APE.
In addition to the content of `NEP 29`_, the APE also extends the numpy policy to all of the core package dependencies.
This leads to the following support policy for dependencies of the core package.

Astropy core will support:

* All minor versions of Python released 42 months prior to a non-bugfix, and at minimum the two latest minor versions.
* All minor versions of numpy released in the 24 months prior to a non-bugfix, and at minimum the last three minor versions.
* Versions of other runtime dependencies released 24 months prior to a non-bugfix release.

@eteq eteq Oct 16, 2020 •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Maybe worth saying since these are currently supported for two years (in case we change that some day)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

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?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

(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)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

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.

@eteq eteq Oct 26, 2020 •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

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:

Suggested change
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.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

See my extra sentence about the bugfix lifetimes.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

(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)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

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?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reads well to me.

These versions of the dependencies are to be supported for bugfix lifetime of the given astropy version.

This version support policy allows, at the discretion of the maintainers, to adopt the supported version of the next release in situations where it is judged to be valuable.
For example, this could be done in the case of an important change in numpy or a change over date very close to the release.


Implementation
--------------

Some initial work has been done in `#10900 <https://github.com/astropy/astropy/pull/10900>`__ on bumping the minimum Python version in the core astropy package to Python 3.7+.

Comment thread
Cadair marked this conversation as resolved.
Resolved
The release calendar for the astropy core package will be updated over time to include the minimum Python and Numpy version for upcoming releases.
Backward compatibility
----------------------

The version schedule here is more rapid than that proposed in APE 10, however, this allows the core library to adopt modern features, and reduces burden on maintainers.
In addition to this, aligning ourselves with other projects in the ecosystem is consistent and prevents potential minimum version conflicts.
See the text of `NEP 29`_ for further justification.

Comment thread
Cadair marked this conversation as resolved.
Resolved
This APE fully replaces APE10 where they are in conflict.
Comment thread
Cadair marked this conversation as resolved.
Resolved

Alternatives
------------

See `NEP 29`_.

Comment thread
Cadair marked this conversation as resolved.
Resolved
Decision rationale
------------------

After discussion and some revision in the PR, there was broad support and no
objections to adopting this plan.

.. _NEP 29: https://numpy.org/neps/nep-0029-deprecation_policy.html