[Development] QButtonGroup: When the "right thing to do" is absolutely the wrong thing to do

Giuseppe D'Angelo giuseppe.dangelo at kdab.com
Sat Oct 13 13:39:55 CEST 2018


Hi,

Il 13/10/2018 09:03, Boudewijn Rempt ha scritto:
> Then what else made it necessary to suddenly add lots of #include
> <QButtonGroup> lines?

I still don't get it, how is that possible?

* If we're talking about a SIC internal to Qt, that is, some other part 
of Qt not building because of that change, that of course has to be 
fixed as part of the change itself (or immediately after). The fact that 
we're talking of a patch landed 2½ years ago makes me think this is not 
the case.

* If we're talking about a SIC against user code using public APIs, the 
commit does not touch any public header, so I fail to see how it could 
break anything.

* If we're talking about a SIC against user code using private APIs, or 
some 3rd party patches on top of Qt, they're obviously not covered by 
any source compatibility promise.


While the above is true in general, note that for the _specific_ case of 
breaking includes, Qt does indeed not guarantee source compatibility.

You're not supposed to rely on transitive inclusions through Qt public 
headers; if you need something, you must include the right header. This 
has always been the case; and this makes Qt free of add/remove/modify 
include from its public headers (e.g. turn an unnecessary inclusion into 
a forward declaration).

The policy of which source incompatible changes are allowed in Qt 
_public_ APIs is documented in QUIP 6:

> https://code.qt.io/cgit/meta/quips.git/tree/quip-0006.rst


My 2 c,


-- 
Giuseppe D'Angelo | giuseppe.dangelo at kdab.com | Senior Software Engineer
KDAB (France) S.A.S., a KDAB Group company
Tel. France +33 (0)4 90 84 08 53, http://www.kdab.com
KDAB - The Qt, C++ and OpenGL Experts

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4007 bytes
Desc: Firma crittografica S/MIME
URL: <http://lists.qt-project.org/pipermail/development/attachments/20181013/8e9b4c00/attachment.bin>


More information about the Development mailing list