From Fedora Project Wiki
No edit summary
(Ready)
Line 15: Line 15:


== Current status ==
== Current status ==
[[Category:ChangePageIncomplete]]
[[Category:ChangeReadyForWrangler]]
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
<!-- The Wrangler announces the Change to the devel-announce list and changes the category to Category:ChangeAnnounced (no action required) -->
<!-- After review, the Wrangler will move your page to Category:ChangeReadyForFesco... if it still needs more work it will move back to Category:ChangePageIncomplete-->


[[Category:SystemWideChange]]
[[Category:SystemWideChange]]

Revision as of 15:54, 23 August 2022

libsoup 3: Part Two

Important.png
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

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.

Owner

Current status

  • Targeted release: Fedora Linux 39
  • Last updated: 2022-08-23
  • 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

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 orphaned 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.

Feedback

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.

Scope

  • 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.
  • Policies and guidelines: no new policies needed
  • Trademark approval: N/A (not needed for this Change)
  • Alignment with Objectives: no alignment with objectives

Upgrade/compatibility impact

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.

User Experience

Applications that use libsoup 3 will support HTTP/2, which multiplexes multiple HTTP requests over a single connection. Users may notice significant performance improvements.

Dependencies

To-do: run this command in Fedora 37

$ dnf repoquery --whatdepends libsoup --latest-limit 1 --arch 'noarch,x86_64'
abrt-retrace-client-0:2.15.1-1.fc36.x86_64
badwolf-0:1.2.2-2.fc36.x86_64
bookworm-0:1.1.3-0.7.20200414git.c7c3643.fc36.x86_64
cawbird-0:1.4.2-3.fc36.x86_64
chatty-0:0.6.0-1.fc36.x86_64
chezdav-0:2.5-6.fc36.x86_64
claws-mail-plugins-fancy-0:4.1.0-1.fc36.x86_64
claws-mail-plugins-gdata-0:4.1.0-1.fc36.x86_64
coin-0:1.3.0-6.fc36.x86_64
cutter-0:1.2.7-6.fc36.x86_64
darktable-0:3.8.1-1.fc36.x86_64
dino-0:0.3.0-2.fc36.x86_64
dleyna-renderer-0:0.6.0-14.fc36.x86_64
dleyna-server-0:0.6.0-13.fc36.x86_64
dmapd-0:0.0.91-1.fc36.x86_64
elementary-calendar-0:6.1.1-1.fc36.x86_64
elementary-code-0:6.2.0-1.fc36.x86_64
elementary-mail-0:6.4.0-1.fc36.x86_64
elementary-photos-0:2.7.5-1.fc36.x86_64
elementary-planner-1:3.0.7-1.fc36.x86_64
elementary-tasks-0:6.3.0-1.fc36.x86_64
emacs-1:28.1-2.fc36.x86_64
ephemeral-0:7.1.0-3.fc36.x86_64
epiphany-1:42.3-1.fc36.x86_64
evolution-0:3.44.4-1.fc36.x86_64
evolution-chime-0:1.4.1-5.fc36.x86_64
evolution-data-server-0:3.44.4-1.fc36.x86_64
evolution-ews-0:3.44.4-1.fc36.x86_64
evolution-rspam-0:0.6.0-35.fc36.x86_64
evolution-rss-1:0.3.96-9.fc36.x86_64
exfalso-0:4.5.0-1.fc36.noarch
flatpak-0:1.12.7-5.fc36.x86_64
flatpak-builder-0:1.2.2-2.fc36.x86_64
flatpak-libs-0:1.12.7-5.fc36.x86_64
flatpak-tests-0:1.12.7-5.fc36.x86_64
fondo-0:1.6.1-2.fc36.x86_64
frogr-0:1.6-5.fc35.x86_64
gajim-0:1.4.7-1.fc36.noarch
gambas3-gb-gtk3-webview-0:3.17.3-1.fc36.x86_64
gamehub-0:0.16.3.2-4.fc36.x86_64
geany-plugins-geniuspaste-0:1.38-3.fc36.x86_64
geany-plugins-markdown-0:1.38-3.fc36.x86_64
geany-plugins-updatechecker-0:1.38-3.fc36.x86_64
geary-0:40.0-5.fc36.x86_64
geoclue2-0:2.6.0-2.fc36.x86_64
geocode-glib-0:3.26.4-1.fc36.x86_64
gfbgraph-0:0.2.4-2.fc36.x86_64
gnome-boxes-0:42.3-2.fc36.x86_64
gnome-builder-0:42.1-1.fc36.x86_64
gnome-calculator-0:42.2-1.fc36.x86_64
gnome-calendar-0:42.2-1.fc36.x86_64
gnome-games-0:40.0-3.fc36.x86_64
gnome-music-0:42.1-1.fc36.noarch
gnome-online-accounts-0:3.44.0-1.fc36.x86_64
gnome-panel-0:3.44.0-1.fc36.x86_64
gnome-software-0:42.4-1.fc36.x86_64
gnome-tweaks-0:42~beta-1.fc36.noarch
gnome-video-arcade-0:0.8.8-12.fc36.x86_64
goodvibes-0:0.7.4-1.fc36.x86_64
grilo-0:0.3.14-2.fc36.x86_64
grilo-plugins-0:0.3.14-3.fc36.x86_64
gsequencer-0:3.17.6-0.fc36.x86_64
gssdp-0:1.4.0.1-2.fc36.x86_64
gssdp-utils-0:1.4.0.1-2.fc36.x86_64
gthumb-1:3.12.1-1.fc36.x86_64
gtranslator-0:40.0-3.fc36.x86_64
gupnp-0:1.4.3-2.fc36.x86_64
gupnp-tools-0:0.10.3-1.fc36.x86_64
homebank-0:5.5.6-1.fc36.x86_64
libabiword-1:3.0.5-2.fc36.x86_64
libappstream-glib-0:0.7.18-4.fc36.x86_64
libchamplain-0:0.12.20-6.fc36.x86_64
libdmapsharing-0:2.9.41-6.fc36.x86_64
libdmapsharing4-0:3.9.10-5.fc36.x86_64
libepc-0:0.4.0-22.fc36.x86_64
libepc-ui-0:0.4.0-22.fc36.x86_64
libgda-tools-1:5.2.10-5.fc36.x86_64
libgda-web-1:5.2.10-5.fc36.x86_64
libgdata-0:0.18.1-4.fc36.x86_64
libgepub-0:0.6.0-9.fc36.x86_64
libgovirt-0:0.3.8-3.fc36.x86_64
libgrss-0:0.7.0-14.fc36.x86_64
libgweather-0:40.0-3.fc36.x86_64
libgweather4-0:4.0.0-1.fc36.x86_64
libmateweather-0:1.26.0-2.fc36.x86_64
libosinfo-0:1.10.0-1.fc36.x86_64
libphodav-0:2.5-6.fc36.x86_64
libsoup-devel-0:2.74.2-2.fc36.x86_64
libtimezonemap-0:0.4.5.1-11.fc36.x86_64
libtracker-sparql-0:3.3.3-1.fc36.x86_64
libtranslate-0:0.99-112.fc36.x86_64
liferea-1:1.13.7-2.fc36.x86_64
linphone-0:3.6.1-48.fc36.x86_64
logjam-1:4.6.2-27.fc36.x86_64
meteo-0:0.9.9.1-2.fc36.x86_64
midori-0:9.0-9.fc36.x86_64
mmsd-tng-0:1.8-1.fc36.x86_64
mpdscribble-0:0.22-24.fc36.x86_64
osinfo-db-tools-0:1.10.0-1.fc36.x86_64
osm-gps-map-0:1.1.0-10.fc36.x86_64
ostree-tests-0:2022.5-2.fc36.x86_64
perl-HTTP-Soup-0:0.01-26.fc36.x86_64
polari-0:42.0-1.fc36.x86_64
pragha-0:1.3.3-22.fc36.x86_64
purple-chime-0:1.4.1-5.fc36.x86_64
python3-nbxmpp-0:3.1.1-1.fc36.noarch
remmina-0:1.4.27-4.fc36.x86_64
rest-0:0.8.1-12.fc36.x86_64
rhythmbox-0:3.4.6-1.fc36.x86_64
rygel-0:0.40.4-1.fc36.x86_64
seahorse-0:42.0-1.fc36.x86_64
shotwell-0:0.31.4-1.fc36.x86_64
snapd-glib-0:1.58-4.fc36.x86_64
snapd-glib-tests-0:1.58-4.fc36.x86_64
snapd-qt-tests-0:1.58-4.fc36.x86_64
soup-sharp-0:2.42.2-6.20190810git0f36d10.fc36.x86_64
spice-glib-0:0.40-1.fc36.x86_64
srain-0:1.4.0-2.fc36.x86_64
surf-0:2.0-13.fc36.x86_64
switchboard-plug-onlineaccounts-0:6.5.0-1.fc36.x86_64
syncevolution-libs-1:2.0.0-3.fc36.x86_64
syncevolution-libs-akonadi-1:2.0.0-3.fc36.x86_64
taxi-0:2.0.1-2.fc36.x86_64
telepathy-gabble-0:0.18.4-18.fc36.x86_64
telepathy-salut-0:0.8.1-27.fc36.x86_64
uhttpmock-0:0.5.5-1.fc36.x86_64
vfrnav-0:20201231-22.fc36.x86_64
webkit2gtk3-0:2.36.6-2.fc36.x86_64
webkit2gtk3-devel-0:2.36.6-2.fc36.x86_64
xfce4-screenshooter-0:1.9.11-1.fc36.x86_64
xfce4-screenshooter-plugin-0:1.9.11-1.fc36.x86_64
xfce4-weather-plugin-0:0.11.0-3.fc36.x86_64
yelp-libs-2:42.1-1.fc36.x86_64

Contingency Plan

  • Contingency mechanism: restore libsoup 2 package
  • Contingency deadline: beta freeze
  • Blocks release? possibly, it will depend on which packages successfully make the transition


Documentation

Migrating from libsoup 2

Release Notes

To-do