Details
-
Type:
RFC
-
Status: Implemented
-
Resolution: Done
-
Component/s: DM
-
Labels:
-
Location:PR or chat room
Description
Currently the stack targets python version 2.7 exclusively. In the current timeline python 2.7 will no longer receive anything other than critical fixes and support for that will be ended in 2020. It will not be receiving any of the new features being added to python 3 (such as type hinting or matrix operators).
Python 3 is being adopted in the astronomy community and over the lifetime of the DM stack development it is assumed that python 3 will begin to dominate (there was even a recent discussion on the astropy mailing list where the idea of dropping support for 2.7 was actively discussed during the LTS cycle). We can not afford to defer the adoption of python 3 to the end of the development process. This RFC proposes that we start to modify the stack code such that it can run on python 3 and python 2.7. This is not a proposal to drop python 2.7 support.
Migrating to python 3 will be an incremental process rather than a big bang and will depend on external dependencies migrating. I advocate that we start the process of migrating before all dependencies are themselves ported. There is a gain in writing new code in a portable manner now rather than attempting to port it later.
If we accept the principle that striving for python 3 is a good goal then we can investigate using the future portability package (and associated futurize script) http://python-future.org/quickstart.html. We should also setup a single CI process to run with python3 that will initially break all the time but will also tell us the porting priorities.
Attachments
Issue Links
- is triggering
-
DM-6179 Support Python 3 migration
- Done
-
DM-5047 newinstall.sh should allow Python 3 to be used
- Invalid
-
DM-5048 lsstsw should allow Python 3 to be used
- Invalid
-
DM-5018 Modernize version check scripts in matplotlib and numpy packages
- Done
-
DM-5022 Modernize python code in Qserv scons package
- Done
-
DM-3129 selectable python version in Jenkins
- Invalid
- relates to
-
DM-3680 Add Scons buildblot slave to aid their port to Python 3
- Invalid
-
RFC-88 Internal software and servers can be natively Python 3
- Implemented
For the record, my opinion is that a big bang change years from now will consume more resources (and therefore be more difficult to get approved) than an evolutionary approach.