Two-way BC in Patch Releases
Jump to navigation
Jump to search
Session Summary
- Problem: do we want to allow downgrading, e.g. building against newer Qt, running against older Qt
- Conclusion: not useful, and not verified by any test machinery
- Next step: send proposal to mailing list to drop the commitment
- No steps taken by us to detect a "downgrade" situation
Session Owners
Volker Hilsheimer
Notes
Background email thread: https://lists.qt-project.org/pipermail/development/2023-August/044333.html
- Anything we cannot do in minor releases we cannot do in patch releases
- Is this ever useful? Downgrading might not work for many reasons
- if you do it, you are on your own (it might work)
- If we want to support it, then we should also test it
- run tests against an installation of older binaries
- Forward BC has many nuances
- adding overrides
- modifying inline functions
- bug-compatibility
- -> generally, applications might have to be recompiled
- Linux distributions perspective
- When a new application is downloaded that has been built against a newer .so-name that what is part of the Linux distro
- Will installing an app with a more recent Qt dependency that pull down a new Qt version?
- according to Allan, that would be the case on Debian
- newer Qt version wouldn't be a problem (from a BC perspective at least)
- our .so names don't include the patch level
- existing exceptions for enums (QLocale), OS versions
- our implementation handles that, e.g. in QLocale comparing enum value received against known last value
- Our BiC test is run as part of qt5.git testing - late
- de-facto, we might have already abandoned the commitment to provide forward-compatibility within a patch cycle
- test does not compare symbols exported by a library; could, but requires investment in the test
- LTS situation
- current minor version might have fewer fixes than latest LTS patch release (e.g. 6.2.7 might be newer than 6.3.x)
- most customers go from LTS to LTS
- but if 6.2.7 adds a new symbol, then it might not be in the currently available 6.5.x either
- installing on a system with older Qt is anyway problematic, people ship their own Qt binaries (snap/bundle etc)