From Fedora Project Wiki

Revision as of 14:37, 3 May 2023 by Catanzaro (talk | contribs) (Change target release to F40)

Remove webkit2gtk-4.0 API Version

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 webkit2gtk-4.0 API version will no longer be built. Packages that depend on it will fail to build from source and eventually be retired.

Owner

Current status

  • Targeted release: Fedora Linux 40
  • Last updated: 2023-05-03
  • devel thread
  • FESCo issue: #2984
  • Tracker bug: <will be assigned by the Wrangler>
  • Release notes tracker: <will be assigned by the Wrangler>

Detailed Description

The webkitgtk source package currently provides three different API versions of WebKitGTK:

  • webkit2gtk-4.0: for GTK 3 and libsoup 2
  • webkit2gtk-4.1: for GTK 3 and libsoup 3
  • webkitgtk-6.0: for GTK 4 and libsoup 3

Building three different package versions is slow, and Red Hat does not wish to do so anymore. We will remove the webkit2gtk-4.0 API version, which is provided by the webkit2gtk4.0 and javascriptcoregtk4.0 packages. Everything that depends on these packages will fail to build from source and will eventually be removed from the distribution unless fixed.

The good news is that updating your package to webkit2gtk-4.1 is probably easy because there are no API changes other than the version of libsoup that is linked to. If your package does not directly or indirectly depend on libsoup 2, then just change the API version number from 4.0 to 4.1 and you're done. Here is a typical example of how easy this is.

However, if your package does directly or indirectly depend on libsoup 2, then you will need to eliminate that dependency, which will require more effort. If your application links to libsoup 2 via any dependency, it will crash if also linked to libsoup 3.

This is a slimmed-down version of the libsoup 3: Part Two change proposal that was previously rejected by FESCo. Instead of removing all packages that depend on libsoup 2, packages will only be removed if they depend on both libsoup 2 and also WebKitGTK. No effort will be made to remove libsoup 2 from the distribution (though an obsolete HTTP library is a major security risk and packages really ought to stop using it).

Feedback

Benefit to Fedora

libsoup 3 brings support for HTTP/2, whereas libsoup 2 supports only HTTP/1.1. Users will experience shorter load times and improved responsiveness in applications that use WebKitGTK. Users of applications that previously used webkit2gtk-4.0 will have one fewer massive package installed after this transition is completed.

Additionally, the WebKitGTK package maintainer will be less grumpy because WebKitGTK will need to be built only twice for each supported version of Fedora, rather than three times.

Scope

  • Proposal owners: ensure packages required by Fedora Workstation and ELN no longer depend on webkit2gtk-4.0 (already done)
  • Other developers: ensure other packages no longer depend on webkit2gtk-4.0
  • Policies and guidelines: no policies or guidelines would need to be updated
  • Trademark approval: N/A (not needed for this Change)
  • Alignment with Community Initiatives: None

Upgrade/compatibility impact

To be determined. The newer packages can either Obsoletes the older ones, or not, since they are not compatible, it's probably not appropriate to use Obsoletes?

How To Test

Applications ported to webkit2gtk-4.1 need to be tested individually to ensure they still work. It's unlikely anything will go wrong for applications that do not directly or indirectly use libsoup 2. If an application or one of its dependencies needs to be ported to libsoup 3, then there is more potential for trouble.

User Experience

Users will experience shorter load times and improved responsiveness. Additionally, there will be one fewer huge package that might be installed on user systems.

Dependencies

$ dnf repoquery --whatdepends webkit2gtk4.0 --latest-limit 1 --arch 'noarch,x86_64'
Last metadata expiration check: 0:00:31 ago on Thu 30 Mar 2023 03:07:12 PM CDT.
apostrophe-1:2.6.3-6.fc38.noarch
apvlv-0:0.4.0-2.fc38.x86_64
atril-libs-0:1.26.0-4.fc38.x86_64
badwolf-0:1.2.2-4.fc38.x86_64
balsa-0:2.6.4-2.fc38.x86_64
bookworm-0:1.1.3-0.9.20200414git.c7c3643.fc38.x86_64
cairo-dock-plug-ins-webkit-0:3.4.1-42.20210730gitf24f769.fc38.1.x86_64
claws-mail-plugins-fancy-0:4.1.1-5.fc38.x86_64
eclipse-swt-1:4.26-2.fc38.x86_64
emacs-1:28.2-4.fc38.x86_64
ephemeral-0:7.1.0-5.fc38.x86_64
exaile-0:4.1.2-2.fc38.noarch
exfalso-0:4.5.0-5.fc38.noarch
fapolicy-analyzer-0:1.0.0-1.fc38.x86_64
foliate-0:2.6.4-6.fc38.noarch
gambas3-gb-gtk3-webview-0:3.18.1-1.fc38.x86_64
gamehub-0:0.16.3.2-6.fc38.x86_64
geany-plugins-markdown-0:1.38-9.fc38.x86_64
glade-libs-0:3.40.0-2.fc38.x86_64
gnucash-0:4.13-6.fc38.x86_64
gphotoframe-0:2.0.2-17.hg2084299dffb6.fc38.1.noarch
gthumb-1:3.12.2-7.fc38.x86_64
liferea-1:1.14.1-1.fc38.x86_64
lutris-0:0.5.12-3.fc38.x86_64
marker-0:0.0.2020.04.04-10.fc38.x86_64
meteo-0:0.9.9.1-4.fc38.x86_64
midori-0:9.0-12.fc38.x86_64
minigalaxy-0:1.2.2-3.fc38.noarch
notes-up-0:2.0.6-4.fc38.x86_64
osmo-0:0.4.4-2.fc38.x86_64
pdfpc-0:4.6.0-1.fc38.x86_64
perl-Gtk3-WebKit-0:0.06-27.fc38.noarch
rednotebook-0:2.29.3-2.fc38.noarch
rubygem-webkit2-gtk-0:4.1.2-1.fc38.noarch
setzer-0:0.4.8-2.fc38.noarch
sugar-0:0.120-2.fc38.noarch
sugar-browse-0:207-6.fc38.noarch
sugar-toolkit-gtk3-0:0.120-2.fc38.x86_64
surf-0:2.0-15.fc38.x86_64
ulauncher-0:5.15.2-1.fc38.noarch
vfrnav-0:20201231-38.fc38.x86_64
webkit2-sharp-0:0-0.17.20170219gita59fd76.fc38.x86_64
webkit2gtk4.0-devel-0:2.40.0-2.fc38.x86_64
webkit2gtk4.0-doc-0:2.40.0-2.fc38.noarch
wxGTK-webview-0:3.2.1-5.fc38.x86_64
wxGTK3-webview-0:3.0.5.1-10.fc38.x86_64
xiphos-0:4.2.1-18.fc38.x86_64
xreader-libs-0:3.6.3-1.fc38.x86_64
yad-0:9.3-5.fc38.x86_6

Contingency Plan

  • Contingency mechanism: Bring back the removed subpackages
  • Contingency deadline: F39 beta freeze
  • Blocks release? No

Documentation

Release Notes

The webkit2gtk4.0 and javascriptcoregtk4.0 packages providing WebKitGTK for GTK 3 and libsoup 2 applications have been removed. Use the webkit2gtk4.1 and javascriptcoregtk4.1 packages instead, providing WebKitGTK for GTK 3 and libsoup 3 applications.