Two-way BC in Patch Releases

From Qt Wiki
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)