From Fedora Project Wiki

Revision as of 13:23, 29 November 2024 by Ngompa (talk | contribs) (Add note about SDL 1.2 games)

Replace SDL 2 with sdl2-compat using SDL 3

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

This Change proposes to replace SDL 2 with sdl2-compat, which uses SDL 3.

Owner


Current status

  • Targeted release: Fedora Linux 42
  • Last updated: 2024-11-29
  • [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

SDL 2 feature development ended some time ago with efforts being focused on SDL 3. However, many older games still use SDL 2 and cannot change to SDL 3. In order to continue to support SDL 2 games in the modern world, let's replace SDL 2 with sdl2-compat, which uses SDL 3. This also has the effect of moving SDL 1.2 games to SDL3 through sdl12-compat running on sdl2-compat.


Feedback

Benefit to Fedora

Switching SDL 2 powered games to use sdl2-compat ensures that SDL-based applications continue to use the actively developed codebase. This also has the effect of SDL 1.2 powered games that use sdl12-compat to run on SDL3 as well through the fully supported path of sdl12-compat running on sdl2-compat running on SDL3.

Scope

  • Other developers:
  • Policies and guidelines: N/A (not needed for this Change)
  • Trademark approval: N/A (not needed for this Change)
  • Alignment with the Fedora Strategy: N/A (not needed for this Change)

Upgrade/compatibility impact

The SDL2 package would be transparently upgraded to libsdl2-compat package and games using it should just transparently start using SDL 3.0.


How To Test

The testing steps are simple:

1. Swap SDL2 for sdl2-compat: dnf swap SDL2 sdl2-compat

2. Run something that uses SDL 2 like supertuxkart and see that it works.

3. Run something that uses SDL 1.2 like icebreaker and see that it works.


User Experience

There shouldn't be a noticeable user impact, other than possibly a smoother experience because applications are using SDL 3.0.

Dependencies

Contingency Plan

  • Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
  • Contingency deadline: N/A (not a System Wide Change)
  • Blocks release? N/A (not a System Wide Change), Yes/No


Documentation

N/A (not a System Wide Change)

Release Notes

Applications that use SDL 2 will now transparently use SDL 3 through the sdl2-compat package. This makes it so applications that historically used SDL 2 now use SDL 3.