I don't think anyone expected a lengthy transition at the onset of the version 3 release. It's taken a long time and the 2.X releases that have come along since have helped make the transition easier by showing developers some of the benefits from version 3 releases.
I was on the "Python 3000" mailing list while it was being planned, and the prevailing attitude seemed to be "it'll probably take 5 years before the community moves to Python 3". (That's paraphrased and not a direct quote, though I saw people say that sort of thing almost word for word a few times.)
This was optimistic, but at least we see that the community is indeed gradually moving to Python 3, even if it's taking a few more years.
Technically the goal was a majority of new projects started using Python 3 in 5 years. Regardless, everyone knew it would take several years to reach a point like this.
I switched from Perl to Python at version 3.4, and while it might be popular for people already invested in Python 2 to downplay the syntactic improvements, they were a big deal in convincing me to switch to Python as my go-to infrastructure language.
This is true, but currently, most of developers of Python acknowledge some mistakes in the Python 3 transition. Specifically the fact that such an abrupt compatibility break was underestimated. And that's why Python 4 won't break compatibility with Python 3.
In any case, I'm very happy to see the Python 3 transition moving forward. And let's hope this does not happen again.
Python's back-porting of 3.x features caused Python 3 adoption to take even longer (no pain, no gain). But, I think this was a necessary evil, because if PSF had forced everyone with a "upgrade or perish" attitude, I think many would have abandoned Python.
Pretty sure there would be a fork. Many large tech companies (Google, Dropbox for two) are deeply invested in Python 2, and some of us already have some modifications to CPython. Python 2 is Too Big to Fail.
I disagree. The main thing holding back Python 3 use has been library support. Library developers do no want to maintain two separate codebases, so it is very important that a certain subset of the language works under both 2 and 3. The backported features in Python 2 and some backwards compatibility added to Python 3 in recent years have really helped with that.