In light of Python 2.7 reaching its end of life (EOL) on Jan 1st 2020, Python 2 will be deprecated from SaltStack no earlier then the Sodium release, that is either the Sodium release or a later release.
Python 2.7 will reach it’s official end of life (EOL) on January 1st, 2020 and post that, it will no longer be supported by its maintainers. Consequently, SaltStack team will retire Python 2.7 support in SaltStack.
The end of Python 2.7 support will enable SaltStack to focus its effort on better supporting Python 3.4+.
Python 2.x is legacy, Python 3.x is the present and future of the language
Python 2 will be deprecated from SaltStack no earlier than the Sodium release (tentative release date is Feb 2020), that is either the Sodium release or a later release. Keeping in mind SaltStack’s policy of announcing ‘end of support’ at least 2 major releases before the intended changes takes place, Sodium or a later release has been chosen as a suitable deadline for Python 2 deprecation.
Migration: After carefully evaluating the list of Python 3 versions supported by different operating systems and by also considering the EOL for all these operating systems [1]* (as denoted in below grid) and EOL of Python branches[2]*, SaltStack team proposes to support Python 3.6 from Sodium or a later release. If the Sodium release is delayed by 3 months more than its tentative release date of Feb 2020, Python 3.6 support release can instead fallback to the estimated date of Feb 2020. Below grid also lowers the motivation to support Python 3.5 at any given time as the oldest supported version due to the fact that most distributions have moved from 3.4 directly to 3.6. Versions of SaltStack released before the cutoff release will continue to support python 2.7 until they reach end of life.
By migrating completely to Python 3.6, SaltStack can then utilize asynchronous programming which in turn gives performance benefits to the end users of SaltStack.
Note 1: SaltStack currently supports master and minions running on different versions of Python such as salt master running on Python 2, minion running on Python 3 and vice versa. This support will not change in this transition as a change in Python interpreter does not mandate a change in network protocol.
Note 2: The version of OpenSSL that SaltStack will support will be determined by the Python version supported by SaltStack. Check pyOpenSSL release page to identify the which versions of Python are supported by pyOpenSSL.
Note 3: Python 3.6 has announced deprecation for OpenSSL versions before 1.0.2, while Python 3.6 will build against OpenSSL 1.0.1 Python 3.7 will not. As such we need to be careful not to mandate use of any features of OpenSSL 1.0.2 until 1.0.1 is also fully deprecated by upstream vendors.
Which Python packaging solutions to use - EPEL (Extra Packages for Enterprise Linux)/SC (Software Collections) repository or monolithic packaging?
While the exact nature of packages delivered by SaltStack is not being laid out in this RFC, SaltStack team guarantees that package updates will be made available for smoother transition.
SaltStack users will see the Python 2 deprecation implemented in the next few releases as follows:
[1]* Below is the list of all the sources from which EOL for the below Operating system versions were retrieved
Operating Systems | Sources |
---|---|
RHEL 6 | https://access.redhat.com/support/policy/updates/errata ‘End of Maintenance Support 2 (Product retirement)’ |
RHEL 7 | https://access.redhat.com/support/policy/updates/errata ‘End of Maintenance Support 2 (Product retirement)’ |
Amazon Linux 2 | https://aws.amazon.com/amazon-linux-2/faqs/ |
SLES 11 | https://www.suse.com/lifecycle/ |
SLES 12 | https://www.suse.com/lifecycle/ |
SLES 15 | https://www.suse.com/lifecycle/ |
OpenSUSE 15 | https://en.opensuse.org/Lifetime |
Debian 9 (Stretch) | https://wiki.debian.org/LTS/ |
Debian 8 (Jesse) | https://wiki.debian.org/LTS/ |
Ubuntu 18.04 | https://wiki.ubuntu.com/Releases |
Ubuntu 16.04 | https://wiki.ubuntu.com/Releases |
Ubuntu 14.04 | https://wiki.ubuntu.com/Releases |
FreeBSD 11 | https://lists.freebsd.org/pipermail/freebsd-announce/2018-September/001842.html |
[2]* Excerpt from EOL of Python branches