I see that a lot of proprietary projects which make their source available operate with dual licensing model, with the open source version being licensed under GPL v3 and proprietary product being, well, proprietary. The rationale behind choosing GPL v3 is to often exclude other commercial entities from using their code without them disclosing their source code.
Let's have two entities, a company C and a programmer P. If P modifies C's GPL v3 code, then C cannot P's modificationsin their proprietary offering without releasing their proprietary code under GPL. Here P and C are on equal footing -- both of them own their own code, and their code can't be used by the other under a proprietary license without re-licensing. I believe this is what the point of GPL was -- if 100 developers contribute to the project, all 100's consent is required in any contract which doesn't use GPL.
However, if P additionally signs a CLA so that they may contribute code to the upstream project, don't they lose their power? Now C can use P's code in their proprietary product, but P still cannot use C's code in a proprietary product (and neither can anyone else besides C).
There are a lot of social issues I have with this, but I'd like to keep this question about (a) if I am correct about GPL's original "motivation", and (b) if I'm correct about CLAs being antithetical to that