The GPL doesn't force you to make software better for everyone. People and communities are free to steal the project, make it better, and keep it all to themselves.
It forces you to contribute. Read what GPLv3 states:
- Include a copy of the full license text
- State all significant changes made to the original software
- Make available the original source code when you distribute any binaries based on the licensed work
- Include a copy of the original copyright notice
Watch Linus' interview with the Intel CEO where he talks about what open source is. He clearly mentions that it's a system where personal reasons end up benefitting everyone involved. When someone contributes code for their own need, collectively everyone ends up benefitting from the individual changes. It's not an altruistic system, nobody is doing this to please corpos like MIT license usually is.
> and keep it all to themselves
bit. The GPL allows you to make modifications to software, and then not publish the code of those modifications, as long as you don't distribute the software. If you only use the software in-house, you can make unpublished modifications as much as you like. That's what "keep it all to themselves" most likely referred to.
You only have to make it available to people you distribute the binaries to. If people with the binaries don't want it or if they want to keep it to themselves they are free to do so.
The reasons why corpos contribute back to upstream projects have nothing to do with the license. Usually it is just to shift the maintenance costs to the upstream developers.
They have also brought us much good, as without the GPL you wouldn't have OpenWRT or LineageOS, projects which typically depend on vendor-provided kernels or drivers in order to function.