This question is not intended to be an attack on Linux, instead, it should be considered for learning and improving developers' experience. I have mentioned all of these from my own experience, so do correct me if any statement is wrong.
I have seen many problems regarding linux development, especially for the desktop.
1) Primary reason is that there are no standard graphics APIs for Linux. We have several different graphics stacks such as Xorg, Wayland and also Mir.
2) Several system service daemons such as systemd, initd, runit, etc. for different distributions.
3) Several packaging systems such as deb, rpm, pkg, etc.
4) For many years from now, there will be several ways of communicating special messages such as screencasting, keylogging in different Wayland compositors.
So, if a developer wants to create a program for Linux in general, what would he/she do? Write a separate program for every single distribution out there?
I can understand that Linux is customisable and hence can be moulded into many different use cases, but leaving aside special purpose OSes, can't we make a unified "Desktop Linux" which will have a standard way of doing things?
SOCIAL SHARE CARD GENERATOR