From Fedora Project Wiki

Revision as of 16:26, 9 December 2024 by Decathorpe (talk | contribs) (initial draft)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Deprecate gtk3-rs

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. This Change to mark the packages for the gtk3-rs crates as deprecated reflects this status.

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 42
  • Last updated: 2024-12-09
  • [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

It was announced that the Rust bindings for GTK3 are on basic maintenance only in the release announcement for gtk-rs 0.17.

The release announcement for gtk-rs 0.18 noted that it would be the last release that included the GTK3 bindings.

As expected, the release announcement for gtk-rs 0.19 announces that support for the GTK3 bindings was officially dropped.

Applications that rely on the Rust bindings for GTK3 continue to pull in version 0.18 of the Rust bindings for GLib, cairo, pango, etc. (which were obsoleted by version 0.19 and then 0.20) and the unmaintained bindings for atk and gdk. This also affects the Rust bindings for libhandy.

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.

Feedback

N/Y

Benefit to Fedora

The Rust bindings for GTK3 are obsolete. This Change ensures that no new packages are introduced that depend on them, and that they can eventually be removed from Fedora entirely (alongside old versions of the bindings for GLib, cairo, pango, etc. that are only still present because they are pulled in by the GTK3 bindings that are no longer updated in lockstep).

Scope

  • Proposal owners:

All affected packages are marked with Provides: deprecated() according to the Packaging Guidelines for deprecating packages.

rust-atk
rust-atk-sys
rust-gdk
rust-gdk-sys
rust-gtk
rust-gtk-sys
rust-gtk3-macros
rust-libhandy
rust-libhandy-sys
  • Other developers:

N/A

  • Release engineering:

N/A

  • Policies and guidelines:

N/A

  • Trademark approval:

N/A

  • Alignment with the Fedora Strategy:

Err ... maybe?

Upgrade/compatibility impact

N/A

How To Test

Ensure that dnf repoquery --provides rust-$crate-devel includes deprecated() for all listed packages in Fedora 42+.

User Experience

N/A

Dependencies

Two packages currently depend on the Rust bindings for GTK3, and both already have open upstream issues for moving to GTK4:

Contingency Plan

N/A (not a System Wide Change)

In the extremely unlikely event that adding Provides: deprecated() to any or all of the listed packages causes problems, this change can be easily reverted.

  • Contingency mechanism: N/A (not a System Wide Change)
  • Contingency deadline: F42 Final Freeze
  • Blocks release? N/A (not a System Wide Change)

Documentation

Release Notes

The Rust bindings for GTK3 are obsolete and officially unmaintained. The packages for them have been marked as deprecated to prevent new packages that depend on them from being added to Fedora, and they will be removed from a future release.