Desktop environment doesn't matter much, because GTK and Qt works on every Linux Desktop. I'm using KDE, but I don't know which tools I use are GTK, which are Qt, etc. Qt and GTK teams collaborate a ton both in window management and desktop underpinnings side. Also there are tons of standards, and things just work if you follow them. Even the standard libraries of programming languages and Linux userland gives the tools to utilize these standards.
C libraries are mostly interoperable. I operate with GNU's C library, but aside from interesting behavioral differences, the API is not different.
If you're not writing daemons, you have no business with your init system in 99% of the cases, unless you want to utilize a special feature of any of them. You can just ship the service files. daemon() function is part of libc, not your init system.
In total, after your code builds, you can add these layers step by step, one at a time, and have a codebase which works everywhere with minimal effort.
Endlessly painful. Right?
The defining characteristic is that everyone is using it, not that it's your personal ideal operating system. We have a few major players trying to create their version of the one single os. They're already nobodies ideal, and they have the luxury of telling people to go elsewhere if the system isn't right for them. Imagine how much worse it would be if they had to support everything.
If you centralise then it is not the question "Will?" but "When?" it will fail.