> Forks in system components have a serious cost if they have ABIs or APIs on which a lot of things depend, and if those APIs diverge.
I agree, but I also define the ABI as pretty much the entire consumer-visible behaviour of the stack, rather than what's in a header file. Even if you do a straight like-for-like reimplementation, you're bound to end up with subtle differences in behaviour that will trip up unsuspecting users.