I think i should explain here very briefly what it is, so you would get some idea. There is immediate GUI, which you may prefer if you want a simpler and easily changeable GUI toolkit. It is also straightforward to use, so doesn’t mostly in practice make the code that uses it more complex, may make it even simpler. The original immediate GUI is imgui (also used in the OGRE game engine), the other is nuklear. kiss_sdl is what i call principal GUI, going further from immediate GUI, written only for SDL (SDL2), which makes it much simpler, it’s generic but it’s less than 2500 lines of easily changeable code. It is thus not “yet another” GUI toolkit, but one can see it only when one knows more about it.
No other generic GUI toolkit in C or C++ as much as it is known, is so simple. How much more complex are the others, is a matter of dispute, the only quantifiable measure is the number of lines of code, and they have at least 10 times more lines of code, though lines of code is certainly not the only parameter of complexity, and it can only be a parameter of complexity when there is a need to more easily change or understand the code. There are other parameters, it is also made to be easily changeable, with parts of the code also abstracted into different files, so it’s easy to change the libraries used or such. One more way how less than 2500 lines of code (normal and well written code) matters, is that it is an indication, a general and complete GUI toolkit with 2500 lines of code cannot be made with a bad design.
In spite it’s the simplest though, every GUI toolkit has some considerable learning curve. It evidently depends on one’s experience as a programmer, like some experienced programmers have learned kiss_sdl in a few hours or even in an hour. It has been made easy to learn, but it still takes some effort for a beginner. Although it is not a typical retained GUI, it is still very similar to a usual GUI toolkit what concerns the general features. Most of what you will learn though, will be general things about programming, that are important to know anyway, so learning kiss_sdl will not be a waste of time, even if you later want to use some more advanced GUI toolkit. Which you though may not need for any games, simulators, system tools or other software, that you may make, but it depends on what you want to do. For games at that you most likely need some very flexible and easily changeable GUI, whatever it may be.
Every effort has been made to make it high quality and reliable, and to eliminate all bugs or faults in the code and in compiling. For more than a year, no issue has been found, except one had a problem compiling it 64 bit in Visual Studio, it works faultlessly with 32 bit and in 64 bit Linux and macOS. I have only 32 bit Windows though, so testing it 64 bit in Visual Studio would be very welcome, and i would especially be thankful for 64 bit project files for Visual Studio, which can then be added to the repository. There is also a branch for high DPI displays and for Android, but for Android it is using ndk-build only.
Then also, is it a “niche product”, as some say? It is open source, so not a product, but it is not a niche thing, why did i need it then? No, it is a general software for its purpose. By some estimations it has more than 2000 users now, there are 1800 downloads in FreewareFiles only, so not “less than 1000” as some here have said. GitHub doesn’t show the downloads, all i know by now is 77 stars and in average 10 unique views in a day during two years. If a GUI toolkit is a “niche product”, then it has failed completely, different from other software or games, as some may not understand. Because GUI has a considerable learning curve, it thus cannot be just “tried”, and if not widely used, everyone would make a decision not to use it before trying it. But it can be said that kiss_sdl is widely used as a GUI toolkit, as GUI toolkits are not used by so many, at least for games. Which is exactly what i want to change, GUI toolkits are too complex, so that some evidently prefer to use not so good options such as command consoles instead, there is a need for a simple generic GUI toolkit.
There are excellent Lazy Foo tutorials about SDL2, but Lazy Foo has not written a tutorial about GUI and may not do it as he is a busy man. kiss_sdl shows how to write a basic GUI in much of the Lazy Foo style, so one may also consider it for learning of how to make GUI.
The reasons why some don’t like this GUI toolkit, are evidently not technical, and also not theoretical. When anyone finds any real technical or theoretical reason why this toolkit is not good for its purpose, that is simple generic (which also means general purpose and complete) GUI toolkit for SDL2, then i will be thankful and very interested to know. But replacing theoretical talk with talk against me as a person is not what i consider competent, so please nothing such or i refuse to talk. The name kiss_sdl is sure a pun intended, but this pun comes from Peter Pan. I of course meant it to mean an acronym “Keep it Small and Simple”, to emphasize that it was made by that principle. As an acronym it should properly be in capital letters though, so KISS_SDL, but as C programmers are used to write everything in lower case letters, it’s thus kiss_sdl.
All that said above, there is no need for such talk for multimedia libraries likely, as they are straightforward, important only that they perform their functions well, and the functions that they have to perform are often self-evident. GUI toolkits are different, as all there depends on how the things are tied together, they are not usable if all that is not done right, more than implementing a separate functions correctly. So a call again for a separate forum for GUI development, as the things discussed here are so different from SDL core development, and thus look unnecessary in SDL development mailing list. Any feedback from any of you is welcome.
-----------------------
kiss_sdl - Simple generic GUI widget toolkit for SDL2 https://github.com/actsl/kiss_sdl