Migrate to Python3
Python.org ( https://devguide.python.org/#status-of-python-branches ) and several python packages will drop support for Python 2.7 before 2020: http://python3statement.org/
RHEL 8 will ship with only Python3
EPEL is also pushing to port everything to Python3, which is the currently recommended python version (also in EL7): https://fedoraproject.org/wiki/SIGs/Python
RH will support Python 2.7 until RHEL7 EOL
The recommendation, if stakeholders agree, is to plan a full migration to Python 3 by summer 2019
#1 Updated by Marco Mambelli over 2 years ago
We mainly need support for m2crypto and condor (which has Python 3 support)
Consider SL7 and SL6 support
EPEL has full Python 3 support for EL7, 3.4 and 3.6:
EPEL for SL6 has python34:
Here instructions to install w/ altinstall from the Python tarballs (viable for tests, not for production deployment):
Python 3.4 could be a safe choice more compatible also w/ EL6
Python 3.6 adds coroutine support (async/wait, generators, ...), strings literals, type annotation, dicts are ordered.
EL6 support is not critical. It is in product retirements phase (Maintenance Support 2, only critical security fixes and not supported in new hardware). And it will become unsupported on November 30, 2020 (Extended Lifetime support, no security updates -> Fermilab will not allow it)
#3 Updated by Marco Mambelli over 2 years ago
v3.7 will be parallel to the Python 2 version (v3.5 or 3.6)
Consider migrating configuration to YAML (https://www.zionandzion.com/json-vs-xml-vs-toml-vs-cson-vs-yaml/)
- tool to port XML config files
- maintain the ability to include parts (config.d)
- preserve checks on what is allowed
- revisit the whole config system:
- are temp files still necessary?
- OK to rewrite config file (to complete w/ default values, to eliminate duplicates, to sort some lists). Maybe move this to a separate tool
#5 Updated by Marco Mambelli 6 months ago
Factory Ops (OSG, CMS, FIFE) needs the OSG 3.4 python 2 version (v3.6.x) at least until Oct 2020 (for CREAM support).
VO may have Frontends locked on older SL version during data taking (LIGO is at SL6 as of now).
Containerization may ease the transition to python3
HTCondor releases the new python bindings for python3
As mentioned earlier, HEPCloud needs Python3
- complete Frontend running in parallel
- revise the repository directory structure (Python3 will follow newer standards like GlideinMonitor)
- After cutting at least 3.6.3 RC, branch off the v3_7 + 3.6.3, branch_v3_p3
- check with stakeholders if the development version could be Python3?
- Re-apply Futurize, compare w/ past branch from Thomas
- common libraries and frontend to be migrated first