F43 Change Proposal: Retire gtk3-rs, gtk-rs-core v0.18, and gtk4-rs v0.7 (self-contained)

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.

Wiki
Announced

:link: 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.

:link: Owner

:link: 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.

:link: Feedback

N/Y

:link: 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.

:link: 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.

:link: 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:

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.

:link: Release engineering

N/A (not needed for this Change)

:link: Policies and guidelines

N/A (not needed for this Change)

:link: Trademark approval

N/A (not needed for this Change)

:link: Alignment with the Fedora Strategy

:man_shrugging:t2:

:link: 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.

:link: Early Testing (Optional)

N/A

:link: How To Test

The listed packages should no longer be available from Fedora repositories.

:link: 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.

:link: Dependencies

  • helvum
  • squeekboard
  • system76-keyboard-configurator
  • wildcard

:link: 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)

:link: Documentation

:link: 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

How do you feel about the proposal as written?

  • Strongly in favor
  • In favor, with reservations
  • Neutral
  • Opposed, but could be convinced
  • Strongly opposed
0 voters

If you are in favor but have reservations, or are opposed but something could change your mind, please explain in a reply.

We want everyone to be heard, but many posts repeating the same thing actually makes that harder. If you have something new to say, please say it. If, instead, you find someone has already covered what you’d like to express, please simply give that post a :heart: instead of reiterating. You can even do this by email, by replying with the heart emoji or just “+1”. This will make long topics easier to follow.

Please note that this is an advisory “straw poll” meant to gauge sentiment. It isn’t a vote or a scientific survey. See About the Change Proposals category for more about the Change Process and moderation policy.

1 Like