This is a feature
KDE does not spark joy, but then again, most devs and most users have no real artistic sensibility to speak of. Have you ever looked at a random person's desktop? So I don't give weight to anybody that says "it looks good to me."
That said, I am now on KDE after a decade of GNOME because I need some of its configurability, and GNOME is starting to become too opinionated even for me, even though they have a slightly better design team not afraid of colours with more than 20% saturation.
If applications are written in GTK2/3/4, fractional scaling won't work well and lead to blurry windows.
Integer scaling (1x, 2x, 4x) should work just fine, but fractional scaling isn't implemented consistently across GUI frameworks. Hopefully Wayland will fix the inconsistencies between implementations, though GTK and some other GUI frameworks will likely remain broken for a while.
If you need multi-decade support from your GUI layer, I can recommend raw Win32 or VT100 terminal codes. There's hardly any other API with that kind of backwards compatibility.
It take 2-3 years to iron out the bugs. Non-gnome downstream take another 3 years to adopt and stabilise.
By the time the adoption is finished, another major version emerges.
We don't have any good way to maintain compatibility that long.
X11/Xlib, though obviously you have to do the GUI bits yourself (but then you mentioned VT100 terminal codes so i guess that is acceptable).
Also AFAIK Motif is backwards compatible going back to the 90s.
While Windows doesn’t provide a unified GUI toolkit, win32 UI controls of different generations can be mixed freely within an application, enabling gradual upgrades.
*Usually, not always.
A GTK 2 application compiled 25 years ago usually still runs today, too. Just because GTK 3 is available doesn't mean GTK 2 stopped existing.
I have no specific insight into decision-making in open source organizations, but given that the resources they're working with are several orders of magnitude less it's not surprising to me that they sometimes end up having to choose between stability and new functionality. (While I personally prefer projects towards one end of that spectrum, I'm happy that different projects have different values for other people.)
Qt? 99.99% of the API from Qt 4 (2005) is identical in Qt 6 (ongoing). A few headers were renamed, and a few minor functions, generally stuff you can port in 1 day.
When they released Qt 5 and 6 and decided to switch from Qt Widgets to a new GUI toolkit (QML), they didn't say "umm, just rewrite your whole codebase in QML bro", they kept widgets around in perpetual maintenance mode. This is how you respect your users.
I do not think this is current info, but otherwise might be the reason as it is an experimental feature.
For example, you can enable fractional scaling in GNOME right now.
https://www.youtube.com/watch?v=BjfZ8TSXsps
This phoronix article shows the variable to enable it in GTK.
https://www.phoronix.com/news/GTK-4.11.1
Edit: added a little clarification + cited the specific bit of text I was responding to.
Debian still ships support for token ring; the idea that X11 is ever "going away" really misunderstands how free software works.
However, development of xorg is completely dead so it is pretty likely that distributions will stop support running xorg sessions in the future, and at some point xorg will likely not run on new graphics cards anymore.
KDE has announced plans to discontinue support for running x11 sessions and only runs on wayland in the upcoming plasma 6 version.
For now all the gui toolkits will presumably continue to support x11, but at some point, it is likely that new applications will only care about supporting wayland, and after that, it is possible that future versions of gui toolkits will stop supporting x11.
Maybe "ripping out working code" is a bad thing, but at a certain point people would have to put in extra effort to ensure that x11 stays "working" and if nobody steps up to put in that effort and x11 support breaks, it won't be ripping out "working" code anymore.
I don't think that's true; didn't it just recently get a new maintainer who put out a bug fix release and everything?
- fractional scaling of the display output
- app rendering at fractional scales.
The first one works fine with Gtk 3 and newer; the application renders its output at nearest higher integer scale, and then the compositor downscales it to requested fractional scale (i.e. app renders at 200% and compositor downscales it to 175%). Apple does exactly this same thing (just with slightly different scales; they won't show you nice 150% or 175% for a reason; they optimize for different thing).
The second one is rendering at fractional scales directly by the application; then the compositor doesn't downscale anything, just displays the buffer as it is (i.e. app renders at 175% and compositor displays it as it is). Since rendering at fractional scales is more demanding (just think about fractional mouse coordinates or how to display 1px straight line and don't get lost in the rounding errors), it took longer to materialize. It is this support that will have to wait for Gtk 5.
But meanwhile, your (Gtk) apps will be displayed at fractional sizes using the first method.
Blurryness is often caused by GTK2/old Qt5/Electron applications that don't support Wayland and are rendered using XWayland at 100% and then upscaled by the compositor.
Support for this kind of rendering is going to wait until Gtk 5 -- implementing it in Gtk 4 would break ABI, and then the world would have to listen to cries about Yet Another Breakage. The current system, rendering at integer scale and then compositor-downscale is working fine since Gtk 3. Btw, exactly this way is how Apple does it, and it was lauded as a great way to support scaling.
I also believe this is only the case for Wayland, so X11 users may be out of luck here. Actual fractional support would require breaking API compatibility, which is why integer scaling+downscaling is necessary.