Skip to content

Proposal: Exploring ways to extend SDL3 compatibility for older systems #14382

@JordanCpp

Description

@JordanCpp

Hello SDL3 team and community,

First of all, thank you for your incredible work on SDL. It's a cornerstone of the cross-platform development world.

I'm writing to you with a proposal and to open a discussion about supporting older operating systems and toolchains in SDL3.

I understand that maintaining support for legacy platforms can be a significant burden and often conflicts with adopting modern APIs and language features. However, there is a niche but passionate community (in retro-gaming, legacy system maintenance, and education) that greatly benefits from having a modern library like SDL on older systems.

To demonstrate both the need and the feasibility, I've been working on two projects:

  1. SDL3Lite: A lightweight, API-compatible implementation of SDL3, written in C++98 for maximum portability. It targets Windows 95+ and old Linux distributions (Debian 3+).
  2. LDL (Little Directmedia Layer): A broader cross-platform media library inspired by SDL's philosophy, supporting even more legacy graphics APIs like DirectDraw, Direct3D 5, and 3dfx Glide.

You can see the projects, build instructions, and screenshots here:
SDL3Lite
LDL

My work proves that it's technically possible. The screenshots show SDL_Renderer, OpenGL 1.2/3.3 contexts, and texture loading working on these old platforms.

My question to you is: Would you be open to the idea of finding a way to make SDL3 itself more friendly to such porting efforts?

I'm not suggesting to halt progress or compromise SDL3's modern features. Instead, perhaps we could explore:

  • Conditional Compilation: Could key modern C++ features be hidden behind macros, allowing a "legacy mode"?
  • Modularity: Could platform-specific code for ancient systems be moved into separate, optional modules?
  • C Language Compatibility: To emphasize my commitment to portability, I want to state that I am fully ready to abandon C++ and develop a compatible layer purely in C. The language is not a principle for me; the goal of maximum portability is what matters most.
  • Documentation of Dependencies: A clear map of which SDL modules require which modern OS/compiler features.

I am fully aware of the maintenance cost. I am not just asking "if you can do it"; I am offering my help and expertise gained from my LDL and SDL3Lite projects to assist in such an endeavor. I am ready to contribute code, testing, and long-term maintenance for these legacy paths.

Thank you for your time and consideration. I look forward to hearing your thoughts.

Sincerely,
Jordan.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions