The End of Life date of Python 2.7 has been extended by 5 years to 2020 to accommodate users who can't yet migrate to the Python 3. Although some Pythonistas are relieved by this news, others are infuriated because it could slow the adoption of Python 3.
In the very first slide of his keynote at PyCon 2014, Guido van Rossum, Python's creator and principal author, delivered the very clear message that there will be no Python 2.8 and that where possible Python users and developers should move over to Python 3.4.
But the Python 2 branch is not going to snapped off just yet. Three more maintenance releases are planned for it: Python 2.7.7 in May 2014; 2.7.8 in November 2014 and 2.7.9 in May 2015 plus bug fix releases beyond this if necessary until 2020.
Python 3.0 was released in December 2008 as a backwards incompatible major release. Subsequently many of its features have been ported into the Python 2 branch and now many Python 3 supporters see the extended support for Python 2.7 as a further disincentive for users to switch to the more powerful, and actively evolving, version of the language.
It is only since January 2013, that is at the start of Python 3's fifth year, that monthly downloads of Python 3.3 finally overtook those of Python 2.7 and in January 2014 a survey of Python developers (see Was Python 3 A Mistake?) revealed that almost 80% of its almost 4,800 respondents currently write more 2.x than 3.x code, even though 60% of them had written 3.x code. So why do users cling to the older branch of Python?
Initially a major factor in sticking with Python 2 was because of the large number of existing libraries for it. Over time, and in the case of Kivy spurred on by a grant from the Python Software Foundation, libraries have either added Python 3 support or have been abandoned.
Library support used to be actively monitored by Donald Stufft on py3ksupport.appspot.com but he closed his site in June 2013 when the download counts on the Python Package Indexer (PyPi) were disabled, pointing out that the need for such monitoring had greatly diminished since he started it two years earlier. He also provided a final snapshot of the situation:
At the time of closing (), 39 of the top 50 projects supported Python 3 (78%). Of the 11 that didn't, 4 were not being actively developed (so I prefer to think of it as 39 of the top 46 projects ported, or nearly 85%).
Similar monitoring is currently undertaken by Yuval Greenfield, aka "ubershmekel" on a site he originally called the Python 3 Wall of Shame, as over half the packages listed didn't support Python 3 but has since had a change of name to reflect the fact that green packages, i.e. those that support Python 3, now predominate.
The site is regularly updated and of the top twenty sites, ranked in terms of number of downloads, only two are red. They are Boto, which provides interfaces to Amazon Web Services and is in the process of adding Python 3 support and Paste which provides tools for using a Web Server Gateway Interface stack. Lower down the list MySQL-Python; gevent, a coroutine-based Python networking library and Twisted, an asynchronous networking framework, stand out as being red. In the case of Twisted much of its functionality is incorporated in the new asynchronous IO support module in Python 3.4.
Another red entry is Natural Language Toolkit (NLTK), but this package it is already at NLTK 3.0a3 - i.e. version 3 of the alpha release of Mikhail Koborov's port that received funding from the Python Software Foundation in 2012.
At that time the PSF blog noted:
For many, NLTK is one of the major remaining roadblocks to Python 3 adoption. Not only will the NTLK port be a boon to wider Python 3 adoption, but it should provide a good story for others to lean on when porting large codebases.
Such ports do take time which is why the extended lifetime of Python 2.7 should be welcomed and should not be seen as a disincentive for migrating to Python 3.4.