I can take a guess with respect to Linux: that's the kind of software where forcing companies to submit code back to it is enormously beneficial due to the need for an operating system to have drivers for vast ranges of different hardware.
Also, though, GCC got Objective-C support, and still has it, because the FSF told NeXT it would violate the GPL for them to attempt to make Objective-C a proprietary add-on to the GCC compiler, even if it wasn't literally linked with it. And a lot of GCC backends probably would have been kept proprietary by one or another hardware company if the license had allowed it.