Remove webkit2gtk-4.0 API Version
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
- Name: Michael Catanzaro
- Email: <mcatanzaro@redhat.com>
Current status
This change was accepted for Fedora 40 and the webkit2gtk-4.0 packages were removed from the webkitgtk source package. But it failed because a new webkit2gtk4.0 source package was created. There is effectively no impact on users because the package continues to exist; it's just maintained separately now.
- Targeted release:
- Last updated: 2024-01-26
- devel thread
- FESCo issue: #2984
- Tracker bug: #2193249
- Release notes tracker: #983
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
- Release engineering: #11368
- 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.