Why do Projects Support old Python Releases

January 08, 2014 at 05:00 PM | categories: Python, Mozilla

I see a number of open source projects supporting old versions of Python. Mercurial supports 2.4, for example. I have to ask: why do projects continue to support old Python releases?

Consider:

  • Python 2.4 was last released on December 19, 2008 and there will be no more releases of Python 2.4.
  • Python 2.5 was last released on May 26, 2011 and there will be no more releases of Python 2.5.
  • Python 2.6 was last released on October 29, 2013 and there will be no more releases of Python 2.6.
  • Everything before Python 2.7 is end-of-lifed
  • Python 2.7 continues to see periodic releases, but mostly for bug fixes.
  • Practically all of the work on CPython is happening in the 3.3 and 3.4 branches. Other implementations continue to support 2.7.
  • Python 2.7 has been available since July 2010
  • Python 2.7 provides some very compelling language features over earlier releases that developers want to use
  • It's much easier to write dual compatible 2/3 Python when 2.7 is the only 2.x release considered.
  • Python 2.7 can be installed in userland relatively easily (see projects like pyenv).

Given these facts, I'm not sure why projects insist on supporting old and end-of-lifed Python releases.

I think maintainers of Python projects should seriously consider dropping support for Python 2.6 and below. Are there really that many people on systems that don't have Python 2.7 easily available? Why are we Python developers inflicting so much pain on ourselves to support antiquated Python releases?

As a data point, I successfully transitioned Firefox's build system from requiring Python 2.5+ to 2.7.3+ and it was relatively pain free. Sure, a few people complained. But as far as I know, not very many new developers are coming in and complaining about the requirement. If we can do it with a few thousand developers, I'm guessing your project can as well.

Update 2014-01-09 16:05:00 PST: This post is being discussed on Slashdot. A lot of the comments talk about Python 3. Python 3 is its own set of considerations. The intended focus of this post is strictly about dropping support for Python 2.6 and below. Python 3 is related in that porting Python 2.x to Python 3 is much easier the higher the Python 2.x version. This especially holds true when you want to write Python that works simultaneously in both 2.x and 3.x.