From a business stand point of view, compatibility is God. New versions of .Net framework should never break applications working fine in previous version of .Net framework.
But from a developer of .Net framework’s point of view, compatibility is *evil*.
No matter how crappy your API is, you *cannot* fix it, because somewhere in the universe someone will depend on it.
You either don’t ship anything, or you keep shipping crap, and crap, and more crap.
Maybe it is OK. After all, we are living in a chaotic world.