Where can I start to describe what's wrong with Linux?
Nowhere. Everything goes smooth as long as you use a stable & well tested distribution in a PC with hardware which is supported by Linux (the latter is much less of an issue nowadays) and do a training so you know what you are doing. (...)
True enough.
The basic issue discussed here IMO is about "fragmentation".
Obviously the only way you can avoid software fragmentation is having ONE big company controlling the whole development process and strategy. MS was actually pretty good at doing this, and I mean was. Looks like they're on a slippery slope at the moment, although you can still run most decently-written apps from 15 years ago on their last OS. But even well established companies controlling everything can't completely avoid fragmentation. Besides, I'm not sure this would be a good thing for GNU/Linux in the long run. This can't be.
A second but related point is that open source software and binary distribution don't get together well by nature. Open source is about software itself much more so than about fitness for any particular use or even ease of use. Now if you need support, you can buy it and use Red Hat for instance, which has been one of the most popular distributions for commercial companies selling Linux software.
Obviously the GNU/Linux world is pretty fragmented but that's also what makes it fruitful and independent. Now I admit it makes software distribution very tough if you target Linux, that's why most companies targetting Linux only target a very limited and well selected number of distributions as nctnico suggested.
You also have to define what you consider acceptable and unacceptable incompatibilities.
Having to make your own software evolve every few years to accomodate for external evolutions doesn't seem that abnormal or infuriating to me. If it were every few months, it may be. But again, you can select very stable and slow-evolving Linux distributions to mitigate that. (Just think that some distributions still run on kernel 2.6
)
One means of insuring a lot less fragmentation would be to require strict conformance to well known standards. Problem with this is 1/ software standards are not that many and don't cover everything, 2/ there is no way you can "require" anything from open source software teams, and 3/ that would probably hinder the "productivity" of open source software development big time and add considerable hidden costs, only leaving the big players alive, which as I hinted above would probably mean the end of open source as we know it.
The short-term solution is again either targetting only one or two very stable Linux distributions or devising your own, that you can update as you see fit.