https://fedoraproject.org/wiki/Changes/SDL12onSDL2
== Summary == This Change proposes to replace SDL 1.2 with sdl12-compat, which uses SDL 2.0.
== Owner == * Name: [[User:Ngompa| Neal Gompa]] * Email: ngompa13@gmail.com
== Detailed Description == SDL 1.2 development ended long ago, with SDL 2.0 replacing it. However, many older games still use SDL 1.2 and cannot change to SDL 2.0. In order to help move SDL 1.2 games into the modern world, let's replace SDL 1.2 with sdl12-compat, which uses SDL 2.0.
== Benefit to Fedora == Switching SDL 1.2 powered games to use <code>sdl12-compat</code> offers significant advantages:
* Automatic support for Wayland with SDL 2.0.16+ * Native support for PipeWire for audio * Massively improved support for inputs (including gamepads)
Ultimately, SDL 2.0 is actively maintained and developed. We want applications that use SDL to use an actively maintained codebase.
== Scope == * Proposal owners: ** Package [https://github.com/libsdl-org/sdl12-compat libsdl12-compat] ([https://bugzilla.redhat.com/show_bug.cgi?id=1960960 RH#1960960]) ** Adjust {{package|SDL}} to not ship the main library package and use the one from <code>libsdl12-compat</code> ** Once [https://github.com/libsdl-org/sdl12-compat/issues/34 replacement development headers are available], retire {{package|SDL}} completely.
* Other developers: N/A * Release engineering: [https://pagure.io/releng/issue/10118 #10118] * Policies and guidelines: N/A (not needed for this Change) * Trademark approval: N/A (not needed for this Change) * Alignment with Objectives: N/A
== Upgrade/compatibility impact == The <code>SDL</code> package would be transparently upgraded to <code>libsdl12-compat</code> package and games using it should just transparently start using SDL 2.0.
== How To Test == 1. Swap <code>SDL</code> for <code>sdl12-compat</code>: <code>dnf swap SDL sdl12-compat</code>
2. Run something that uses SDL 1.2 like {{package|quake3}} 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 2.0.
== Dependencies ==
== Contingency Plan == * Contingency mechanism: Restore the <code>SDL</code> package in {{package|SDL}}. If {{package|SDL}} has been fully retired, then unretire it. * Contingency deadline: Final Freeze * Blocks release? N/A (not a System Wide Change)
== Documentation ==
N/A (not a System Wide Change)
== Release Notes == Games that use SDL 1.2 will now transparently use SDL 2.0 through the <code>sdl12-compat</code> package. This makes it so applications that historically used SDL 1.2 now use SDL 2.0.
- Swap <code>SDL</code> for <code>sdl12-compat</code>: <code>dnf swap
SDL sdl12-compat</code>
- Run something that uses SDL 1.2 like {{package|quake3}} and see
that it works.
Or, crucially, IceBreaker.
On Mon, May 17, 2021 at 12:01 PM Matthew Miller mattdm@fedoraproject.org wrote:
- Swap <code>SDL</code> for <code>sdl12-compat</code>: <code>dnf swap
SDL sdl12-compat</code>
- Run something that uses SDL 1.2 like {{package|quake3}} and see
that it works.
Or, crucially, IceBreaker.
You didn't port to SDL 2 yet? :P
On Mon, May 17, 2021 at 12:03:48PM -0400, Neal Gompa wrote:
Or, crucially, IceBreaker.
You didn't port to SDL 2 yet? :P
PRs welcome. :)
On Mon, May 17, 2021 at 10:19:05AM -0400, Ben Cotton wrote:
** Package [https://github.com/libsdl-org/sdl12-compat libsdl12-compat] ([https://bugzilla.redhat.com/show_bug.cgi?id=1960960 RH#1960960])
I do have one serious question. What happens to:
SDL_Pango SDL_gfx SDL_image SDL_mixer SDL_mng SDL_net SDL_sound SDL_ttf
?
On Mon, May 17, 2021 at 1:13 PM Matthew Miller mattdm@fedoraproject.org wrote:
On Mon, May 17, 2021 at 10:19:05AM -0400, Ben Cotton wrote:
** Package [https://github.com/libsdl-org/sdl12-compat libsdl12-compat] ([https://bugzilla.redhat.com/show_bug.cgi?id=1960960 RH#1960960])
I do have one serious question. What happens to:
SDL_Pango SDL_gfx SDL_image SDL_mixer SDL_mng SDL_net SDL_sound SDL_ttf
?
Those should all work on top of sdl12-compat, according to upstream.
On Monday, 17 May 2021 at 19:16, Neal Gompa wrote:
On Mon, May 17, 2021 at 1:13 PM Matthew Miller mattdm@fedoraproject.org wrote:
On Mon, May 17, 2021 at 10:19:05AM -0400, Ben Cotton wrote:
** Package [https://github.com/libsdl-org/sdl12-compat libsdl12-compat] ([https://bugzilla.redhat.com/show_bug.cgi?id=1960960 RH#1960960])
I do have one serious question. What happens to:
SDL_Pango SDL_gfx SDL_image SDL_mixer SDL_mng SDL_net SDL_sound SDL_ttf
?
Those should all work on top of sdl12-compat, according to upstream.
SDL_sound has added SDL2 support[1] and then removed support for 1.2[2] in the development (default) branch while the stable-1.0 branch supports both 1.2 and 2.0[3]. They also haven't made any releases in 13 years.
The latest development version of one of my packages, ags, is switching to SDL2 (from Allegro) and requires a corresponding SDL2-based SDL_sound. What are the plans for SDL_sound? At least two distributions have packaged Mercurial snapshots of SDL_sound build against SDL2[4][5].
Regards, Dominik
[1] https://hg.icculus.org/icculus/SDL_sound/rev/7ba87def9569 [2] https://hg.icculus.org/icculus/SDL_sound/rev/b0389c65334c [3] https://hg.icculus.org/icculus/SDL_sound/rev/a8558f750f78 [4] https://aur.archlinux.org/packages/sdl2_sound-hg/ [5] https://codeberg.org/sabotage-linux/sabotage/commit/6645182d209373b0d8a87769...
On Wed, Jun 2, 2021 at 7:47 AM Dominik 'Rathann' Mierzejewski dominik@greysector.net wrote:
On Monday, 17 May 2021 at 19:16, Neal Gompa wrote:
On Mon, May 17, 2021 at 1:13 PM Matthew Miller mattdm@fedoraproject.org wrote:
On Mon, May 17, 2021 at 10:19:05AM -0400, Ben Cotton wrote:
** Package [https://github.com/libsdl-org/sdl12-compat libsdl12-compat] ([https://bugzilla.redhat.com/show_bug.cgi?id=1960960 RH#1960960])
I do have one serious question. What happens to:
SDL_Pango SDL_gfx SDL_image SDL_mixer SDL_mng SDL_net SDL_sound SDL_ttf
?
Those should all work on top of sdl12-compat, according to upstream.
SDL_sound has added SDL2 support[1] and then removed support for 1.2[2] in the development (default) branch while the stable-1.0 branch supports both 1.2 and 2.0[3]. They also haven't made any releases in 13 years.
The latest development version of one of my packages, ags, is switching to SDL2 (from Allegro) and requires a corresponding SDL2-based SDL_sound. What are the plans for SDL_sound? At least two distributions have packaged Mercurial snapshots of SDL_sound build against SDL2[4][5].
I can ask upstream about making a 2.0 release that we can package as SDL2_sound.
Hi!
On Wednesday, 02 June 2021 at 14:16, Neal Gompa wrote:
On Wed, Jun 2, 2021 at 7:47 AM Dominik 'Rathann' Mierzejewski dominik@greysector.net wrote:
On Monday, 17 May 2021 at 19:16, Neal Gompa wrote:
On Mon, May 17, 2021 at 1:13 PM Matthew Miller mattdm@fedoraproject.org wrote:
On Mon, May 17, 2021 at 10:19:05AM -0400, Ben Cotton wrote:
** Package [https://github.com/libsdl-org/sdl12-compat libsdl12-compat] ([https://bugzilla.redhat.com/show_bug.cgi?id=1960960 RH#1960960])
I do have one serious question. What happens to:
SDL_Pango SDL_gfx SDL_image SDL_mixer SDL_mng SDL_net SDL_sound SDL_ttf
?
Those should all work on top of sdl12-compat, according to upstream.
SDL_sound has added SDL2 support[1] and then removed support for 1.2[2] in the development (default) branch while the stable-1.0 branch supports both 1.2 and 2.0[3]. They also haven't made any releases in 13 years.
The latest development version of one of my packages, ags, is switching to SDL2 (from Allegro) and requires a corresponding SDL2-based SDL_sound. What are the plans for SDL_sound? At least two distributions have packaged Mercurial snapshots of SDL_sound build against SDL2[4][5].
I can ask upstream about making a 2.0 release that we can package as SDL2_sound.
It looks like the Debian maintainers already did and Ryan indicated he would make one back in April: https://alioth-lists.debian.net/pipermail/pkg-sdl-maintainers/2021-April/003...
Regards, Dominik
On 17.05.2021 16:19, Ben Cotton wrote:
In order to help move SDL 1.2 games into the modern world, let's replace SDL 1.2 with sdl12-compat, which uses SDL 2.0.
What about third-party **proprietary** games from Steam for example?
On 5/17/21 7:29 PM, Vitaly Zaitsev via devel wrote:
On 17.05.2021 16:19, Ben Cotton wrote:
In order to help move SDL 1.2 games into the modern world, let's replace SDL 1.2 with sdl12-compat, which uses SDL 2.0.
What about third-party **proprietary** games from Steam for example?
the Steam runtime ships its own SDL 1.2 so I don't think anything will change on that front
On 17.05.2021 20:50, Jan Drögehoff wrote:
the Steam runtime ships its own SDL 1.2 so I don't think anything will change on that front
Steam was just an example. There are lots of other proprietary applications and games without their own runtime.
On 5/17/21 9:53 PM, Vitaly Zaitsev via devel wrote:
On 17.05.2021 20:50, Jan Drögehoff wrote:
the Steam runtime ships its own SDL 1.2 so I don't think anything will change on that front
Steam was just an example. There are lots of other proprietary applications and games without their own runtime.
Well in the case an application depends on the system libraries I would assume sdl12-compat to be a drop in solution.
Back in 2019[1] Ryan Gordon showed that the original Unreal Tournament 2004 runs fine under the compatibility layer so I would assume the same for everything that doesn't depend on quirks or bugs.
On Mon, 2021-05-17 at 19:29 +0200, Vitaly Zaitsev via devel wrote:
On 17.05.2021 16:19, Ben Cotton wrote:
In order to help move SDL 1.2 games into the modern world, let's replace SDL 1.2 with sdl12-compat, which uses SDL 2.0.
What about third-party **proprietary** games from Steam for example?
Steam games default to using libraries shipped with the Steam runtime, which includes both SDL 1.2 and SDL 2.0 and allows games to choose which to use, so I don't think changing the system version of SDL would have any impact on propreitary Steam games.
On 17.05.2021 20:53, Benjamin Lowry wrote:
Steam games default to using libraries shipped with the Steam runtime, which includes both SDL 1.2 and SDL 2.0 and allows games to choose which to use, so I don't think changing the system version of SDL would have any impact on propreitary Steam games.
There are lots of other proprietary applications and games without their own runtime.
Vitaly Zaitsev via devel wrote:
On 17.05.2021 16:19, Ben Cotton wrote:
In order to help move SDL 1.2 games into the modern world, let's replace SDL 1.2 with sdl12-compat, which uses SDL 2.0.
What about third-party **proprietary** games from Steam for example?
sdl12-compat claims to be binary-compatible with SDL 1.2, so this should in principle not be a problem. Subtle behavioral differences or bugs (or even fixed bugs) could cause problems though.
Kevin Kofler
Ben Cotton wrote:
This Change proposes to replace SDL 1.2 with sdl12-compat, which uses SDL 2.0.
FYI, it took me just a few minutes of casually browsing commits to spot a memory corruption bug in this code: https://github.com/libsdl-org/sdl12-compat/commit/4c5e3b22593c4b48ac8129ae20...
Kevin Kofler
On 5/18/21 12:45 PM, Kevin Kofler via devel wrote:
Ben Cotton wrote:
This Change proposes to replace SDL 1.2 with sdl12-compat, which uses SDL 2.0.
FYI, it took me just a few minutes of casually browsing commits to spot a memory corruption bug in this code: https://github.com/libsdl-org/sdl12-compat/commit/4c5e3b22593c4b48ac8129ae20...
Opened an issue for it[1] and was correctly shortly after[2]
It uses the exact same code as SDL 1.2 which has a version for i386 systems with inline assembly so that might need some eyes looking at it.
[1] https://github.com/libsdl-org/sdl12-compat/issues/56
[2] https://github.com/libsdl-org/sdl12-compat/commit/dacb4cf935ba3a6faee53c67d8...
On 5/18/21 9:17 PM, Jan Drögehoff wrote:
It uses the exact same code as SDL 1.2 which has a version for i386 systems with inline assembly so that might need some eyes looking at it.
Actually scratch that
I had misinterpreted a contributors response to the issue and it has a completely fresh implementation
apologies
On Mon, May 17, 2021 at 11:37 AM Ben Cotton bcotton@redhat.com wrote:
https://fedoraproject.org/wiki/Changes/SDL12onSDL2
== Summary == This Change proposes to replace SDL 1.2 with sdl12-compat, which uses SDL 2.0.
== Owner ==
- Name: [[User:Ngompa| Neal Gompa]]
- Email: ngompa13@gmail.com
== Detailed Description == SDL 1.2 development ended long ago, with SDL 2.0 replacing it. However, many older games still use SDL 1.2 and cannot change to SDL 2.0. In order to help move SDL 1.2 games into the modern world, let's replace SDL 1.2 with sdl12-compat, which uses SDL 2.0.
== Benefit to Fedora == Switching SDL 1.2 powered games to use <code>sdl12-compat</code> offers significant advantages:
- Automatic support for Wayland with SDL 2.0.16+
- Native support for PipeWire for audio
- Massively improved support for inputs (including gamepads)
Ultimately, SDL 2.0 is actively maintained and developed. We want applications that use SDL to use an actively maintained codebase.
== Scope ==
- Proposal owners:
** Package [https://github.com/libsdl-org/sdl12-compat libsdl12-compat] ([https://bugzilla.redhat.com/show_bug.cgi?id=1960960 RH#1960960]) ** Adjust {{package|SDL}} to not ship the main library package and use the one from <code>libsdl12-compat</code> ** Once [https://github.com/libsdl-org/sdl12-compat/issues/34 replacement development headers are available], retire {{package|SDL}} completely.
- Other developers: N/A
- Release engineering: [https://pagure.io/releng/issue/10118 #10118]
- Policies and guidelines: N/A (not needed for this Change)
- Trademark approval: N/A (not needed for this Change)
- Alignment with Objectives: N/A
== Upgrade/compatibility impact == The <code>SDL</code> package would be transparently upgraded to <code>libsdl12-compat</code> package and games using it should just transparently start using SDL 2.0.
== How To Test ==
- Swap <code>SDL</code> for <code>sdl12-compat</code>: <code>dnf swap
SDL sdl12-compat</code>
- Run something that uses SDL 1.2 like {{package|quake3}} 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 2.0.
== Dependencies ==
== Contingency Plan ==
- Contingency mechanism: Restore the <code>SDL</code> package in
{{package|SDL}}. If {{package|SDL}} has been fully retired, then unretire it.
- Contingency deadline: Final Freeze
- Blocks release? N/A (not a System Wide Change)
== Documentation ==
N/A (not a System Wide Change)
== Release Notes == Games that use SDL 1.2 will now transparently use SDL 2.0 through the <code>sdl12-compat</code> package. This makes it so applications that historically used SDL 1.2 now use SDL 2.0.
So a minor update here: sdl12-compat now has replacement headers. Thus, I updated the proposal to include fully retiring SDL for sdl12-compat.