If somebody creates a complex non business-critical piece of infrastructure, they have incentive to open source it. Because By doing so they can still use it as before, but get bug fixes and additional features for free from the community.
If I create an improvement for that open source code base, I also have an economical incentive to share that improvement back to the maintainers. Because I too can give it away while keeping it. If it gets merged, others maintain it for me, and all future updates to the software already contain my improvement. If I keep that improvement to myself, I have to patch all future versions of the software myself, which becomes harder over time as the software changes. Giving my patches back makes my life easier than not doing it.
I'm not against the idea of GPL, and the good intentions it has. It was necessary and good at the time. Some might still seem it necessary for philosophical or spiritual reasons, and that's okay. But most open source software that I'm aware of today, the majority of the open source revolution that the industry is experiencing right now (except for the honorable Linux) seems to be driven more by the economy of software sharing than the contractual requirement to do so.