As the original author (and copyright holder of source code) of code which I have chosen to release as GPL. I think I am correct in saying I can dual license my code and thus choose to enforce one lic or the other as I see fit (please correct me if I am wrong here)?
How would this work if I accept downstream contributions from other developers into my project. From the downstream perspective, the upstream contribution was made under the assumption that they were contributing to a GPL code base?... So would I have the right to distribute this 'contributed code' under my original dual license (i.e the other non GPL lic that I use in my dual licensing), I presume that I would have to get permission of the downstream author to lic their code in a non GPL way? So does this mean I have to enforce this by indicating I reserve the right to distribute contributed code under a dual lic (or more importantly non GPL) to contributing authors as the process of accepting their code into my project?
If an author does not want to agree to that (understandable), I presume this means that they cannot contribute upstream, however if they fork my repo (which is GPL) they can contribute so my dual licensing is redundant?