If you are a software developer, forget the desktop. At least on Linux. See Miguel de Icaza’s post.
Fragmentation is not a problem with open source software. Fragmentation is the result of freedom being afforded to open source software developers. Fragmentation is on the producer side of the equation. Fragmentation is not the concern of non-technical consumers (heck they do not even know what fragmentation is in the first place). All non-techies care about is, it must work out of the box.
The problem lies when you want to market to non-technical consumers. On the desktop, you have to support top distros, and by then, you still have to ensure backwards compatibility between every release of those distros. Just a pain in the ***.
The problem is not with the Linux kernel either because it maintains ABI compatibility. The problem the way I see it is on userland, the ones running on top of the Linux kernel, aka the Linux distro.
In other words, the problem is with API compatibility, not ABI compatibility.
Of course, there is more to it than meets the eye.
It’s the ancient battle of coding: Do I have to program (compiler) or script (interpreter)? Pick your battle but you have to understand why you are doing what you are doing.
As Wired has noted, the battle has shifted from desktop to the web, not to mention the mobile space.