Retire gtk3-rs, gtk-rs-core v0.18, and gtk4-rs v0.7
This is a proposed Change for Fedora Linux.
This document represents a proposed Change. As part of the Changes process, proposals are publicly announced in order to receive community feedback. This proposal will only be implemented if approved by the Fedora Engineering Steering Committee.
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
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
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 Owner(s) will file Pull Requests for dependent packages to move to newer versions of those libraries, where possible.
Other developers
There are some applications in Fedora that depend on these old bindings:
- helvum → libadwaita-rs v0.5 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 of these packages are either co-maintained by the Rust SIG or are maintained by a member of the Rust SIG.
Most 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
- squeekboard: Making sure you're not a bot!
- system76-keyboard-configurator: GTK4 port · Issue #133 · pop-os/keyboard-configurator · GitHub
- wildcard: Making sure you're not a bot!
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 likely 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
- 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
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.
Last edited by @amoloney 2025-03-10T12:37:46Z
Last edited by @amoloney 2025-03-10T12:37:46Z