The basic incompatibility between Python 2 and 3 comes from Unicode strings. The design of Python 3 might be adequate ten years ago when there are many character encodings in the world. However, they began to converge to UTF-8, you know. It would be rational now to use byte strings transparently overall just like in Golang. What people wanted would be a modernized Python that is compatible with Python 2 and it would have been feasible.