I've gone through migrations that were much more tedious and painful. Not so much with languages but with dependencies/frameworks: the like of Django, Django-rest-framework, Unity 3D, and pretty much anything javascript (apart from javascript itself).
There was a point where there was some FUD around the migration, painting it as a sequel to PERL 6. However, the community managed to turn it around. To their credit, orchestrating large breaking changes to a popular language with a diverse set of use cases is fundamentally a very challenging task.
The main holdouts for Python 2 are large organizations which have a lot of existing/working legacy code. The majority of new Python projects seem to be using Python 3.
Now that the work is nearly done, we can all enjoy a better Python.
I very recently moved to 3.6, from 3.5. There's a saying that a luxury once sampled becomes a necessity, which sums up my opinion on the new f-string syntax.
Yes, Python 3 was initially a risky endeavor, but in the past couple of years it has cemented its position as the true and only version of Python.
Anyways, the fiasco is over and Python 3 has emerged as the victor, so there really is no use discussing the issue anymore imo.
What are you referring to? I haven't heard or read any core developers say anything close to 'introducing breaking changes was a mistake in hindsight'.
On top of it, Python2 works so well and python3 introduces so few advantages that doing an expensive port is just not feasable for many codebases.
And I guess that python is used mostly by smaller companys with constantly lacking manpower and money plays also an important role.
- 2008-2012 Python 3 as a language becoming usable
- 2012-2016 Libraries gaining Python 2 compatibility (and dropping 2.4 and below)
- 2016-2020 Applications porting now that most libraries are compatible.