From my perspective (suffering through the python 3 transition and living with ongoing changes in 3.x), compatibility was - and is - poorly handled. Many things can and should be done to ease the maintenance burden - things like intelligent defaults, compatibility features and libraries, and not doing stupid things like ripping out the print statement (which could have coexisted with a print() function) with no recourse.

Unfortunately, python's developers seem to have demonstrated tremendous contempt for the users of the language, and for existing code bases.

Other languages (though not all.... <cough, swift>) have actual language specifications and standards (that even keep working as runtime systems evolve), and are not so keen on throwing users and their code off a cliff.

Platforms should absorb pain so that their users don't have to, and avoid introducing breaking changes that multiply pain across an entire user base.

Apple (also known for arrogance combined with contempt for their developers) also gets this wrong, and routinely breaks iOS and swift apps every year.

> things like intelligent defaults

Can you give a concrete example of a problem you encountered while porting 2->3 code caused by a poorly chosen default in 3?

> compatibility features and libraries

You mean like `lib2to3`? Or all the backports 2.7 got, e.g. what's listed at https://wiki.python.org/moin/StandardLibraryBackports ? Or the `__future__` system? Or third-party support like `six` (still immensely popular, though presumably only in CI)?

> the print statement (which could have coexisted with a print() function)

No, it absolutely could not have. Not with the same name, and making the name refer to the function was the point. The print statement syntax was inelegant, quirky and confusing. For example, parentheses can affect the meaning in unusual ways:

  $ py2.7 -c 'print (1,); print 2'
  (1,)
  2
  $ py2.7 -c 'print 1,; print 2'
  1 2
Besides which, outputting text has no more logical reason to use a dedicated statement form than inputting text.

> python's developers seem to have demonstrated tremendous contempt for the users

I don't understand how you have come to infer such an attitude. Any suspicion that they are introducing breaking changes on a whim will be immediately quashed by reading the discussion behind any of those breaking changes. (Not to mention what happens with the rejected proposals.)

> and avoid introducing breaking changes that multiply pain across an entire user base.

What breaking change was introduced in Python 3.x during your history of using it that caused a nontrivial problem for you? How many years do you believe you were given to account for it?