python / pythondotorg

Source code for python.org
https://www.python.org
Apache License 2.0
1.51k stars 597 forks source link

(WIP) Python 2 sunsetting info/summary page #1500

Closed brainwane closed 4 years ago

brainwane commented 5 years ago

Per my current engagement with the PSF, I'm writing a short FAQ about the Python 2 end of life. This will be a "one-page" (so, <750 words) FAQ-style document that we'll be prominently linking to on the python.org front page (#1498), and which will point to more detailed resources elsewhere. Our press release will point to this summary page.

I'm going to use this issue as a bit of a drafting space where I fill in an introduction and answers to the questions:


We are volunteers who make and take care of the Python programming language. We have decided that January 1, 2020, will be the day that we sunset Python 2. That means that we will not improve it anymore after that day, even if someone finds a security problem in it. You should upgrade to Python 3 as soon as you can.

Why are you doing this?

We need to sunset Python 2 so we can help Python users.

We released Python 2.0 in 2000. We realized a few years later that we needed to make big changes to improve Python. So in 2006, we started Python 3.0. Many people did not upgrade, and we did not want to hurt them. So, for many years, we have kept improving and publishing both Python 2 and Python 3.

But this makes it hard to improve Python. There are improvements Python 2 can't handle. And we have less time to work on making Python 3 better and faster.

And if many people keep using Python 2, then that makes it hard for the volunteers who use Python to make free software. https://python3statement.org/#sections50-why They can't use the good new things in Python 3 to improve the tools they make.

We did not want to hurt the people using Python 2. So, in 2008, we announced that we would sunset Python 2 in 2015, and asked people to upgrade before then. Some did, but many did not. So, in 2014, we extended that sunset till 2020.

How long is it till the sunset date?

https://pythonclock.org/ will tell you.

What will happen if I do not upgrade by January 1st, 2020?

If people find catastrophic security problems in Python 2, or in software written in Python 2, then volunteers will not help you. If you need help with Python 2 software, then volunteers will not help you. You will lose chances to use good tools because they will only run on Python 3 http://py3readiness.org/ , and you will slow down people who depend on you and work with you.

Some of these problems will start on January 1. Other problems will grow over time.

I wrote code in Python 2. How should I port it to Python 3?

Please read the official "Porting Python 2 Code to Python 3" guide https://docs.python.org/3/howto/pyporting.html . Please also read the Python 3 Statement Practicalities https://python3statement.org/practicalities/ for advice on sunsetting your Python 2 code.

I'm not sure whether I depend on any software written in Python 2. What should I do?

If you buy software or software support from vendors, ask them. If you pay developers or system administrators, ask them. If you don't have vendors or technical staff, then use https://pypi.org/project/caniusepython3/ to find out whether you depend on any software written in Python 2.

To find out more about whether specific tools can work with Python 3, look at https://pyreadiness.org/2.7/ , https://python3statement.org/ , and http://py3readiness.org/ .

I depend on some software written in Python 2. What should I do?

If you buy software or software support from vendors, ask them. If you pay developers or system administrators, ask them. If you don't have vendors or technical staff, then use https://pypi.org/project/caniusepython3/ to find out which tools you need to upgrade to Python 3.

Is there anyone who can help me?

Yes. If you can pay for extended support, talk to ActiveState https://mail.python.org/archives/list/python-announce-list@python.org/message/FC4QUAACIZPHYJMNZCRYJAGJIFYOM4CA/ . If you can pay to hire someone to help you, post on the job board https://www.python.org/jobs/ or hire a consultant https://wiki.python.org/moin/PythonConsulting . If you need free help from volunteers, look at https://www.python.org/about/help/ .

I didn't hear anything about this till just now. Where did you announce it?

We talked about it at software conferences, on the Python announcement mailing list, on official Python blogs, in textbooks and technical articles, on social media, and to companies that sell Python support.

How can I make sure announcements like this don't surprise me again?

Buy Python support from a vendor, or subscribe to the Python announcement mailing list https://mail.python.org/mailman3/lists/python-announce-list.python.org/ .

[insert list of links to more details here]

brainwane commented 5 years ago

For reference, this is meant to be concise, and to be very easy to read (readers include educators, engineers, executives, hobbyists, and so on). Its aim is to explain the situation, and to give someone talking points to explain to their management why transitioning is important and shouldn't be ignored. If time allows, I want to include some “how” examples of successful transitions completed by organizations.

gvanrossum commented 5 years ago

Looks good. There's some repetition (the two answers "If you buy software ..." are nearly the same) and occasionally it sounds a little too much like Randall Monroe's "Thing Explainer", but I know I'm not the target audience and I think it's a good idea to make this accessible to a very wide audience, including people with limited English skills. (This will also make it easier to translate!)

brettcannon commented 5 years ago

Looks good! Only key change I would make is not to use the phrase "free software" as that has specific connotations compared to open source software.

jackiekazil commented 5 years ago

@brainwane, this is great. I wanted to make a few suggested edits for clean up. These are less focused on changing the content and more about adding clarity. You don't have to accept them as they are suggestions. A doc seemed like an easier way to communicate those. Here it is: https://docs.google.com/document/d/1xB68Acf7bnsdRC3psqZUAkO7YGXaF-tSENhztjonvRU/edit?usp=sharing

I would also interested in giving a second draft a read if the timeline on this permits after you make any chances from the feedback you are receiving.

mwichmann commented 5 years ago

If you create this as a pull request, the inline reviewing tools will be available - you don't have to actually merge the pull request, it just makes it a lot more convenient to review.

brainwane commented 5 years ago

I've now posted the text (with the "free" in "free software" removed per Brett's note above) at https://www.python.org/doc/sunset-python-2/ and will make further issues if I need to ask for reviews of further iterations.

@jackiekazil I did a diff and could not find any differences between what you'd put in the Google Doc and what I had in the WIP above. Maybe that's because I only have the ability to view the document, not suggest or accept changes?

MostAwesomeDude commented 5 years ago

I've already noted this through other official PSF channels, but it's worth pointing out that the most recent PyPy statement at https://morepypy.blogspot.com/2016/08/pypy-gets-funding-from-mozilla-for.html is not in harmony with this page. In particular:

PyPy's own position is that PyPy will support Python 2.7 forever---the RPython language in which PyPy is written is a subset of 2.7, and we have no plan to upgrade that.

Will the page be updated with additional information? As a downstream distro contributor, I am pushing to have PyPy replace CPython as the Python 2 interpreter, rather than removing Python 2 trees entirely.

gvanrossum commented 5 years ago

I'm not happy with PyPy's position, but I don't care that much about it either -- I don't think it makes much of a difference.

I very much doubt that PyPy will be enough for organizations that are currently struggling with the decision of what to do about their large legacy Python 2.7 code base. For example, at Dropbox, if we wanted to switch our production code to PyPy, we would have to go through the same amount of testing as we are planning to go through for the Python 3 transition, and we would have to deal with compatibility issues with a large collection of 3rd party code that wasn't written with PyPy in mind, including quite a few 3rd party extension modules.

So I'm not sure what action you want the PSF to take. What additional info would you like to see? An endorsement of PyPy as an alternative to porting to Python 3 will not be coming from the PSF -- we wish PyPy the best of luck with their own Python 3 transition, but we don't think they are a good alternative to dropping Python 2 support.

nedbat commented 5 years ago

Could you add some more clarification to this position? It seems odd to me that the page recommends contractors listed on a wiki page (therefore without vetting), but isn't willing to acknowledge the existence of long-standing alternative implementations of the language.

gvanrossum commented 5 years ago

I would have no problem with PyPy listing itself on that wiki page.

But I really don't want to encourage people to start thinking of PyPy 2.7 as a strategy for dealing with the Python 2.7 sunsetting -- this would increase support requests for 3rd party packages that are eager to start adopting Python 3 features such as asyncio or f-strings or non-comment type annotations.

brainwane commented 5 years ago

Hi. This is a work-in-progress page. I appreciate the feedback.

@nedbat I hear you. The flip side, as I see it, is: the official PSF position should be that Python users should, in general, upgrade to Python 3. And this page is aimed at novices (as you can probably tell from the phrasing) who don't have the domain knowledge to deal with "if you're in this situation, do foo; if you're in that situation, do bar." That's why the "I'm not sure whether I depend on any software written in Python 2. What should I do?", "I depend on some software written in Python 2. What should I do?", and "Is there anyone who can help me?" sections point people to paid support options where people can get individual guidance based on their situations.

Right now, the page says: "If you need free help from volunteers, look at this help page." If there are groups of volunteers who are specifically volunteering to help people (for free) deal with their Python 2.x migration questions and problems, we could add a section to https://www.python.org/about/help/ pointing to those groups. I'd be happy with one of those groups being PyPy!

nedbat commented 5 years ago

If people find catastrophic security problems in Python 2, or in software written in Python 2, then volunteers will not help you. If you need help with Python 2 software, then volunteers will not help you.

Surely you don't mean to speak for all volunteers everywhere? Can we make this language clearer? I'm an op in #python on Freenode. We are volunteers, and we won't ban questions about Python 2.

nedbat commented 5 years ago

The more I read that paragraph, the more it just seems designed to frighten people. I understand the desire to get people to move to Python 3, but we can do it without resorting to this.

How about:

What will happen if I do not upgrade by January 1st, 2020?

If people find catastrophic security problems in Python 2, or in software written in Python 2, or if you need help with Python 2 software, there will be fewer and fewer volunteers to help you. You will lose chances to use good tools because more and more of them will only run on Python 3, and you will slow down people who depend on you and work with you.

These problems will continue to grow over time.

brainwane commented 5 years ago

Hey @nedbat -- I totally hear you. I want to balance the simplicity of the language (including trying to keep sentences short) with accuracy, and I am grateful for the suggestions for corrections. I am working on changing the language around volunteers to say something like "many volunteers will not help you".

This page is not yet linked to from other parts of python.org -- I want to improve it further (including a timeline graphic and pointers to more resources) before I link to it from the navbar and the front page, then publicize it with press coverage and other outreach. One of those improvements is probably going to be a "more details" link for certain sections, where we can explain nuances further.

nedbat commented 5 years ago

@brainwane thanks. You mention not linking as if it means people aren't reading this page. It's been tweeted from a high-traffic account and retweeted 1.2K times: https://twitter.com/gvanrossum/status/1170949978036084736 . I'm only here because it's come up a few times today on IRC.

mwichmann commented 5 years ago

I think you probably got this, but @nedbat was getting at that we need not just simplicity, but the right tone. That's a struggle when writing either for a very wide audience, or for an audience that you're not yourself part of (I'm not criticizing, I try to write stuff and have this struggle all the time). IMHO this doc is a little off on the "tone" in some places because it's trying to be too simple. And please do mark the O in that, it's nothing but one Opinion :)

brainwane commented 5 years ago

:-) Thanks everyone for your thoughts! And I'm sorry that I wasn't clearer in my communications to the Council earlier - I should have specifically asked them to hold off on tweeting, etc. till I had iterated a little more on the text....

I need to head off for a few hours but will be making more changes in the next few days to follow up on these comments and on the conversation I just had with Ned.

gvanrossum commented 5 years ago

I'm sorry, I did not know this wasn't supposed to be widely distributed.

brainwane commented 5 years ago

@gvanrossum Entirely my fault.

eamanu commented 5 years ago

Hello! LGTM :-D. IMO is written ok, we don't know who read the page, so, I think that use a correct "language".

I have a question or an opinion. The page mention "we are volunteers... " But never mention How can I help? How can I become a volunteer too? when I read the article, my first impression was: "Ok I understand, but I want to help, but how?" I think you can mention some about how to help on Python2 sunsetting. This is just an opinion :-)

brainwane commented 5 years ago

Per https://github.com/python/peps/commit/12468c5a8b7c62cab64b989203c0dc09d37895bf and https://mail.python.org/archives/list/python-dev@python.org/thread/APWHFYQDKNVYQAK3HZMBGQIZHAVRHCV2/?sort=date -- @benjaminp I am sorry that I didn't check in with you, and assumed that January 1, 2020 would be the the date of the final 2.7 point release. I'm going to continue this discussion on python-dev so I can make sure I understand the policy decision properly, and then (if necessary) update the FAQ.

brainwane commented 5 years ago

Hi @eamanu! Thanks for the suggestion. I would like to keep this Python 2 sunsetting page very short. But I have added a line at the end, so that people who have more questions can look at @ncoghlan's Python 3 Q&A, and I think "how can I volunteer to help?" would fit well there. Could you please file an issue on his tracker asking him to add a "how can I help as a volunteer?" question to that page? Thanks!

aeros commented 5 years ago

Thanks for working on this @brainwane.

I have a couple of phrasing improvement suggestions:

Current:

But this makes it hard to improve Python. There are improvements Python 2 can't handle. And we have less time to work on making Python 3 better and faster.

Suggestion:

However, continuing to support Python 2 increases the difficulty in improving the language. There are improvements Python 2 can't handle, and it subtracts from time that could be otherwise spent on improving Python 3.

Current:

And if many people keep using Python 2, then that makes it hard for the volunteers who use Python to make software. They can't use the good new things in Python 3 to improve the tools they make.

Instead of "volunteers", could this instead be changed to "open source developers"? While the majority of developers in open source projects do so voluntarily, there are a substantial number of developers that are allowed to spend part of their company time contributing back to specific projects (typically ones the company directly utilizes). Also I would suggest changing "people" to "users".

Suggestion:

Additionally, if many users continue using Python 2, it is more difficult for open source developers that use Python to make software. They are unable to utilize the new features in Python 3 to improve their tools, due to backwards compatibility concerns.

Also, would it be possible to place this document directly on the python/pythondotorg repository? This would make it significantly easier to suggest changes. As the volume grows, it may become increasingly difficult to keep track of all of the suggestions if they're kept in a single issue's comments.

iMichka commented 4 years ago

Hi. I am one of the homebrew maintainers (https://brew.sh). We were planning to remove Pyhton 2 tomorrow (or in the next days), but were left wondering what is going on with Python 2.7.18, which is being released in April? What is the official stance on this, as there is now a lot of confusion about the final EOL date? Was https://pythonclock.org/ wrong all this time?

Should we remove Python 2 anyway, or wait for April, and make a final 2.7.18 release (== build binaries), and then drop it instantly after that?

Yhg1s commented 4 years ago

There will be a release in April, yes. https://twitter.com/brettsky/status/1208053172360531969?s=20 tries to clarify it a bit. Also, when you should drop your support of Python 2.7 is a separate question from when others are. If your users are okay with you dropping support now, now is fine?

tritium21 commented 4 years ago

Hi. I am one of the homebrew maintainers (https://brew.sh). We were planning to remove Pyhton 2 tomorrow (or in the next days), but were left wondering what is going on with Python 2.7.18, which is being released in April? What is the official stance on this, as there is now a lot of confusion about the final EOL date? Was https://pythonclock.org/ wrong all this time?

Should we remove Python 2 anyway, or wait for April, and make a final 2.7.18 release (== build binaries), and then drop it instantly after that?

were you really planning on making python 2 unavailable on the EOL date? Don't you think that's like... at least 6 months fast? The last 2 releases are not being made with the expectation that no one will use them.

iMichka commented 4 years ago

If your users are okay with you dropping support now, now is fine?

They will never be ready. We could do it now, in 6 months or in 3 years, the result will be the same: a lot of tears and whining.

I already opened the deletion pull request, and was ready to click on merge in a few hours. I have heard that there will be fireworks everywhere on earth in the next 24 hours to celebrate that.

The last 2 releases are not being made with the expectation that no one will use them.

In Homebrew, we expect EOL stuff to be removed at one point or another. The packages we provide are mostly bleeding-edge. But there are exceptions to this.

We will have some more internal discussions on our side to take a final decision. Thanks for the insights!

brainwane commented 4 years ago

Thanks to everyone who gave suggestions to help improve the sunsetting FAQ. I updated it a few times in the last few months, most recently after the final 2.7.18 release in mid-April. I'm now closing this issue.

To discuss how and when your project should entirely drop Python 2.7 support, I suggest you open a thread in the Users category in the Python Discourse forum.

If people open new issues in this repository to suggest improvements to the sunsetting FAQ, I may be able to help respond to those suggestions in my volunteer time. (My engagement with the PSF on the sunsetting work is at its end.)