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

drop support for 3.7? #2878

Closed
anthrotype opened this issue Nov 3, 2022 · 25 comments · Fixed by #2879
Closed

drop support for 3.7? #2878

anthrotype opened this issue Nov 3, 2022 · 25 comments · Fixed by #2879

Comments

@anthrotype
Copy link
Member

Python 3.7 is EOL in about 7 months in June 2023 (see https://endoflife.date/python)

Other popular projects like numpy or scipy are already requiring Python 3.8 in their latest versions.

I think we can do the same without waiting for June 2023. Any objections?

@anthrotype
Copy link
Member Author

e.g. we would get typing.Protocol for free without needing to add typing_extensions to deps #2163

@anthrotype
Copy link
Member Author

hm.. this may be a bit premature, considering that according to PyPI Stats website (https://pypistats.org/packages/fonttools) the majority of downloads come from python 3.7 (between 40-50% per day).

That's surprising to me 🤔

@anthrotype
Copy link
Member Author

I just made a Twitter poll here in case you want to cast your vote. I know, it's unlikely to be representative of our userbase but worth a shot.

@madig
Copy link
Contributor

madig commented Nov 3, 2022

In favor of dropping 3.7.

Quite some traffic could be CI systems testing with the minimally supported Python :)

@anthrotype
Copy link
Member Author

hm yeah, I hadn't thought of that. Also, PyPI stats say that 85% of downloads come from Linux, which I'd argue is used in continuous integration pipelines more often than Windows or Mac. Hard to say how many of those are bots or real people.

@khaledhosny
Copy link
Collaborator

(Real) Linux users are more likely to use their system package manager than pip.

@anthrotype
Copy link
Member Author

(Real) Linux users are more likely to use their system package manager than pip.

right, so another question would be, which/how many linux distros still come with python3.7? And how hard would be for this hypothetical real user relying on their system package manager to upgrade to python3.8+...

I guess impossible to answer, which is why software come with support cycles planned in advance.

NumPy Enhancement Proposal 29 recommends December 26, 2021 as the date from which projects in the Python scientific community (which fonttools is not really part of) may begin to require 3.8+.

@khaledhosny
Copy link
Collaborator

I bet that there are Linux distributions still supporting Python 2.x, so it doesn’t really matter. A distributions using Python 3.7 is most likely using some old FontTools package and they are never going to update it.

@anthrotype
Copy link
Member Author

anthrotype commented Nov 3, 2022

We dropped support for Python 3.6 exactly one year ago so it makes sense to do the same for 3.7 now.

I think we should just all agree to follow NEP 29 as our python deprecation policy, we could even write it explicitly in the README and just go on with the flow. (EDIT: I just did that in the PR cbac6ca)

@behdad
Copy link
Member

behdad commented Nov 3, 2022

I'm very surprised that we have 700,000 downloads per day!

@anthrotype
Copy link
Member Author

I'm very surprised that we have 700,000 downloads per day!

yes! Not bad, FontTools! (for context, NumPy has 4,970,682 a day)

@anthrotype
Copy link
Member Author

The people have spoken...

image

anthrotype added a commit to fonttools/ufoLib2 that referenced this issue Nov 6, 2022
anthrotype added a commit to fonttools/ufoLib2 that referenced this issue Nov 6, 2022
@anthrotype anthrotype reopened this Nov 10, 2022
@anthrotype
Copy link
Member Author

@typemytype (Robofont developer) replied to FontTools twitter poll with

https://twitter.com/typemytype/status/1590452125540261890?s=20&t=EIzwTbVxIrrprCICDylqwQ

I guess a poll on twitter is not best decision making.
There are tons of unsupported packages for the mix of intel/M1 with different version of python. Dont rush!

I'd like to get more info about this. Is there any software or environment or users that are stuck with Python 3.7 for some reasons but would like to continue using up-to-date fonttools?

Of course we can't promise we will support old python versions forever, but I'm open to find some compromise.

@anthrotype
Copy link
Member Author

unsupported packages for the mix of intel/M1 with different version of python

regarding this, I don't see how it is relevant for the issue at stake. We are discussing about dropping support for 4 year old python 3.7 which is reaching EOL soon anyway, and I believe it doesn't even support running on the M1 arm64 architecture.
For the latter I believe you need python 3.8 at least, if I am not mistaken, and we will continue to support that for a while (April 2023 according to https://numpy.org/neps/nep-0029-deprecation_policy.html#support-table).

@justvanrossum
Copy link
Collaborator

It turns out building universal apps for DrawBot and RF is non-trivial since many PyPI libraries provide separate x86 and M1 wheels, but not universal. I consider this a packaging issue, and I also don't see how it relates to dropping support for 3.7.

@anthrotype
Copy link
Member Author

ok, so do DB and RF use python3.7?

@justvanrossum
Copy link
Collaborator

Yes, but there is no reason why they should be stuck there.

@anthrotype
Copy link
Member Author

Are you saying that current latest versions of Robofont and DrawBot use python3.7? If that's the case, we could wait a few more weeks to give @typemytype the time to upgrade to more up to date python.

@justvanrossum
Copy link
Collaborator

Yes. But for DrawBot, we don't immediately need a new release with an up-to-date fonttools. I can't speak for RF.

@anthrotype
Copy link
Member Author

I guess Robofont is a major consumer of fonttools and would like to keep it up-to-date..
Alright, in that case it's probably better to revert #2879 for the time being and coordinate with Frederik as to when we can upgrade. I suppose we can wait a couple more months, say end of this year, before dropping Python 3.7.
Then for subsequent versions, I would like to stick to the schedule NEP29 schedule (https://numpy.org/neps/nep-0029-deprecation_policy.html), which means we plan to drop 3.8 support and go 3.9+ only around April 2023. I will set myself a reminder to remind everyone a few months in advance.

@anthrotype
Copy link
Member Author

After chatting with @typemytype, I convinced myself it's best for now we revert dropping 3.7 and give them a few more weeks to switch Robofont off from Python 3.7. Let's keep this open as reminder to revisit this early next year.

@behdad
Copy link
Member

behdad commented Jan 30, 2023

Let's keep this open as reminder to revisit this early next year.

Revisit time?

@typemytype
Copy link
Collaborator

RoboFont betas jumped already successfully to python3.9, with the same macOS support range. Dropping 3.7 is all fine for me!

thanks!

@madig
Copy link
Contributor

madig commented Jan 31, 2023

@typemytype out of curiosity, what is keeping RF from jumping to 3.10 or even 3.11?

@justvanrossum
Copy link
Collaborator

@typemytype out of curiosity, what is keeping RF from jumping to 3.10 or even 3.11?

Building "universal2" apps for macOS is hard, as not everything on PyPI is consistently available as "universal2". There are workarounds, but it is more painful than you'd expect.

@behdad behdad closed this as completed Apr 19, 2023
khaledhosny pushed a commit to fonttools/ufoLib2 that referenced this issue Dec 2, 2023
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 a pull request may close this issue.

6 participants