Don't think about it in terms of what language or tech stack to use. Instead think about it in terms of what features and interactions you want to enable that other GUIs don't provide. Most of the research there is not in software. It is in human-computer interaction, a subset of psychology.
I don't like saying this, but it's safe to say the cutting edge research is happening inside places like Meta, X, Google, and Microsoft. Obviously they all exist to increase engagement and not necessarily to improve the GUIs as a first priority.
I think Flutter is an interesting candidate for 'cutting edge' cross-platform mobile and desktop GUIs not based on HTML/CSS. Qt Quick/QML might be another, still relevant technology, at least on the cross-platform desktop.
Some time ago I did research for myself on the topic of GUI libraries/frameworks. Below are some things from this study. The modern tendency for all frameworks to use 2D rendering engines to draw all widgets from scratch instead of using platforms' widgets and APIs. Usually, they use Skia.
I can recommend reading blog posts by Raph Levien [1], who is one of the founders of Linebender [2] and Xilem [3]. Xilem is a Rust cross-platform GUI framework intended to use GPU for rendering in the first place. Earlier, they tried to develop their own GPU meta-API, then they switched to WGPU [4] and developed their own 2D rendering engine instead of using "standard" Skia, like many others.
JetBrains develops Compose Multiplatform [5]: using the same Android API - Jetpack Compose, but for many platforms and in Kotlin. They also use Skia but are considering switching to Impeller (a new 2D rendering engine in Flutter) because of performance issues in Skia with shaders compiling.
Slint [6], was founded by 3 guys who's been working for a long time in Qt Group. It is written in Rust but uses DSL to develop GUI. As I understand, they try to solve the main fundamental issues in Qt.
MAUI, as I understand it, was Xamarin.Forms and now Microsoft tries to develop it.
Another interesting thing. There is a part of each GUI framework, a system to automatically place widgets on the screen - layouting, something like a grid, table, and so on. Several years ago, Apple had a big boom in the implementation and use of the Cassowary algorithm [7] in their GUI frameworks. It was a promising, strong math-based academia-proof algorithm, but in real life, as I understood, it can not work reliably in many edge cases [8], so Apple quietly removed it and implemented Flexbox [9].
More approaches: to use game engines as GUI frameworks: Unity, Unreal, Godot, etc.
Fun fact: Blender has its own GUI library, which is implemented on top of OpenGL.
PS If you find anything interesting, I would appreciate it if you share.
PPS As a way to find more, I can recommend using search in HN, Reddit, and GitHub. Try to find projects that people develop to solve something and look at what ideas they use.
[4] WebGPU implementation in Rust, used in Firefox and many other projects, can be used as a separate library, cross-platform, meta-API over Vulkan, DirectX, Metal etc
Don't think about it in terms of what language or tech stack to use. Instead think about it in terms of what features and interactions you want to enable that other GUIs don't provide. Most of the research there is not in software. It is in human-computer interaction, a subset of psychology.
I don't use Rust much but I think there's a lot going on in terms of UI:
- https://github.com/iced-rs/iced
- https://github.com/emilk/egui
- https://github.com/slint-ui/slint
- https://github.com/DioxusLabs/dioxus
No idea if these are actually good or not, but it looks interesting.
I don't like saying this, but it's safe to say the cutting edge research is happening inside places like Meta, X, Google, and Microsoft. Obviously they all exist to increase engagement and not necessarily to improve the GUIs as a first priority.
Also what /u/Austin-cheney says https://news.ycombinator.com/item?id=43005164
I think Flutter is an interesting candidate for 'cutting edge' cross-platform mobile and desktop GUIs not based on HTML/CSS. Qt Quick/QML might be another, still relevant technology, at least on the cross-platform desktop.
See also e.g. https://drops.dagstuhl.de/storage/01oasics/oasics-vol109-evc...
Excellent find, thanks
Some time ago I did research for myself on the topic of GUI libraries/frameworks. Below are some things from this study. The modern tendency for all frameworks to use 2D rendering engines to draw all widgets from scratch instead of using platforms' widgets and APIs. Usually, they use Skia.
I can recommend reading blog posts by Raph Levien [1], who is one of the founders of Linebender [2] and Xilem [3]. Xilem is a Rust cross-platform GUI framework intended to use GPU for rendering in the first place. Earlier, they tried to develop their own GPU meta-API, then they switched to WGPU [4] and developed their own 2D rendering engine instead of using "standard" Skia, like many others.
JetBrains develops Compose Multiplatform [5]: using the same Android API - Jetpack Compose, but for many platforms and in Kotlin. They also use Skia but are considering switching to Impeller (a new 2D rendering engine in Flutter) because of performance issues in Skia with shaders compiling.
Slint [6], was founded by 3 guys who's been working for a long time in Qt Group. It is written in Rust but uses DSL to develop GUI. As I understand, they try to solve the main fundamental issues in Qt.
MAUI, as I understand it, was Xamarin.Forms and now Microsoft tries to develop it.
Another interesting thing. There is a part of each GUI framework, a system to automatically place widgets on the screen - layouting, something like a grid, table, and so on. Several years ago, Apple had a big boom in the implementation and use of the Cassowary algorithm [7] in their GUI frameworks. It was a promising, strong math-based academia-proof algorithm, but in real life, as I understood, it can not work reliably in many edge cases [8], so Apple quietly removed it and implemented Flexbox [9].
More approaches: to use game engines as GUI frameworks: Unity, Unreal, Godot, etc.
Fun fact: Blender has its own GUI library, which is implemented on top of OpenGL.
PS If you find anything interesting, I would appreciate it if you share.
PPS As a way to find more, I can recommend using search in HN, Reddit, and GitHub. Try to find projects that people develop to solve something and look at what ideas they use.
[1] https://raphlinus.github.io/
[2] https://linebender.org/
[3] https://github.com/linebender/xilem
[4] WebGPU implementation in Rust, used in Firefox and many other projects, can be used as a separate library, cross-platform, meta-API over Vulkan, DirectX, Metal etc
[5] https://www.jetbrains.com/compose-multiplatform/
[6] https://github.com/slint-ui/slint
[7] https://en.wikipedia.org/wiki/Cassowary_(software)
[8] https://news.ycombinator.com/item?id=13935264
[9] https://en.wikipedia.org/wiki/CSS_Flexible_Box_Layout