How does dual licensing work when other people contribute code to the GPL codebase? Either they should still own their contributions and you won't be able to sell them as non-GPL, or you need to make them sign some extra contract to assign their copyright to you... Or am I missing something?
They have to sign copyright over (or otherwise license their contributions to you in a way you can relicense). Many projects require you to sign over copyright if you contribute - e.g. Cygwin, and IIRC ZeroMQ too.
Others just require you to let THEM relicense it, e.g. web2py.
And other projects (mostly those that consider closing source at some point) just refuse contributions.