Retire gtk3-rs, gtk-rs-core v0.18, and gtk4-rs v0.7
Summary
The Rust bindings for GTK3 (and related libraries) are unmaintained upstream, and are no longer updated in lockstep with bindings for GLib and other related libraries. The packages for gtk3-rs were previously deprecated. This is the next step - the removal of the packages for gtk3-rs, and the compat packages for old versions of gtk-rs-core (v0.18) and gtk4-rs (v0.7) that are associated with them.
Owner
- Name: Fabio Valentini
- Email: decathorpe (at) gmail (dot) com
- Name: Rust SIG
- Email: rust (at) lists (dot) fedoraproject (dot) org
Current status
- Targeted release: Fedora Linux 43
- Last updated: 2025-01-16
- [<link to devel-announce post will be added by Wrangler> Announced]
- [<will be assigned by the Wrangler> Discussion thread]
- FESCo issue: <will be assigned by the Wrangler>
- Tracker bug: <will be assigned by the Wrangler>
- Release notes tracker: <will be assigned by the Wrangler>
Detailed Description
The Rust bindings for GTK3 have been officially on basic maintenance only since the release of gtk-rs 0.17, and the last release that included updated GTK3 bindings was gtk-rs 0.18. As a result, the most recent version continues to pull in compat packages for version 0.18 of gtk-rs-core (Rust bindings for GLib, pango, cairo, etc.), which has not been maintained either, since it was obsoleted by versions 0.19 and 0.20 upstream.
These Rust bindings receive regular fixes for safety and correctness issues - continuing to depend on old versions is not ideal, since only critical fixes are backported to the Fedora packages for these obsolete versions (if that is even possible). The upstream project does not backport fixes or release new versions of older release branches at all.
This also affects packages that continue to depend on version 0.7 of the bindings for GTK4. However, packages that only depend on crates from gtk-rs-core or gtk4-rs do have a migration path to newer versions of these crates, whereas packages that depend on crates from gtk3-rs need to port from GTK3 to GTK4 first.
Feedback
N/Y
Benefit to Fedora
The Rust bindings for GTK3 - and gtk-rs 0.18 in general - are obsolete. This Change ensures that Fedora ships less obsolete software and / or fewer obsolete versions of packages.
Scope
- Proposal owners:
Retire the following packages:
gtk3-rs / libhandy-rs packages (unmaintained upstream): rust-atk rust-atk-sys rust-gdk rust-gdk-sys rust-gtk rust-gtk-sys rust-libhandy rust-libhandy-sys rust-libphosh rust-libphosh-sys
gtk-rs-core v0.18 compat packages: rust-cairo-rs0.18 rust-cairo-sys-rs0.18 rust-gdk-pixbuf0.18 rust-gdk-pixbuf-sys0.18 rust-gio0.18 rust-gio-sys0.18 rust-glib0.18 rust-glib-sys0.18 rust-glib-build-tools rust-gobject-sys0.18 rust-graphene-rs0.18 rust-graphene-sys0.18 rust-pango0.18 rust-pango-sys0.18 rust-pangocairo0.18 rust-pangocairo-sys0.18
gtk4-rs v0.7 / libadwaita-rs v0.5 compat packages: rust-gdk4_0.7 rust-gdk4-sys0.7 rust-gsk4_0.7 rust-gsk4-sys0.7 rust-gtk4_0.7 rust-gtk4-sys0.7 rust-libadwaita0.5 rust-libadwaita-sys0.5
The Change Owners will file Pull Requests for dependent packages to move to newer versions of those libraries, where possible.
Other developers
There are some applications / libraries in Fedora that depend on these old libraries:
- helvum → libadwaita-rs v0.5 and gtk-rs-core v0.18 compat packages
- libipuz → glib v0.18 compat package
- phrog (phosh): obsolete GTK3 bindings and gtk-rs-core v0.18 compat packages
- squeekboard → obsolete GTK3 bindings and gtk-rs-core v0.18 compat packages
- system76-keyboard-configurator → obsolete GTK3 bindings and gtk-rs-core v0.18 compat packages
- wildcard → libadwaita-rs v0.5 and gtk4-rs v0.7 compat packages
All but one of these packages are either co-maintained by the Rust SIG or are maintained by a member of the Rust SIG.
Some of these projects already have begun work on porting to a newer version of gtk-rs, or have been aware that continuing to depend on the obsolete GTK3 bindings is a problem for years:
- helvum: https://gitlab.freedesktop.org/pipewire/helvum/-/commit/f325595
- libipuz: https://gitlab.gnome.org/jrb/libipuz/-/commit/22333d1 (partial port)
- phrog (phosh): https://gitlab.gnome.org/World/Phosh/phosh/-/issues/65
- squeekboard: https://gitlab.gnome.org/World/Phosh/squeekboard/-/issues/64
- system76-keyboard-configurator: https://github.com/pop-os/keyboard-configurator/issues/133
- wildcard: 🤷♂️
Packages that will not or cannot be ported to a newer version of gtk-rs in time - for example because it would also involve a port from GTK3 to GTK4 - will be broken, and should also be retired from Fedora.
Release engineering
N/A (not needed for this Change)
Policies and guidelines
N/A (not needed for this Change)
Trademark approval
N/A (not needed for this Change)
Alignment with the Fedora Strategy
🤷🏻♂️
Upgrade/compatibility impact
The packages for Rust libraries like the gtk-rs crates are only installed at build-time, and are not pulled in as dependencies on user systems. There should be no impact on upgrades other than the possible removal of applications that cannot be ported to gtk-rs 0.19+ or from gtk3-rs to gtk4-rs in time.
Early Testing (Optional)
N/A
How To Test
The listed packages should no longer be available from Fedora repositories.
User Experience
Packages for projects that cannot be ported to gtk-rs 0.19+ or from gtk3-rs to gtk4-rs will no longer be available from the Fedora repositories.
Dependencies
- helvum
- libipuz
- phrog
- squeekboard
- system76-keyboard-configurator
- wildcard
Contingency Plan
- Contingency mechanism: N/A (not a System Wide Change)
- Contingency deadline: N/A (not a System Wide Change)
- Blocks release? N/A (not a System Wide Change)
Documentation
- https://gtk-rs.org/blog/2023/02/10/new-release.html
- https://gtk-rs.org/blog/2023/08/28/new-release.html
- https://gtk-rs.org/blog/2024/06/01/new-release.html
Release Notes
The Rust bindings for GTK3 are obsolete and officially unmaintained. They had been marked as deprecated in Fedora 42, and were removed in Fedora 43, alongside the obsolete packages for version 0.18 of the gtk-rs-core crates and version 0.7 of the gtk4-rs crates.