Skip to content

Consider dropping/deprecating Python 2.6 support #364

@bitprophet

Description

@bitprophet

Background

There are a number of arguments among progressive package maintainers for dropping 2.6:

  • Not supported by the Python core team (including security bugs)
  • Increasing numbers of third-party packages are also dropping support or at least doing this same sort of side-eye at the possibility.
    • Including pip, which isn't really "third party", and tends to drag the rest of us screaming along with it
    • Sphinx, as of late 2016, has also dropped Python 2.6 support
  • Debian 7 and up include 2.7; RHEL/CentOS 7 too
    • Users still stuck on RHEL5 must be backporting their own Python if they're on 2.6 (as system default was 2.4) so they arguably can just as easily get 2.7
  • Usual "backporting packages is a core need for good systems administration, as is not using unsupported software" argument
  • (Admittedly minor, IMHO) syntax niceties like "you can use empty brace expressions in strings, dict comprehensions, etc"

But there are strong counter-arguments, which is why we currently still support 2.6:

  • Through recently, a nontrivial number of users (across my personal maintained packages) are still on 2.6 - as high as 25-33% for Paramiko for example.
    • EDIT: though we just re-ran the numbers and it's now at only 6%! 60k downloads over 2 weeks, compared to 873k in same period for 2.7 (plus another ~45k for Python 3). Fewer, but still not trivial. Fabric's at 8.5%.
    • We're not sure why so many users are still on 2.6...
    • Though it could simply be "it's RHEL/CentOS 6", which includes Python 2.6 as the default
      • Presumably has a very large install base (users of these distros trend conservative) given 7 only came out in 2014
  • Supporting 2.6 (in a Python 2+3 world) isn't, technically speaking, significantly more difficult than supporting 2.7.
  • "You're doing it wrong" (at folks who could potentially move to 2.7, but haven't yet) always feels like a shitty argument to use to justify making maintainers' lives easier, when the thing under discussion is comparatively easy to keep doing.
    • The key here is that it's becoming rapidly less easy, due to many other packages dropping support...

Possible way forward

  • Add a DeprecationWarning (as does pip, cryptography, etc) stating that Invoke 1.0 (maybe 2.0, which is likely to not be years after 1.0) will drop Python 2.6 support. Include a link to this ticket & "please explain why you're still using 2.6".
  • Wait a while, see if any other good reasons pop out of that, that aren't already in the counter-arguments list.
  • Double-check the latest download stats from PyPI re: % Python 2.6 use (generally and for invoke/fabric/paramiko specifically)
  • Make the call re: whether the balance tips enough towards ripping off the band-aid.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions