Let me start by saying I have nothing against CLAs in general (I think FSF CLA is quite neat), but I don't like Canonical's CLA.
Having said that: I think should be pragmatic in our attitude to licenses and software. Let's say you are an upstart user and want to fix a bug in it. It would make upstart better and your life, as a user, easier. Why should CLA stop you from doing that? Just because Canonical might use it in some proprietary blob? It does not make sense.+Scott James Remnant
, you say that CLA is employment without a wage. It is not true! When you write code you are paid with the code you have written! If you improve upstart, you HAVE better upstart! Of course Canonical has even more of the better upstart:D
Of course relationship with Canonical is asymmetric. This relation can never be symmetric, even without CLA. Canonical put in significant resources to build upstart from nothing. They invested much time and money and gave you the product for free, you can always contribute to it, but you won't change the fact that Canonical is the main contributor. They gave up some rights that come from creating software, and licensed it under GPL.
The point of free software is not to create symmetric relationship, but to give you some fundamental rights. CLA does not take them away.
The fact is, that the very nature of free software protects us from abuse! If Canonical became evil, and started mistreating its contributors and users, they could always fork it! Look at what happened with OpenOffice->LibreOffice.
Of course some people will never contribute to proprietary software (RMS), but majority of people are quite pragmatic. The problem is a bad press around CLA. Many people hear about CLA and assume developers are being taken advantage of.
In my view CLA is unnecessary and should be taken under consideration, but I do not think it is a deal breaker.