-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Drop support for Python 2.6? #995
Comments
They actually started warning at version |
I have no problem with us dropping formal support... especially if the Python core team dropped support.... |
The 2.6.9 (release announcement)[https://mail.python.org/pipermail/python-list/2013-October/658898.html] says:
|
Interesting it happened almost 2 full years ago but |
Nick Coghlan (an influential Python core-dev) posted a Stop Supporting Python 2.6 for free blog post aimed at FLOSS developers: it landed in April 2015. |
I think this quote hits the nail on the head:
I'll whip up a PR to drop Py2.6 testing (and I think we have one or two hacks that can be dropped too). |
I believe GCE has some OS images that have Python 2.6. I know this has been an issue for the Cloud SDK team. Could it be an issue for gcloud-python too? |
Chances are that those images are RHEL 6, which is the most well-known OS that ships a version less than 2.7 as the system Python (also mentioned in Nick Coghlan's post). Our code supports Python 2.6 now, but this would just make us test fewer cases (faster "builds" on Travis and locally) and ditch a few weird hacks. |
I'm confused as to what a successful resolution of this issue would be. Do we just say that Python 2.6 is unsupported, but continue to ensure that it works at least minimally? Or we do we say that it is unsupported and stop doing anything to ensure that it works? Because of course if it is the latter then it will quite quickly stop working. |
We say that it is unsupported and stop doing anything to ensure that it works Regarding:
that's pretty unlikely. There are very few differences between Python 2.6 and 2.7 and our codebase already supports Python 3.3+ and Python 2.7 simultaneously. As for continuing this discussion, @ncoghlan suggests
|
I beg to differ. If anyone working on your code decides to use any of these features then it will suddenly no longer work on 2.6. If we're explicitly saying that gcloud-python will not be supported on RHEL 6 (including GCE's |
Nick's post addresses the case that a FLOSS project has external (non-contributing / non-paying) users who desire 2.6 support. The difference here is that Google is paying for this development effort, and it may be in Google's interest to keep 2.6 compatibility (which is what @eamonnmcmanus is arguing). Dropping 2.6 support would allow us to trim a testing dependency ( |
As @tseaver notes, GoogleCloudPlatform is an interesting case, as gcloud-python itself doesn't count as supporting Python 2.6 for free in my view (it's a developer facing component of a commercial service offered by Google), but the arguments in my post may apply to some of gcloud-python's dependencies (such as pycrypto). Maintaining Python 2.6 compatibility is also getting more difficult with time, as there are a number of nice features that originally landed in Python 3.1 (like set literals, set and dictionary comprehensions, field autonumbering in str.format, collections.Counter and collections.OrderedDict) that were included in the original Python 2.7.0 release. and hence folks first learning Python with either Python 2.7 or any current version of 3.x are likely to take them for granted. collections.OrderedDict itself is actually available in RHEL 6.5+, but it's pretty easy to stumble over the others (for anyone that doesn't default to using printf-style string formatting, the lack of str.format field autonumbering is a particularly easy Python 2.6 incompatibility to hit) Assuming that the main reason for retaining Python 2.6 compatibility is RHEL & CentOS 6, then a more fruitful path forward may be to encourage affected users that can't upgrade to RHEL or CentOS 7 to look at the softwarecollections.org project and the related Red Hat Software Collections component included in RHEL subscriptions. If folks don't want to invest time in upgrading the foundational layers of their stacks, then they can't reasonably expect to indefinitely keep upgrading higher level third party components. |
Channeling the Googs -- There will be people who want to use RHEL 6 (for whatever scary reason), so this comes down to a question of cost (in dev time) since our job is "make it awesome to talk to Google Cloud stuff from Python". That means, the big question is: How much extra work is it to continue with 2.6 support until... (let's say) the end of the year? And in Jan 2016 we can re-evaluate... If we're talking about significant overhead, then I could make the argument that we should push people towards RHEL7. |
The real "cost" for us is that we may have to pin older versions of the dependency (
I'd be fine with a similar note in our docs. A warning message, if we issue one, should be in |
OK - so we would need to globally pin to the old crypto version, there's no reasonable way to say "If you're using 2.7+, we can use this newer version", right? (I didn't think there was, but ... so much happens in the Python world...).
Definitely agree with this. |
@jgeewax We can do a |
If there's a vulnerability of sorts, and the crypto library says "yea, we don't support that version anymore, upgrade", then we have a much better argument for saying "we need version X of crypto, therefore you need version Y of Python". Until then, my current feeling is to have to agree with @eamonnmcmanus and pitch that we should keep testing py2.6 until the end of the year and re-evaluate Jan 1, 2016. Still open for discussion though, so any other opinions are welcome.... |
I'm fine with that. It's pretty minimal to support Py2.6 at the moment (requires 0 dev effort and about 0.5 seconds of unit testing per local run and 10s per Travis run). Was just trying to be good for Python dev (based on Nick's post) and originally just concerned by the scary warning in |
The problematic aspect of using Python 2.6 (and any version earlier than 2.7.9, really) is the secure networking support in the standard library - as PEP 466 spells out, the default settings are positively archaic. Using pycrypto instead actually alleviates a lot of those problems, but it's still hard to ensure that dependencies aren't relying on the outdated default behaviours in the standard library modules. For the time being, the DeprecationWarning approach sounds like a good idea to me - PEP 493 spells out some of the current issues with rolling out the PEP 466 and PEP 476 network security improvements across all widely available versions of Python 2.7, but as those get addressed, then continuing to use Python 2.6 for any activity involving the public internet will be a genuinely bad idea. |
@jgeewax More "evidence": the latest version of
(In #1290 I had to add a backport for a |
I think we have enough here to move forward. The short version is:
Otherwise, I think it's fine to say "No more Python 2.6 as a first-class citizen" (App Engine only talks about Python 2.7 in their docs now). |
If we issue the warning (preferably when running |
Some things to note
I am 👍 on the warning and future removal of support. |
@tseaver Can you help cut the final 2.6 release and update the docs / README / etc? Today is DERP-recation day! |
In favor or #1607. |
I bring this up because
cryptography
now warns users still on Py2.6 as of 0.9.3 (which was released July 9)The text was updated successfully, but these errors were encountered: