I'm not stuck on the number "10 years", but I am just throwing it out there as a draft proposal.
So even 5-8 year moratorium would be nice to strive for.
Timespans of that length are still too long to freeze the language. Look at it this way: node.js 0.10.0 was released 5 years ago and now it's a thing. If we had not moved forward and added async/await in Python 3.5 -- which was only 3 years ago -- but instead froze ourselves for 5 years would we be considered relevant in the networking world like we are, or viewed as somewhat as a dinosaur?
I realize the embedded world moves at a different pace (as well as other groups of developers), but that doesn't mean we have to move at the speed of our slowest adopters to punish those willing and wanting newer features.
Outside of the embedded space, I will give another example where folks in industry are behind.
I don't want to pick on a particular vendor, but from April 24-26, I attended training sessions at RedisConf18 in San Francisco.
During the training sessions, multiple sample Python code examples were given for accessing the Redis database.
The instructor thought that the code examples worked in Python 3, but in fact, they only worked in Python 2 mostly due to
bytes/unicode issues. During the class, I fixed the examples for Python 3 and submitted the patches to the instructor,
who gratefully accepted my patches. However, there are going to be many, many users of Redis out there who
maybe will not upgrade their Python code for newer versions of Python for many years.
Why is Redis specifically going to be behind specifically? Are they embedding the interpreter?
Besides Redis users, I am seeing all sorts of communities and companies which are behind in terms of having working
code and documentation that works on latest Python 3. It is going to take YEARS for all these communities and companies
to catch up (if ever).
And that's fine. If they want to continue to maintain Python 2 and stay on it, or simply stick with our final release and never worry about potential security issues, that's their prerogative. But once again, we shouldn't have to hold up the entire language for the slowest adopters.
I understand that Python as a language must evolve over time to succeed and thrive. But I would request that
at least for the next 5-10 years, a moratorium on language changes be considered, to allow the world to catch
up in terms of code, documentation, and mind/understanding.
5 years is 3-4 releases, 10 years is 6-7. That's basically saying we should still be like 3.3/3.2 or 2.7, both of which I don't think the majority of people want (I know I am a happier programmer in 3.6 than I am in any of those versions).
Looking back at how the Python 2.7 EOL was extended by 5 years, I would remind the core Python developers
that it is very easy to underestimate how slow the world is to change their code, documentation, training,
and understanding to adapt to new Python versions. Going slow or imposing a moratorium wouldn't be such a bad thing.
I think a better way to phrase this is, "should we not change the language because there are still people on Python 3.3? We've already stated many times that there won't be a major language upheaval like 2/3 ever again, so we are only talking about changes on the order of e.g. 3.5/3.6. And for me, I like what we have added. I am certainly not about to ask anyone to give up f-strings and deal with those pitchforks. ;)
And if people don't upgrade then people don't upgrade. We have all the old versions of libraries on PyPI, so people can continue to use the libraries that they were depending on when they choose to not move forward with Python releases and continue to function.