[Development] Making Binary Incompatible Changes after Qt 6.0
Shawn.Rutledge at qt.io
Wed Jan 27 16:56:44 CET 2021
On 2021 Jan 27, at 16:39, Volker Hilsheimer <volker.hilsheimer at qt.io<mailto:volker.hilsheimer at qt.io>> wrote:
On 10 Dec 2020, at 09:48, Lars Knoll <lars.knoll at qt.io<mailto:lars.knoll at qt.io>> wrote:
On 9 Dec 2020, at 18:49, Thiago Macieira <thiago.macieira at intel.com<mailto:thiago.macieira at intel.com>> wrote:
On Wednesday, 9 December 2020 02:00:29 PST Benjamin TERRIER wrote:
Back to the topic, wouldn't it be acceptable to break BC before 6.2 release?
I mean Qt 6 isn't really complete until 6.2, so if a break is required it
kind of makes sense to make it happen before everyone has made the switch
from Qt 5 to Qt 6.
That would effectively mean 6.0 and 6.1 are duds and should not be used. We
should have called them 5.98 and 5.99 then.
No, we either break BC before May 2021, before adoption really starts, or we
wait until 2025. Anything in-between is not acceptable.
I agree with that. If we have good enough reasons, we can consider this for 6.1, but I would not want to do it after that.
But we can of course consider shortening our time between major releases. As Volker mentioned, we were doing major versions more often in the past, and 3-4 years instead of 7-8 is something we should really consider.
Lars and I reviewed the issues that are linked to
and we believe that none of those issues provide a strong enough reason for breaking binary compatibility in Qt 6.1:
* QTBUG-89090: we have lived with those issues through Qt 5
* QTBUG-89423: breaking SC by marking QStandardItemModel::data (and other overrides where a multiData reimplementation exists) as final might be an option; that doesn’t break BC. Otherwise, documenting the issue in affected classes.
* QTBUG-89428: not a new problem
* QTBUG-89439: not a new problem; can be solved through an API that maps coordinate systems
* QTBUG-89199: so far just a theoretical problem
* QTBUG-87465: seems to be solvable by adding setters to the item-widget classes
* QTBUG-89205: security relevant, but proposed “Take 2” solution seems adequate
* QTBUG-90327: API convenience; it should be possible to solve this with documentation
There’s no question that it would be nice if we could address all these issues. But as long as they are all just “nice to have’s”, it doesn’t seem justified to break our established BC promise with Qt 6.1.
However, the discussion is still open, and if you disagree with our conclusion, please speak up soon, and ideally prepare a patch with a proposal that addresses the problem. Feature freeze is in a few days, and we’ll start the header review soon after that, by which time we need to close this discussion.
I really want to get https://codereview.qt-project.org/c/qt/qtdeclarative/+/329814 in.
If you subclass QQuickItem and want to handle mouse events, you need to override several virtual functions. Wheel events? One more. Touch events? One more. QTabletEvents? We didn’t add a new virtual function for those at all. But those events are enough alike that with the new QPointerEvent/QEventPoint API, you could deal with them in a mostly device-agnostic way in some cases (i.e. if you are trying to click a button, does it really matter which device the press and release come from?), and I’d like to encourage users to start doing that. QTBUG-86165 is a case like that: touch events are easy to deal with, and they didn’t want to override several virtual functions to handle mouse events, so they decided to rely on touch->mouse synthesis (!) which is rarely used, and stuff goes wrong.
Yes you can subclass QQuickItem and override event(), and deal with all events in one place, but it’s probably hard to convince users to really do that: they will assume that it’s a niche solution, too much responsibility, too much of a firehose.
QTBUG-90296 basically just states the same idea.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Development