Unicode worked just fine by Python 2.6.  I had a whole system with a web crawler and HTML parsers which did everything in Unicode internally.  You had to use &quot;unicode()&quot; instead of &quot;str()&quot; in many places, but that wasn&#x27;t a serious problem.<p>By Python 2.7, there were types &quot;unicode&quot;, &quot;str&quot;, and &quot;bytes&quot;.  That made sense.  &quot;str&quot; and &quot;bytes&quot; were still the same thing, for backwards compatibility, but it was clear where things were going.  The next step seemed to be a hard break between &quot;str&quot; and &quot;bytes&quot;, where &quot;str&quot; would be limited to 0..127 ASCII values.  Binary I&#x2F;O would then return &quot;bytes&quot;, which could be decoded into &quot;unicode&quot; or &quot;str&quot; when required.  So there was a clear migration path forward.<p>Python 3 dumped in a whole bunch of incompatible changes that had nothing to do with Unicode, which is why there&#x27;s still more Python 2 running than Python 3.  It was Python&#x27;s Perl 6 moment.<p>From the article: <i>&quot;Obviously it will take decades to see if Python 3 code in the world outstrips Python 2 code in terms of lines of code.&quot;</i> Right. Seven years in, Python 2.x still has far more use than Python 3.  About a year ago, I converted a moderately large system from Python 2 to Python 3, and it took about a month of pain. Not because of the language changes, but because the third-party packages for Python 3 were so buggy.  I should not have been the one to discover that the Python connector for MySQL&#x2F;MariaDB could not do a &quot;LOAD DATA LOCAL&quot; of a large data set.  Clearly, no one had ever used that code in production.<p>One of the big problems with Python and its developers is that the core developers take the position that the quality of third party packages is someone else&#x27;s problem.  Python doesn&#x27;t even have a third party package repository - PyPI is a link farm of links to packages elsewhere. You can&#x27;t file a bug report or submit a patch through it.  Perl&#x27;s CPAN is a repository with quality control, bug reporting, and Q&#x2F;A.  Go has good libraries for most server-side tasks, mostly written at Google or used at Google, so you know they&#x27;ve been exercised on lots of data.<p>That &quot;build it and they will convert&quot; attitude and the growth of alternatives to Python is what killed Python 3.