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

discontinue Python 2 support #2303

Closed
orbeckst opened this issue Jul 18, 2019 · 10 comments
Closed

discontinue Python 2 support #2303

orbeckst opened this issue Jul 18, 2019 · 10 comments
Assignees
Labels
maintainability upstream issue in a dependency
Milestone

Comments

@orbeckst
Copy link
Member

orbeckst commented Jul 18, 2019

Python 2 reaches end of life on 1 January, 2020, according to PEP 373 and python/devguide#344 based on https://mail.python.org/pipermail/python-dev/2018-March/152348.html.

Many of our dependencies (notably numpy, see Plan for dropping Python 2.7 support) have ceased Python 2.7 support in new releases or will also drop Python 2.7 in 2020.

I know that science is rolling slowly and surely some scientific projects will continue with Python 2.7 beyond 2020. MDAnalysis has been supporting Python 2 and Python 3 now for a while. However, given how precious developer time is, I think we also need to decide that we will stop caring for 2.7 after the official Python 2.7 drop date.

We need to decide how to do this. I am opening this issue with the intent that it gets edited into an actionable list of items.

@orbeckst orbeckst added maintainability upstream issue in a dependency labels Jul 18, 2019
@orbeckst
Copy link
Member Author

@tylerjereddy pointed to numpy/numpy#14086 :
This is being proposed by maintainers from Matplotlib, scikit-learn, IPython, Jupyter, yt, SciPy, NumPy, and scikit-image. [...] We propose only supporting versions of Python initially released in the preceding 42 months of a major or minor release of any of our projects.

@orbeckst
Copy link
Member Author

Note that the proposed deprecation window of 42 months (2 minor Python releases) is much more aggressive than what we have been doing. We are used to projects that are carried out over years with the same versions of software.

(Nevertheless, dropping Python 2.7 has to happen...).

@orbeckst
Copy link
Member Author

Discussion thread on the mailing list at https://groups.google.com/d/msg/mdnalysis-devel/UIPEFxwh_7o/WRWA--DtDgAJ

This was referenced Aug 7, 2019
@orbeckst
Copy link
Member Author

orbeckst commented Sep 9, 2019

Current Plan

Deprecating Python 2.7 support

  • released 0.20.x (possibly do a 0.21.0 for features that didn't make it into 0.20.x in time)
  • release 1.0.0 by the end of 2019;
    • 1.0 will be the last version of MDAnalysis that fully supports Python 2.7
    • 1.0 will be similar to 0.20 (or 0.21) (i.e., we wouldn't include major annoying API breaks, there are lot of clean-up and deprecations that we would still want to do, see Milestone 1.0)
    • development on 1.x will cease; we will consider PRs that backport fixes but we will not officially support it after the release of 2.0
  • release 2.0.0 soon after 1.0. This release will officially drop Python 2.7 support. We will slowly clean up the code. 2.0 can also include larger changes/deprecations.

Presumably the main issue for users will be the decision to start projects with 1.0 or wait for 2.0. In order to make the decision easier, we would really need to release 2.0 within a few days of 1.0. That would mean to already have a 2.0 branch waiting that contains any real API breaks so we would need to have a good idea which if any breaks we want. It might just be the case that there's nothing major. Anything listed under Milestone 1.0 looks like stuff that should really go into 1.0.

TODO

  • Create a list of API breaks that we want to introduce in 2.0.0.
  • Start a 2.0 branch.
  • Write a blog post with the Python 2.7 sunsetting road map & publicize

(Create issues and link them here.)

@zemanj
Copy link
Member

zemanj commented Sep 10, 2019

release 1.0.0 by the end of 2019

we would really need to release 2.0 within a few days of 1.0

That sounds like a pretty ambitious schedule to me. IIRC reaching all the 1.0 milestones is still a lot of work.
Just speaking for myself: I'm in the final stages of my PhD which means that I currently don't have much time to spare for MDA development.

@orbeckst
Copy link
Member Author

orbeckst commented Oct 3, 2019

You are correct that this is ambitious. I would say we still need to get towards 1.0 speedily. The 1.0 -> 2.0 transition might simply take a little bit longer, as annoying as it is.

How fast we get started and converge with the 2.0 list is going to be a good indication of how fast 2.0 will actually come around. However, I don't have a fundamental problem with a 3.0 soonish after 2.0. This is open source with volunteers and while we try to be good to our users, sometimes we have to work within the confines of what we have.

@orbeckst
Copy link
Member Author

I'll draft the blog post MDAnalysis/MDAnalysis.github.io#111 ; at the moment along the following lines:

Deprecating Python 2.7 support

  • release 1.0.0 by the end of 2019;
    • 1.x will be the last version of MDAnalysis that fully supports Python 2.7
    • 1.0 will be similar to upcoming 0.21 (i.e., we wouldn't include major annoying API breaks, there are lot of clean-up and deprecations that we would still want to do, see Milestone 1.0)
    • development on 1.x will cease by the end of 2020 latest; we will consider PRs that backport fixes but we will not officially support it after the release of 2.0
  • release 2.0.0 during 2020. This release will officially drop Python 2.7 support. We will slowly clean up the code. 2.0 can also include larger changes/deprecations.

orbeckst added a commit to MDAnalysis/MDAnalysis.github.io that referenced this issue Nov 2, 2019
- describe dropping Py 2 support MDAnalysis/mdanalysis#2303
- close #111
orbeckst added a commit to MDAnalysis/MDAnalysis.github.io that referenced this issue Nov 2, 2019
- describe dropping Py 2 support MDAnalysis/mdanalysis#2303
- close #111
@orbeckst
Copy link
Member Author

orbeckst commented Nov 2, 2019

I drafted the blog post. I changed the tentative 1.0.0 release date to "1st quarter 2020 (or maybe end of 2019)". Please comment on the draft at MDAnalysis/MDAnalysis.github.io#112. Thanks.

orbeckst added a commit to MDAnalysis/MDAnalysis.github.io that referenced this issue Nov 8, 2019
- describe dropping Py 2 support MDAnalysis/mdanalysis#2303
- close #111
@richardjgowers richardjgowers mentioned this issue Jan 13, 2020
6 tasks
@orbeckst orbeckst added this to the 2.0 milestone Mar 5, 2020
@IAlibay IAlibay self-assigned this Apr 6, 2021
@IAlibay
Copy link
Member

IAlibay commented Apr 6, 2021

@orbeckst I think we're done with this right?

@orbeckst
Copy link
Member Author

orbeckst commented Apr 6, 2021

yes

@orbeckst orbeckst closed this as completed Apr 6, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
maintainability upstream issue in a dependency
Projects
None yet
Development

No branches or pull requests

3 participants