“contributor license agreement” is such a broad term, a CLA is not bad in all cases. There are plenty of CLAs that are not about one-way proprietarization of software. Examples of OK CLAs are “You agree that you actually have the right to contribute code” or “If you don’t specifically attach add a license header, the MIT license is being used”.
Obviously companies like Canonical use the term CLA to make their practices look less shady that it actually is.