itom-project/itom

Minimum required Python and Qt version

photoniker opened this issue · 0 comments

I would like to discuss the upcoming minimum required version of both Python3 and Qt5.

There are good reasons, why we should not supported all versions of Python 3.x as well as Qt5.x, since some
nice features were introduced at later sub-versions. Additionally, the support of all features lead to
different preprocessor switches in the C++ code, which have to be maintained and tested. Currently,
I assume, that nobody is using / testing all older versions which are partially covered by different compiler
pre-processors.

Python 3

Python 3.3 introduced a 'p' argument char for PyArg_ParseTuple, that is used to check for bool. This is used at some places in itom.

With Python 3.4 some more features about the often used GIL have been introduced. It would be nice to enable them.

Python 3.3 and 3.4 requires the Microsoft Visual Studio Redistributible 2010, 3.5 requires already the redist 2015.

Python 3.5 introduces the typing module (which is further expanded in 3.6 and 3.7). However, this basic module would already
useful to improve the demo scripts as well as some built-in scripts, like itomJediLib.py.

Python 3.6 introduces the nice f-strings

Qt

Qt 5.1 introduces the new QRegularExpression class (instead of QRegExp) with the named capture group features. This
is used in the syntax highlighter of itom.

Qt 5.2 allows adding a checkbox to a message box, this is used sometimes for the “do not ask again” functionality

Qt 5.5 allows dynamically parsing the names and values of Q_ENUMS. This is used to allow settings enum values by their string names in Python. E.g. enum properties of plots among others can then be set using a readable string.

Qt 5.6 introduces more functionalities to support HighDPI screens. This is used at some places. Additionally, the help viewer of itom can only be shown with Qt >= 5.6.

For Windows I don’t see any limitations, since it is easy to switch to a modern Python or Qt version.

For Linux, here is a list of delivered Qt and Python3 version for different linux versions:


IMHO

Due to this linux version list, I would set Python 3.5 as minimum version. Debian Jessie (LTS ended this year) is then not supported any more, as well as Ubuntu Trustly Tahr (which still gets maintainance fixes). Howver, I like seeing some typehints in python scripts, shipped with itom. f-strings are nice, but not so important (in my opinion).

For Qt I would vote for Qt 5.5 in order to support Ubuntu 16.04. For this specific version, the highDPI support as well as the help viewer will not be available, but ok.

What is your opinion?

[Issue created by M. Gronle: 2020-11-04]
[Last updated on bitbucket: 2020-12-02]

[Comment created by M. Gronle: 2020-12-02]
Implemented in commit 1c1c6ac

[Comment created by M. Gronle: 2020-12-02]
Decision:

Qt: Minimum: 5.5, Recommended >= 5.6

Python: Minimum 3.5 to support also Debian Stretch and Ubuntu 16.04

[Comment created by Johann Krauter: 2020-11-10]
I'm all for it, because of the backwards compatibility there shouldn't be any problems to upgrade to a new version.