Adding Python 3 support to Galaxy: a status report
Nicola Soranzo · 2018
After an initial prototype in Perl, the Galaxy backend source code was rewritten in Python in 2005. At that time, the latest version of Python was 2.4. A new major version of Python (3.0) was released at the end of 2008, which broke backwards compatibility with Python 2.x. Since then, Python 2 and 3 have been maintained in parallel, but the last supported Python 2 minor release (2.7) will not be maintained upstream after January 1st, 2020 (see https://www.python.org/dev/peps/pep-0373/ ). Although the major Galaxy satellite projects (BioBlend, Planemo, Pulsar and galaxy-lib) are already available for Python 3, Galaxy itself still supports only Python 2.7. At the end of 2015 an effort was started to update the source code and its numerous dependencies to make Galaxy work also under Python 3. In the following two and a half years, over 60 pull requests related to Python 3 support were merged in the Galaxy GitHub repository. As a result, it is now possible to start Galaxy under Python 3, but more work is still needed to fix the many remaining bugs before it is finally ready for end users. We describe the challenges involved in adding the Python 3 support without breaking the existing code, and the strategy we adopted. We also report on the current status, including the dependencies that are not yet ported and the test coverage. The status of Python 3 support in Galaxy is tracked in the following GitHub issue: https://github.com/galaxyproject/galaxy/issues/1715 .