qutebrowser icon indicating copy to clipboard operation
qutebrowser copied to clipboard

Find a policy for Qt version support

Open The-Compiler opened this issue 11 months ago • 0 comments

For Python, things are pretty clear: As soon as a Python version is end-of-life (usually 5 years after it has been released), we drop support for it. Thus, we support 5 Python versions (plus maybe a Alpha/Beta) at any given time.

For Qt, we haven't really dropped any minor version support ever since switching over to Qt 6. Thus, we still support everything from Qt 6.2 (first Qt 6 version with QtWebEngine) up all the way to Qt 6.8 (and the Qt 6.9 beta).

This is a pain for various reasons:

  • Workarounds and version-dependent code around the codebase that could be dropped
  • Additional CI resources that are needed (and more possibilities for flaky tests to appear)
  • Just generally more things to think about while developing (though arguably Qt 5 and QtWebKit support needs to go first)
  • Websites gradually stop working on ancient Chromium versions, without people realizing what's going on, see #8461
  • Users don't get security updates for Chromium, probably also without realizing.

Unfortunately, there is no clear "end of upstream support" date here. A couple of strategies I can think of:

Tracking Qt LTS releases

The OSS support by Qt ends as soon as a new version is released; the Commercial-Only LTS versions (for every third feature release) are supported for three years. Thanks to third-party LGPL code, QtWebEngine LTS is open source immediately though. Thanks to the KDE Free Qt Foundation, LTS releases are still made open source with a year of delay, though.

In the case of Qt 6.2 LTS, that would mean:

  • Release September 2021
  • Commercial LTS support ended September 2024
  • And thus Qt 6.2.13 will be open sourced September 2025

For Qt 6.5 LTS:

  • Release March 2023
  • Commercial LTS support ends March 2026
  • Last LTS OSS release March 2027

And for the newest Qt 6.8 release:

  • Release October 2024
  • LTS ends October 2027
  • Last patch release opensourced October 2028

If we want to follow that with the full OSS LTS time span, that would mean that only this September, we would be able to drop support for Qt < 6.5, and then in 2027 we drop QT < 6.8, etc. I think this is too slow. It would put us at... probably 9 Qt minor versions (Qt 6.2 through Qt 6.10).

Tracking common Linux LTS distributions

Mostly for the "using an up-to-date venv qutebrowser install against a system Qt" use-case.

For Ubuntu/Debian:

So looking at that, we could currently drop Qt 6.2 and 6.3, assuming we only care about the latest LTS. Then in 2029 we could drop Qt 6.4 until 6.X.

Looking at it from the perspective in April 2024 (24.04 LTS release), we would have been around Qt 6.7 or 6.8 when dropping < 6.4, so that would mean supporting the last 4 versions or so? But it's a bit hard to see the big picture, also really depends on what future Debian/Ubuntu versions would ship. Especially because Ubuntu 24.04 came out in April 2024, but ships Qt 6.4 from September 2022...

Website / Chromium support

It's fair to say that we could drop an old QtWebEngine as soon as common websites in the wild start breaking with it (#8461 was the motivation for writing all this up). I have no idea about web development, but here is what I found out:

For the Firefox ESR releases: "ESR releases are maintained for more than a year, with point releases that coincide with regular Firefox releases. These point releases contain security upgrades. The ESR version will also have a three cycle (at least 12 weeks) overlap between the time of a new release and the end-of-life of the previous release"

As of now, that means that Firefox 128 ESR was released in July 2024, support ends in September 2025. That would give us "1 year and 3 months, give or take" as a time horizon.

The Baseline project goes a bit further than that: "Widely available: The feature is well established and works across many devices and browser versions. It’s been available across browsers for at least 2½ years (30 months)."

Given those two timescales, what could we drop right now?

  • 1 year and 3 months: 2023-10-31, so Chromium 112 with Qt 6.6 would be out of range already (2023-05-24), only leaving us with Qt 6.7 and 6.8. Probably too aggressive.
  • 2.5 years: 2022-07-31, so Chromium 102 with Qt 6.4 would be in range for another month or so (2022-09-01).

Gut feeling says that this is the way to go. With that, in a month we could drop Qt 6.2, 6.3 and 6.4, leaving us at around 5 supported Qt versions (6.5 to 6.9). This also seems to line up roughly with my findings in https://github.com/qutebrowser/qutebrowser/discussions/8461#discussioncomment-12015723 where GitHub works with Qt 6.5 currently, but not anything older.

The-Compiler avatar Jan 31 '25 09:01 The-Compiler