but both a and b, as far as i can tell from what you've written, are asking for copyright licenses, not copyright assignment.
That is, with (a) you're asking your contributors for the right to use, modify, and redistribute their code under the same terms that you've offered them for your code. no one is going to balk at that if they're sending you patches already.
and with (b), you seem to again be asking for a *license*, not an assignment. Canonical (according to the article) is actually asking contributors to sign over the proprietorship of the code itself, along with a broad patent grant, all for the privilege of having the code included in their version of the tools.