Supporting Qt 6 - What's needed?
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
Be nice to others! Respect the FreeCAD code of conduct!
Supporting Qt 6 - What's needed?
In previous discussions (e.g. this one) it was pointed out that we couldn't really consider adding support for Qt6 until version 6.2 was released, with its inclusion of QtWebEngine (needed for Start). So, 6.2 is now available, and the Qt Company claims that basically everything that was in 5.15 is now in 6. Technologically speaking, it appears that the path is clear for us to start adding support. Has anyone begun the process of looking into what changes we will need to make? Are there other sticking points to be aware of?
Re: Supporting Qt 6 - What's needed?
First thing to look at is licensing.
Then if it's OK, I guess it's straight forward to have a test build with Qt 6.
Then if we plan to totally move to it, we have to have some spare time as from around 6.5, Qt will probably start announcing future obsolete API and that's always good to not wait too much to fix this.
Finally before moving, we probably have to evaluate changes on PySide that will likely break the Python part (official and addons). This is IMO the biggest uncertainty along behavior of OpenGL code.
Did you check? https://doc.qt.io/qt-6/portingguide.html
Then if it's OK, I guess it's straight forward to have a test build with Qt 6.
Then if we plan to totally move to it, we have to have some spare time as from around 6.5, Qt will probably start announcing future obsolete API and that's always good to not wait too much to fix this.
Finally before moving, we probably have to evaluate changes on PySide that will likely break the Python part (official and addons). This is IMO the biggest uncertainty along behavior of OpenGL code.
Did you check? https://doc.qt.io/qt-6/portingguide.html
Re: Supporting Qt 6 - What's needed?
I think we would need an official 0.20 release first, as QT5 was the default from this version on. v0.19 used QT4 by default (see the docs https://wiki.freecadweb.org/Compile_on_Linux)
v0.19 -> Python2 and QT4
v0.20 -> Python3 and QT5
v0.21 -> Python3 and QT6
Or there is a deliberate project decision to jump from default v0.19/Py2/QT4 directly to v0.20/PY3/QT6 with the version change and skip QT5 with official release versions.
v0.19 -> Python2 and QT4
v0.20 -> Python3 and QT5
v0.21 -> Python3 and QT6
Or there is a deliberate project decision to jump from default v0.19/Py2/QT4 directly to v0.20/PY3/QT6 with the version change and skip QT5 with official release versions.
- adrianinsaval
- Veteran
- Posts: 5553
- Joined: Thu Apr 05, 2018 5:15 pm
Re: Supporting Qt 6 - What's needed?
What would be wrong about going directly from qt4 to qt6? FreeCAD's release schedule has no relation with qt's. Also, does working to support qt6 mean we need to drop support for qt5? I don't think that's the case.
Re: Supporting Qt 6 - What's needed?
Absolutely not -- just as we supported both Qt4 and Qt5 simultaneously, I think we'll support Qt5 and Qt6 simultaneously for some time. Qt6.2 and Qt5.15 are very similar in terms of feature availability and structure, so we may be able to support Qt 5.15 for a long time.adrianinsaval wrote: ↑Fri Jan 07, 2022 12:28 pm Also, does working to support qt6 mean we need to drop support for qt5? I don't think that's the case.
The Qt 6 open source license is LGPL3. To my knowledge we don't make custom modifications to Qt itself as part of our distribution, and we always link to Qt as a shared library. My understanding of the LGPL is that we can link to it without problems, and without it affecting our own choice of license.
- adrianinsaval
- Veteran
- Posts: 5553
- Joined: Thu Apr 05, 2018 5:15 pm
Re: Supporting Qt 6 - What's needed?
It's the same license than qt5 so if there is any issue using qt6, then we are already making a violation with qt5 but obviously I don't think there is any
Re: Supporting Qt 6 - What's needed?
I think the one change is that they will no longer have LTS versions for open source, LTS is only for their commercial customers. Since we've never pegged to an LTS version, I don't think that will affect us (except insofar as it affects what Linux distros decide to do, of course). Are any distros including Qt6 yet?
- adrianinsaval
- Veteran
- Posts: 5553
- Joined: Thu Apr 05, 2018 5:15 pm
Re: Supporting Qt 6 - What's needed?
arch and it's derivatives as expected: https://archlinux.org/packages/extra/x86_64/qt6-base
but anything that isn't rolling will likely suffer without the point releases
but anything that isn't rolling will likely suffer without the point releases
Re: Supporting Qt 6 - What's needed?
My thinking is "newer is not everytime better".
So if there are no new "functions" or more bug fixes and OS compatibility improvements, targeting to QT6 is at least premature.
Not counting that many people are using Debian derivative, where "bleeding edge libraries" are not the "normal way" of putting in the OS.
Not speaking about Red Hat derivatives, that use even more "old" libraries.
Better to concentrate on other things, like "fixing bugs" and "extend functionalities" as Qt is dealing with "interface only", and maybe using more version will be "more work" for developers.
PySide2 is used, but is exposed with old Pyside1 interface, so
But if there are great improvements in "rendering speed" with new Qt6 maybe a "more quick" adoption would be a "real advancement".
Side note, I'm using Arch derivative, but I use AppImage, so no problem on my side, different thing would be if many distributions will adopt Qt6 as "standard Qt version".
Regards
Carlo D.
So if there are no new "functions" or more bug fixes and OS compatibility improvements, targeting to QT6 is at least premature.
Not counting that many people are using Debian derivative, where "bleeding edge libraries" are not the "normal way" of putting in the OS.
Not speaking about Red Hat derivatives, that use even more "old" libraries.
Better to concentrate on other things, like "fixing bugs" and "extend functionalities" as Qt is dealing with "interface only", and maybe using more version will be "more work" for developers.
PySide2 is used, but is exposed with old Pyside1 interface, so
But if there are great improvements in "rendering speed" with new Qt6 maybe a "more quick" adoption would be a "real advancement".
Side note, I'm using Arch derivative, but I use AppImage, so no problem on my side, different thing would be if many distributions will adopt Qt6 as "standard Qt version".
Regards
Carlo D.
GitHub page: https://github.com/onekk/freecad-doc.
- In deep articles on FreeCAD.
- Learning how to model with scripting.
- Various other stuffs.
Blog: https://okkmkblog.wordpress.com/
- In deep articles on FreeCAD.
- Learning how to model with scripting.
- Various other stuffs.
Blog: https://okkmkblog.wordpress.com/
Re: Supporting Qt 6 - What's needed?
Alone you go faster. Together we go farther
Please mark thread [Solved]
Want to contribute back to FC? Checkout:
'good first issues' | Open TODOs and FIXMEs | How to Help FreeCAD | How to report Bugs
Please mark thread [Solved]
Want to contribute back to FC? Checkout:
'good first issues' | Open TODOs and FIXMEs | How to Help FreeCAD | How to report Bugs