SDL 2 vs. Qt

We’re switching to SDL 2.0 from the SDL 1.2 that has been in use for years in Doomsday. Sometimes I feel that minimalism would be the right way to go, and start considering if a switch back to SDL as the base framework would make sense. This scenario starts to look more enticing particularly with a switch to C++11 looming on the horizon — at least the crucial Qt components like threading and conveniences like foreach would be available via the programming language itself.

While Qt does have a large footprint on disk, and Doomsday certainly uses only a fraction of it (mostly the core modules), it still has a number compelling and extremely useful features especially for portable apps:

  • A full-featured platform-independent network module with both low and high level functionality (sockets and HTTP support).
  • Full set of GUI widgets for desktop apps like the Shell, and any other utilities that we might need.
  • Font support.

However, SDL also has some unique benefits due to it being a game-oriented library. We are still using it in Doomsday even after the Qt switch so we can access joystick devices, and SDL_mixer is of course one audio output option.

Thus it looks like we are best served with keeping both as dependencies. However, it might make a lot of sense to start quarantining the Qt dependencies after the C++11 switch so that public interfaces at least would be as unencumbered as possible.

In the farther future, it might be a lot easier to configure and build Doomsday for iOS/Android if it was mostly SDL/C++11 based rather than having Qt as a mandatory dependency. Keeping in mind that mobile platform builds will anyway look strikingly different than desktop ones (e.g., the iOS static library requirement), maybe this will actually be a feasible direction to go.