After recent discussion, it seems to me a good idea to standardize on a minimum Python version for users that would likewise be a target for plugin authors. If a specific policy is chosen, rather than an arbitrary version that gets bumped at irregular intervals, it can be clear (e.g. via the documentation) what the Python requirements are at any given time.
Importantly, this doesn’t actually force the user to use anything in particular – as long as plugins/extensions don’t happen to make use of any features not present in the user’s Python version, the user can happily use whatever Python they want without a problem.
However, specifying an official Python version would allow us to say what is supported and what isn’t, and means users, Avogadro devs, and plugin devs can all be on the same page and let’s us rely on the same platform. It means devs can know exactly which features they should avoid using in order to fit the policy. It also allows maintainers to know exactly which dependencies to include when packaging.
I was initially going to suggest standardizing on the second-oldest supported release of Python; now that 3.13 has just released, that would currently be 3.10.
However, there is a cross-party effort, with big names involved, to coordinate the development of scientific Python packages like numpy
, scipy
etc., and they have agreed on a common time-based policy that involves dropping Python versions three years after release.
I would like to campaign for Avogadro aligning with this effort by having our target Python version (and target versions of numpy
, scipy
etc.) be the oldest within the Scientific Python support window. This would mean, as of a couple of weeks ago, Python 3.11, numpy 1.24, scipy 1.10, matplotlib 3.7, pandas 2.0, and so on (see the helpful chart at the above link).
Since extensions/plugins are quite likely to rely on the common scientific Python libraries, this only seems sensible to me.
I know this seems like it would cut off a lot of users, but as I said, for people who are really prevented from using newer versions, they can probably still use the majority of plugins without any issue at all. But we get all the benefits of standardization, everyone has the same expectations, and what is and isn’t expected to work is clear.