There's a similar explanation for Linux's success on servers: Linus is very strict on backward compatibility for the kernel.
But for Linux on desktop, the rest of the stack (GUI environments) is made by a bunch of CADT devs who don't care about backward compatibility is, so of course it failed..