RFC 8: Python Language Support
Author of the first draft: Nicklas Larsson
The code base of GRASS GIS consists today (Feb. 2021) of predominantly C code (ca 50 %), Python (ca 30 %) and a smaller amount of C++ (ca 5 %). Each of these languages have evolved significantly in the last 10–20 years. There is, however, no clearly stated policy of supported language standard(s), nor mechanism to update this policy when needed or wanted. This result in uncertainty for contributors for what may be allowed and solutions that may not be optimal.
This RFC aims at setting a policy for GRASS GIS project regarding the minimum version support for Python.
Similarly, the integration of Python within GRASS GIS – driving the GUI and to a large extent replacing shell scripts (bash/sh) for scripting – has gone through a challenging period with the transition from Python 2 to 3. This transition can now be considered completed, but this fact need to be formalised and the minimum version of Python 3 support must be stated.
The minimum support for Python will, in contrast, likely change more often, due to each (minor) version’s 5-years life-time. At this date, the oldest still-alive Python version is 3.6, to be retired in December 2021.
For a new release of a minor GRASS version, the Python minimum version should be raised if the current minimum Python version reaches end of life or there are any important technical reasons.
At the same time, as for the minor GRASS version, we raise the minimal Python version for a matching branch in grass-addons.
For example, when Python 3.7 goes end-of-life before the release of 8.0.4, we raise the minimal Python version for 8.0.4 to 3.8. We also raise the minimal Python version for grass8 branch in grass-addons repo to Python 3.8.