Project: Salt Project (Provisioning / Automation & Configuration)
File: 0006-py2-deprecation.md

Feature Name: End of Python 2 support in SaltStack Start Date: 2019-01-30 RFC PR: Salt Issue: 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 its official end of life (EOL) on 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 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 SaltStacks 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 [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. ](https://postimg.cc/xJymJz67) 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

Check to identify the which versions of Python are supported by pyOpenSSL. Note 3: Python 3.6 has announced 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. SaltStack drops support for Python 2.7 in Neon (tentative release date is August 2019) and continues supporting Python 3.4. Python 3.6 then becomes the oldest supported version in Sodium. SaltStack drops support for Python 2.7 in Neon (tentative release date is August 2019) and continues supporting Python 3.4. Python 3.6 then becomes the oldest supported version in Magnesium. SaltStack drops support for Python 2.7 and starts supporting Python 3.4 in Sodium and drops support for Python 3.4 in favor of Python 3.6 in Magnesium. 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: Future releases of SaltStack will have a Python 2 deprecation warning. SaltStack will create packages that will allow for a smooth transition for users. In accordance with the schedule which is decided upon testing for Python 2 will be turned off. The six library will be removed from SaltStack slowly over time as well as all compat library use. Existing monolithic installers will move solely to Python 3 only for the cutoff release, such as the Windows installer. [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 ](https://postimg.cc/Mc9qrZ34)