#1658 closed enhancement

drop support for Python < 2.6 — at Version 10

Reported by: zooko Owned by: somebody
Priority: normal Milestone: 1.10.0
Component: packaging Version: 1.9.0
Keywords: packaging backward-compatibility review-needed Cc:
Launchpad Bug:

Description (last modified by davidsarah)

Let's drop support for versions of Python < 2.6. According to distrowatch's tables about the versions of packages that come with distros, this would exclude Tahoe-LAFS 1.10 from being usable with the included Python on the following versions of major distros:

distro excluded version excluded version release date oldest supported[*] version oldest supported[*] release date Python in oldest supported[*] notes next version Python in next version
Fedora 10 2008-11-25 15 2011-05-24 2.7 rawhide will be 17 2.7.2
Ubuntu 8.10 2008-10-30 10.04 LTS 2010-04-29 2.6 will be 12.04 precise 2.7.2
Debian 5.0 2009-02-15 6.0 2011-02-06 2.6 unstable sid will be 7.0 2.7.2
FreeBSD 7.2 2009-05-04 7.1 2009-01-05 2.5 but upgrading is supposed to be pretty safe within the same major series (7.x) and 7.3 (2010-03-23) has Python 2.6 10 CURRENT 2.7.2
RedHat 5.7 2011-07-21 5.7 2011-07-21 2.4 I'm told that people tend to install their own newer version of Python when they want to use newer Python programs on older RHEL (current, not next) 6.2 2.6.6

Among other benefits, dropping support for Pythons older than 2.6 would allow us to remove the dependency on simplejson and the (complex imperatively decided) dependency on pysqlite.

[*] that is, the oldest OS version supported by the OS distributors and still receiving security patches.

Change History (10)

comment:1 Changed at 2012-02-08T13:31:34Z by zooko

  • Description modified (diff)

comment:2 follow-up: Changed at 2012-02-09T01:56:46Z by davidsarah

I don't understand the "oldest supported" columns for FreeBSD and RedHat, if they're supposed to be referencing the "included" Python.

Another thing that could be dropped is the SHA-256 bindings in pycryptopp, since hashlib has SHA-256 since Python 2.5.

Last edited at 2012-02-09T01:57:21Z by davidsarah (previous) (diff)

comment:3 Changed at 2012-03-16T07:28:11Z by zooko

  • Description modified (diff)

comment:4 Changed at 2012-03-16T07:29:49Z by zooko

Twisted is planning to drop support for Python ≤ 2.5 after their next release, which means sometime this year or so:

http://twistedmatrix.com/trac/ticket/5553

comment:5 in reply to: ↑ 2 ; follow-up: Changed at 2012-03-16T07:30:16Z by zooko

Replying to davidsarah:

I don't understand the "oldest supported" columns for FreeBSD and RedHat, if they're supposed to be referencing the "included" Python.

I changed the title of the "oldest supported" column to "oldest supported version of the operating system". Does it make sense now?

comment:6 follow-up: Changed at 2012-03-16T14:45:25Z by gdt

As far as I can tell the FreeBSD column doesn't quite make sense. I'm a little fuzzy, but I think python isn't part of the base system, but is instead in "ports", which is similar to NetBSD. I think the culture is to run relatively recent ports even on older base systems, so my guess is that dropping <=2.5 will not be a significant issue for FreeBSD users.

The chart above doesn't have NetBSD, but python 2.6 has been default in pkgsrc for probably 2 years if not more, and the next quarterly release of pkgsrc (April) will have 2.7 as the default. So dropping support for <=2.5 is fine from that viewpoint also.

comment:7 in reply to: ↑ 5 ; follow-up: Changed at 2012-03-16T16:56:41Z by davidsarah

Replying to zooko:

Replying to davidsarah:

I don't understand the "oldest supported" columns for FreeBSD and RedHat, if they're supposed to be referencing the "included" Python.

I changed the title of the "oldest supported" column to "oldest supported version of the operating system". Does it make sense now?

No, that wasn't what I was confused about. I was confused as to how it is possible for an entry in the first column, i.e. "excluded version of the operating system", to be greater than or equal to the "oldest supported version of the operating system" -- i.e. FreeBSD 7.2 >= FreeBSD 7.1 and RedHat 5.7 >= RedHat 5.7.

comment:8 in reply to: ↑ 7 Changed at 2012-03-16T17:30:45Z by zooko

Replying to davidsarah:

No, that wasn't what I was confused about. I was confused as to how it is possible for an entry in the first column, i.e. "excluded version of the operating system", to be greater than or equal to the "oldest supported version of the operating system" -- i.e. FreeBSD 7.2 >= FreeBSD 7.1 and RedHat 5.7 >= RedHat 5.7.

I'm still not sure I understand what you were/are confused about. "excluded version of the operating system" is supposed to be the newest release of the operating system that doesn't have Python ≥ 2.6. "oldest supported version of the operating system" is supposed to be the oldest release of the operating system that is supported *by the operating system distributors*, i.e. the oldest release of the operating system that still gets security patches. Does that help? I apologize for the confusing wording.

comment:9 in reply to: ↑ 6 Changed at 2012-03-16T17:40:29Z by zooko

Replying to gdt:

As far as I can tell the FreeBSD column doesn't quite make sense. I'm a little fuzzy, but I think python isn't part of the base system, but is instead in "ports", which is similar to NetBSD. I think the culture is to run relatively recent ports even on older base systems, so my guess is that dropping <=2.5 will not be a significant issue for FreeBSD users.

I guess I was following distrowatch on that. So you're saying that even users of FreeBSD older than 7.3, such as FreeBSD 7.2 or 7.1 (or even 6?) will be able to deploy a Python 2.6-requiring Tahoe-LAFS without installing a local Python?

The chart above doesn't have NetBSD, but python 2.6 has been default in pkgsrc for probably 2 years if not more, and the next quarterly release of pkgsrc (April) will have 2.7 as the default. So dropping support for <=2.5 is fine from that viewpoint also.

According to distrowatch, the NetBSD entry would look like this:

distro excluded version excluded version release date oldest supported version of the operating system oldest supported release date Python in oldest supported notes next version Python in next version
NetBSD 5.0 2009-04-29 4.0 2007-12-19 2.5.2 pkgsrc? NetBSD-CURRENT? will be 6.0? 2.7.x

But apparently distrowatch, or my way of reading it, is inaccurate. Could you, gdt, please update the table to reflect NetBSD? Thanks!

comment:10 Changed at 2012-03-16T17:44:50Z by davidsarah

  • Description modified (diff)

sqlite bindings are in Python 2.5, and so is hashlib.sha256. When we've had buildslave failures for unsupported syntax, they've usually been for 2.4.x and not 2.5. So is the simplejson dependency the only reason to drop support for 2.5?

If so, note that the json module in the stdlib is not identical to simplejson. According to http://stackoverflow.com/questions/712791/json-and-simplejson-module-differences-in-python, the stdlib version is less frequently updated and slower (although I would be more concerned about security-relevant bugfixes than speed).

I agree we should definitely drop support for 2.4.x.

zooko wrote:

"oldest supported version of the operating system" is supposed to be the oldest release of the operating system that is supported *by the operating system distributors*, i.e. the oldest release of the operating system that still gets security patches.

Oh, ok, that wasn't at all obvious.

Note: See TracTickets for help on using tickets.