GPL has little to do with communism, for 2 reasons. One is not very important. The other is crucial.

The lesser reason is the development model of free software: Open Source. To have the power over an open source project, you have to contribute. The money is good contributions, and the rewards are reputation and control over the project. Add in the inevitable political discussions about the direction the project, and you will see a rather capitalistic micro-society.

The greater reason is that sharing software is not the same thing as sharing food or shelter. Food and shelter are scarce. Sharing them mean having less of them. Software is abundant. Sharing it will not mean having less of it. Communism forces you to share scarce resources. The GPL forces you to share abundant resources. This is completely different.

Even then, the only circumstances in which GPL forces you to share is when you distribute "derived work". Meaning, if you have GPL software, you have the right to use it and modify it any way you like. Without sharing anything. If you distribute this software (modified or not), then, you have to release all of it. Mods included.

This is worth repeating: when you use GPL software, you don't have to share any of it. Even when you modify it. Remember the 4 freedoms: when you have a copy of some GPL software, you have: (0) the right to use it any way you like, (1) the right to study it and modify it any way you like (privately if you want to), (2) the right to share it, and (3) the right to share your mods. You can share, but you don't have too. If your company uses GPL software, and modify it for it's purposes, it doesn't have do release anything. This is very important. If you had to release your mod no matter what, this would be an attack to the freedom of thought.

You say the GPL is incompatible with our less than ideal world. Fair enough. Now, can you name one ideal which is compatible with our world? Even slavery isn't completely abolished. I mean, any political idea will have its opponents. The GPL embodies a political idea (not being a slave of your computer). Therefore, it has opponents. If your conclusion is that a software licence shouldn't embody political ideas, take a look at proprietary software licences. Restrictions like "thou shalt not study this software" are indeed quite political. Especially when this kind of restrictions is widespread —and it is. The only way to effectively oppose such a political idea is to go political yourself, and use GPL (or other free) software. If you don't care about either political ideas, you can wait and see. Which is fine. I do that for countless political ideas. You can't, however, oppose the GPL without being in the camp of proprietary software, at least to some extent.

You say the GPL is an "all or nothing" approach. It is not. It was specifically designed with our current world in mind, to make it go from proprietary software to free software, progressively. When the GPL wasn't up to this task, it was not used. The GNU C library, for instance, uses the LGPL. Meaning you can use the Glibc in proprietary software. This strategy better served the free software ideals than plain GPL. Of course, for any individual software, being GPL looks like "all or nothing". In general, however, the adoption of GPL software can't be but progressive.

I also suspect that you think the GPL is idealistic. Not pragmatic. You may think the BSD licence is pragmatic. This is a common view. Some people would like to distribute proprietary software with GPL code in it, only to find that they can't. They are pissed off by the idealism of GPL. Then they find they can do that with BSD software. They are pleased by the pragmatism of BSD, which let them do what they want. Hem. That was the point of view of a proprietary software vendor.

Actually GPL is way more pragmatic than BSD. Look at what the BSD licence says: "do whatever you want with my code, I won't ever oppose you or your political ideas". As neutral as it gets, and a bit weak. Many people who work on BSD licensed projects don't like proprietary software, but let their code be used in proprietary software anyway. The GPL, on the other hand says: "If you want to distribute this code, you will do it on my terms.". The GPL pragmatically serves an idealistic political agenda (most are, anyway).

Remember: the political agenda behind the GPL is freedom. Communism as it was implemented heavily restricted your freedoms. Remember Patrick Henry's "Give me Liberty, or give me Death!". When Richard Stallman asks us, repeatedly, to give up the convenience of proprietary software to have the freedom of, well, GPL software, he is closer to the ideals of the founders of America than communism.