From Fedora Project Wiki

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

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:

0. Enable the SDL2onSDL3 COPR: dnf copr enable ngompa/SDL2onSDL3

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.

Issues should be reported upstream for the fastest response: https://github.com/libsdl-org/sdl2-compat/issues


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: Revert back to shipping SDL2 / mingw-SDL2 packages
  • Contingency deadline: Final Freeze
  • Blocks release? N/A (not a System Wide Change)

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.