libsoup 3: Part Two
libsoup 3 is a new API version of libsoup that provides support for HTTP/2. We will remove libsoup 2 and all packages that still depend on it.
- Name: Michael Catanzaro
- Email: <email@example.com>
- Targeted release: Fedora Linux 39
- Last updated: 2022-09-27
- devel thread
- FESCo issue: #2863
- Tracker bug: <will be assigned by the Wrangler>
- Release notes tracker: <will be assigned by the Wrangler>
We previously introduced libsoup 3 to Fedora 37. Because applications will crash on startup if linked to both libsoup 2 and libsoup 3 at the same time, and because many libraries depend on libsoup, and because applications therefore have limited control over which libsoup they link to transitively, this transition was quite tricky and caused several serious problems during the Fedora 37 development cycle. Fortunately, the trickiest part of the migration to libsoup 3 is now behind us.
The next step is to remove libsoup 2 from Fedora. We propose to do this for Fedora 39. This should happen sooner rather than later because libsoup is a security-sensitive networking library and maintaining an old version in Fedora indefinitely is inadvisable. We know from experience that a deadline will be required in order to ensure applications and libraries make the transition; otherwise, we will wind up maintaining libsoup 2 indefinitely. Removing libsoup 2 from Fedora 38 seems too soon: applications need a little more time to smoothly transition. Accordingly, we propose to remove libsoup 2 from Fedora 39. The package will be retired in rawhide shortly after Fedora 38 is branched in February 2023. At this point, all packages that still depend on it will break in rawhide. This rest of the year will be available to fix broken packages before Fedora 39 is released to users in October 2023.
This will likely cause some temporary problems and force some compromises. E.g. we may have to drop software like ABRT or geoclue from composes if not ported in time.
Benefit to Fedora
Removing libsoup 2 ensures Fedora does not package an obsolete version of a security-sensitive networking library. It will also eliminate the possibility of linkage conflicts between libsoup 2 and libsoup 3, which have been extremely annoying during the Fedora 37 development cycle and will continue to plague us during Fedora 38 development.
- Proposal owners: we will ensure the package is retired
- Other developers: software must be ported from libsoup 2 to libsoup 3. This may require substantial upstream effort.
- Release engineering: #10985
- Policies and guidelines: no new policies needed
- Trademark approval: N/A (not needed for this Change)
- Alignment with Objectives: no alignment with objectives
Software that still depends on libsoup 2 will break.
How To Test
Fortunately not much testing is needed. The main challenge of the transition to libsoup 3 was testing applications to ensure they do not crash on startup due to libsoup 2 vs. libsoup 3 conflicts. Such conflicts will no longer occur once this change is implemented, because libsoup 2 won't exist anymore. Of course, it's also good to test applications to ensure they still work properly after being ported to libsoup 3.
Applications that use libsoup 3 will support HTTP/2, which multiplexes multiple HTTP requests over a single connection. Users may notice significant performance improvements.
$ dnf repoquery --whatdepends libsoup --latest-limit 1 --arch 'noarch,x86_64' --disablerepo='*' --enablerepo=rawhide Fedora - Rawhide - Developmental packages for t 18 MB/s | 64 MB 00:03 Last metadata expiration check: 0:00:15 ago on Tue 23 Aug 2022 11:17:32 AM CDT. abrt-retrace-client-0:2.15.1-4.fc37.x86_64 badwolf-0:1.2.2-3.fc37.x86_64 bookworm-0:1.1.3-0.8.20200414git.c7c3643.fc37.x86_64 cawbird-0:1.4.2-4.fc37.x86_64 cinnamon-0:5.4.11-1.fc38.x86_64 claws-mail-plugins-fancy-0:4.1.0-5.fc37.x86_64 claws-mail-plugins-gdata-0:4.1.0-5.fc37.x86_64 coin-0:1.3.0-7.fc37.x86_64 cutter-0:1.2.7-7.fc37.x86_64 darktable-0:4.0.0-3.fc37.x86_64 dino-0:0.3.0-4.fc37.x86_64 dleyna-renderer-0:0.6.0-15.fc37.x86_64 dleyna-server-0:0.6.0-14.fc37.x86_64 dmapd-0:0.0.91-4.fc37.x86_64 elementary-calendar-0:6.1.1-1.fc37.x86_64 elementary-code-0:6.2.0-2.fc37.x86_64 elementary-mail-0:6.4.0-1.fc36.x86_64 elementary-photos-0:2.7.5-2.fc37.x86_64 elementary-planner-1:3.0.7-1.fc37.x86_64 elementary-tasks-0:6.3.0-1.fc37.x86_64 emacs-1:28.1-3.fc37.x86_64 ephemeral-0:7.1.0-4.fc37.x86_64 exfalso-0:4.5.0-3.fc37.noarch flatpak-builder-0:1.2.2-4.fc37.x86_64 fondo-0:1.6.1-3.fc37.x86_64 frogr-0:1.6-5.fc35.x86_64 gajim-0:1.4.7-1.fc37.noarch gambas3-gb-gtk3-webview-0:3.17.3-2.fc37.x86_64 gamehub-0:0.16.3.2-5.fc37.x86_64 geany-plugins-geniuspaste-0:1.38-5.fc37.x86_64 geany-plugins-markdown-0:1.38-5.fc37.x86_64 geany-plugins-updatechecker-0:1.38-5.fc37.x86_64 geoclue2-0:2.6.0-3.fc37.x86_64 geocode-glib-0:3.26.4-1.fc37.x86_64 gfbgraph-0:0.2.5-2.fc37.x86_64 gnome-calculator-0:43~alpha-2.fc37.x86_64 gnome-games-0:40.0-3.fc36.x86_64 gnome-music-0:42.1-3.fc37.noarch gnome-software-0:43.beta-3.fc38.x86_64 gnome-video-arcade-0:0.8.8-13.fc37.x86_64 goodvibes-0:0.7.4-2.fc37.x86_64 grilo-0:0.3.15-2.fc38.x86_64 grilo-plugins-0:0.3.15-1.fc38.x86_64 gssdp-0:18.104.22.168-3.fc37.x86_64 gssdp-utils-0:22.214.171.124-3.fc37.x86_64 gupnp-0:1.4.3-3.fc37.x86_64 gupnp-tools-0:0.10.3-2.fc37.x86_64 homebank-0:5.5.6-2.fc37.x86_64 libabiword-1:3.0.5-4.fc37.x86_64 libchamplain-0:0.12.20-7.fc37.x86_64 libdmapsharing-0:2.9.41-8.fc37.x86_64 libdmapsharing4-0:3.9.10-6.fc37.x86_64 libepc-0:0.4.0-23.fc37.x86_64 libepc-ui-0:0.4.0-23.fc37.x86_64 libgda5-tools-1:5.2.10-12.fc38.x86_64 libgda5-web-1:5.2.10-12.fc38.x86_64 libgdata-0:0.18.1-6.fc37.x86_64 libgepub-0:0.6.0-10.fc37.x86_64 libgovirt-0:0.3.8-5.fc37.x86_64 libgrss-0:0.7.0-15.fc37.x86_64 libgweather-0:40.0-4.fc37.x86_64 libmateweather-0:1.26.0-3.fc37.x86_64 libsoup-devel-0:2.74.2-3.fc37.x86_64 libtimezonemap-0:0.4.5.2-1.fc38.x86_64 libtranslate-0:0.99-113.fc37.x86_64 liferea-1:1.13.9-1.fc37.x86_64 linphone-0:3.6.1-49.fc37.x86_64 logjam-1:4.6.2-28.fc37.x86_64 meteo-0:0.9.9.1-3.fc37.x86_64 midori-0:9.0-11.fc37.x86_64 mmsd-tng-0:1.9-2.fc37.x86_64 mpdscribble-0:0.22-25.fc37.x86_64 osinfo-db-tools-0:1.10.0-4.fc37.x86_64 osm-gps-map-0:1.1.0-11.fc37.x86_64 ostree-tests-0:2022.5-2.fc37.x86_64 perl-HTTP-Soup-0:0.01-28.fc37.x86_64 polari-0:42.1-2.fc37.x86_64 pragha-0:1.3.3-23.fc37.x86_64 purple-chime-0:1.4.1-7.fc37.x86_64 python3-nbxmpp-0:3.1.1-1.fc37.noarch remmina-0:1.4.27-5.fc37.x86_64 rest0.7-0:0.8.1-2.fc37.x86_64 rhythmbox-0:3.4.6-2.fc37.x86_64 rygel-0:0.40.4-2.fc37.x86_64 seahorse-0:42.0-2.fc37.x86_64 snapd-glib-0:1.58-5.fc37.x86_64 snapd-glib-tests-0:1.58-5.fc37.x86_64 snapd-qt-tests-0:1.58-5.fc37.x86_64 soup-sharp-0:2.42.2-7.20190810git0f36d10.fc37.x86_64 srain-0:1.4.0-3.fc37.x86_64 surf-0:2.0-14.fc37.x86_64 switchboard-plug-onlineaccounts-0:6.5.0-1.fc37.x86_64 taxi-0:2.0.1-3.fc37.x86_64 telepathy-gabble-0:0.18.4-19.fc37.x86_64 telepathy-salut-0:0.8.1-28.fc37.x86_64 uhttpmock-0:0.5.5-2.fc37.x86_64 vfrnav-0:20201231-30.fc37.x86_64 webkit2gtk4.0-0:2.37.90-1.fc38.x86_64 webkit2gtk4.0-devel-0:2.37.90-1.fc38.x86_64 xfce4-screenshooter-0:1.9.11-1.fc38.x86_64 xfce4-screenshooter-plugin-0:1.9.11-1.fc38.x86_64 xfce4-weather-plugin-0:0.11.0-4.fc37.x86_64
Packages in Fedora 37 Workstation Beta that recursively depend on libsoup 2:
$ sudo rm /etc/dnf/protected.d/fedora-workstation.conf $ sudo dnf remove libsoup
NetworkManager-openconnect-gnome NetworkManager-openvpn-gnome NetworkManager-pptp-gnome NetworkManager-vpnc-gnome abrt-cli abrt-desktop anaconda anaconda-live baobab cheese chrome-gnome-shell gdm geoclue2 gnome-bluetooth gnome-boxes gnome-calculator gnome-calendar gnome-characters gnome-classic-session gnome-clocks gnome-contacts gnome-control-center gnome-font-viewer gnome-initial-setup gnome-logs gnome-maps gnome-photos gnome-session-wayland-session gnome-session-xsession gnome-settings-daemon gnome-shell gnome-shell-extension-background-logo gnome-software gnome-text-editor gnome-weather gstreamer1-plugins-bad-free gvfs-goa ibus-gtk4 kdump-anaconda-addon libreoffice-calc libreoffice-emailmerge libreoffice-graphicfilter libreoffice-impress libreoffice-writer nautilus rhythmbox rygel totem tracker-miners unoconv xdg-desktop-portal xdg-desktop-portal-gnome xdg-desktop-portal-gtk
Essential packages we cannot live without:
NetworkManager-openvpn-gnome anaconda anaconda-live gdm geoclue2 gnome-bluetooth gnome-control-center gnome-initial-setup gnome-session-wayland-session gnome-settings-daemon gnome-shell gnome-software gnome-text-editor gstreamer1-plugins-bad-free gvfs-goa ibus-gtk4 libreoffice-calc libreoffice-impress libreoffice-writer nautilus rygel totem tracker-miners xdg-desktop-portal xdg-desktop-portal-gnome xdg-desktop-portal-gtk
- Contingency mechanism: restore libsoup 2 package
- Contingency deadline: beta freeze
- Blocks release? possibly, it will depend on which packages successfully make the transition