Graf Zahl wrote:And that definitely hints at something being wrong with the product. I talked with a Linux developer this morning about these things. He's not some of those true believers but a down to earth type who acknowledges that the platform is not perfect. His biggest issue with Linux and Unix development in general is that 'a separate tool for every task' attitude that filters down to libraries as well.
For task A you need library X installed which is not part of the OS itself
For task B you need library Y installed which is also not part of the OS itself
Whereas on Windows and macOS much of this functionality is being provided by the system itself.
What this boils down to, according to him, is, that on those other OSs you got a mostly homogenic API to do stuff, including documentation, but in the Linux/Unix world each library is written by different people, to different coding standards, with different API conventions and different documentation quality.
It shouldn't be a surprise that different developers favor different styles of development. Just as he prefers everything be pre-supplied by the OS, I don't like the idea that I should prefer what the OS provides.
In my own experience, relying on OS-provided APIs and services has caused me no end in headaches. With OpenAL Soft, for instance, I have to rely on MSVC support for it to work on Windows because it's the option provided by Microsoft that everyone uses. But because I don't use C++ as Microsoft wants me to, I can't rely on a nearly-20-year-old C standard and have to make hack after hack to ensure proper Windows compatibility (and because it's a monolithic blob, it's not really an option to swap out just the compiler and still use the IDE). FFmpeg had to develop their own preprocessor to translate their C99 code to MSVC-compatible C to support Windows. Similarly, having tried to use the "OS"-provided APIs for UIs (X11 on Linux, WinAPI on Windows) it's a horrible experience, and am immensely grateful to have the option of using Qt or SDL in its place, which greatly simplifies it for their intended tasks while enabling support for many more platforms.
Though whether his or my anecdote is the prevailing opinion, I couldn't say, nor could I say if the opinion is strong enough to drive developers away from Linux in spite of financial gain. Saying that, sure, there is room for improvement. Having some kind of large API guide ala MSDN or Apple's developer documentation for the typically-used (cross-platform) solutions would be nice. Even if the described libs/functions aren't The Best Way(c), as long as they're easily available and functional it'd be a good starting point.
A good example here would be the rendering of True Type fonts. I already had looked into this myself out of interest if this could be added to GZDoom. On both Windows and macOS it is relatively straightforward to set this up to retrieve the data from the OS, but I still have no idea how to do this on Linux. I had sifted through the docs of countless libraries that are supposed to be used here but no matter how I approach it the effort to make it work is disproportionately large compared to some simple calls to a system provided font creation and text rendering function. Remember: It's not just using FreeType to decode some glyphs but also intelligent font substitution for non-latin scripts or character substitution like ligatures, etc. You get all these functions by default on Windows and macOS and can be relatively sure to get a properly rendered text from the system (unless, of course, you use some broken or incomplete font that doesn't play nice.) But on Linux? You cannot count the virtual question marks floating over my head.
In this case, I'm even more clueless than you. I've never had to directly deal with rendering True Type fonts before. But I guess given the history of GUIs on Linux and how they've grown over time, I shouldn't be surprised this particular point is where it would flounder. X itself hasn't been great with True Type fonts, so toolkits like Qt or GTK pick up the slack. If you aren't using a GUI toolkit and SDL's TTF addon is inadequate, one can hope that Wayland will help going forward.