Skip to content
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

APE 21: APE on ending long term support releases + Updates to APE 2 to reflect new release cycle without LTS #82

Merged
merged 23 commits into from
May 31, 2023
Merged
Changes from 1 commit
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
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
109 changes: 109 additions & 0 deletions APE_LTS.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
Ending Long Term Support Releases
---------------------------------

author: Thomas Robitaille
astrofrog marked this conversation as resolved.
Show resolved Hide resolved

date-created: 2023 February 16 <replace with the date you submit the APE>
astrofrog marked this conversation as resolved.
Show resolved Hide resolved

date-last-revised: 2023 February 16 <keep this up to date anytime something changes>
astrofrog marked this conversation as resolved.
Show resolved Hide resolved

date-accepted: <replace with accepted date>

type: Process

status: Discussion


Abstract
--------

This APE proposes to no longer designate any releases of the core package as being
'long term support' (LTS) and provide guidance on how to handle API changes and deprecations.


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

`APE 2: Astropy Release Cycle and Version Numbering <https://doi.org/10.5281/zenodo.1043887>`_ describes the release cycle
for the core astropy package, which consists of major releases every 6 months that
add new features (e.g., v5.2), and releases in between this that are limited to fixing bugs
or updating documentation (e.g., v5.2.1). Every two years, major releases are designated
as being 'long term support' (e.g., v5.0) and we have committed to releasing bugfix releases
astrofrog marked this conversation as resolved.
Show resolved Hide resolved
for this version (e.g., v5.0.3) for up to two years.

At the start of the project, having long term support releases was critical for acceptance by
astrofrog marked this conversation as resolved.
Show resolved Hide resolved
large organizations/projects for which stability is paramount, as the core package went through
significant API changes from version to version due to the youth of the project and long term
support releases were a way to shield against these changes, or at least reduce disruption to
astrofrog marked this conversation as resolved.
Show resolved Hide resolved
be every two years.

LTS releases are however not free:

* While we use infrastructure to automate backporting fixes to release branches,
in practice the LTS branch diverges more and more from the main development
branch and automated backports are more likely to fail as time goes on,
requiring human effort to manually do the backports, which can sometimes be
non-trivial.

astrofrog marked this conversation as resolved.
Show resolved Hide resolved
* Even once fixes are backported to the LTS branch, carrying out releases is not
fully automated and requires manual steps, so having to do
bugfix releases for both the latest release branch and LTS branch puts an extra
burden on the core package release team.

In addition, it is not clear that LTS releases are needed anymore - now that the
core package is over ten years old, it has reached a much higher level of
stability. No other main package in the scientific Python ecosystem has long
term support releases, and there is no longer a strong argument for having this
astrofrog marked this conversation as resolved.
Show resolved Hide resolved
in astropy either.

This APE proposes the following:

* No longer designate any releases as LTS
astrofrog marked this conversation as resolved.
Show resolved Hide resolved
* Keep the 6-month release cycle and bump releases to x.0 every two years
astrofrog marked this conversation as resolved.
Show resolved Hide resolved
* Refer to the x.0 releases every two years (e.g. v6.0) as 'major'
astrofrog marked this conversation as resolved.
Show resolved Hide resolved
releases, other releases every 6 months (e.g. v6.1) as 'minor', and bug fixing
astrofrog marked this conversation as resolved.
Show resolved Hide resolved
releases (e.g. v6.1.2) as 'bugfix releases'
astrofrog marked this conversation as resolved.
Show resolved Hide resolved
* Minimize as much as possible any changes that break API or change results in
Copy link
Member

Choose a reason for hiding this comment

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

This requires us to re-educate all the maintainers with write access to the repo. We wouldn't want inconsistency in how this is decided based on who happened to merge the PRs. Should this APE also lay out how these new rules should be followed?

Copy link
Member Author

Choose a reason for hiding this comment

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

Agree - see my latest comment in the main discussion. I think we'll need to add a section about this.

minor releases, but being pragmatic and accepting such changes if they would
not affect many users
astrofrog marked this conversation as resolved.
Show resolved Hide resolved
* Add deprecation warnings or future warnings in minor and major releases but only
go through with the breaking changes in major releases (either the next major
release following when a warning was added, or subsequent ones if the changes
are deemed to be high impact enough to wait longer).

With this in place, we would effectively be striving to maximize stability over
two year periods but users would see deprecation warnings to prepare them for
changes. This is in contrast to the current LTS system where users might not see
a deprecation warning until the next LTS release as deprecations are not typically
backported.

astrofrog marked this conversation as resolved.
Show resolved Hide resolved

Branches and pull requests
--------------------------

N/A

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

This APE proposes to continue supporting the 5.0.x LTS series but to not
designate 6.0 as LTS.
astrofrog marked this conversation as resolved.
Show resolved Hide resolved

astrofrog marked this conversation as resolved.
Show resolved Hide resolved

Backward compatibility
----------------------

N/A

astrofrog marked this conversation as resolved.
Show resolved Hide resolved

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

If there were any alternative solutions to solving the same problem, they should
Copy link
Member

Choose a reason for hiding this comment

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

Is this just a placeholder text?

Copy link
Member Author

Choose a reason for hiding this comment

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

Yes

be discussed here, along with a justification for the chosen approach.

astrofrog marked this conversation as resolved.
Show resolved Hide resolved

Decision rationale
------------------

<To be filled in by the coordinating committee when the APE is accepted or rejected>
Copy link
Member

Choose a reason for hiding this comment

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

Being the coauthor and current CoCo member, I would recuse myself from CoCo discussions regarding this APE.