Situation:
A web based project, providing network service is currently under GPL license. Some people have made a fork and are hosting their forked service without sharing the code, which original project do not want.
Objective:
Making sure that new version of the project can't be forked, closed and hosted as it currently is. Of course, current version will not change and this is not the objective here.
Means:
AGPL license seems to be the way to go, but that requires relicensing the code, however, as far as I understand, changing the license from GPL to AGPL could be done.
A few possibilities:
Actually changing the license of the project. This require an agreement of all main contributors, which, while possible, may be lengthy. One time small contributions from contributoirs not willing to switch could be reimplemented without much issues
Relicensing some core module or even a single important file in the code. This will require people willing to host a closed source version of the code to remove this part, which can be made quite hard.
Just stating in the license that starting from a certain commit, all code is now AGPL. This is the simplest solution in terms of effort and will render any new version fully unusable by closed source fork, and over time, all parts of the code would become AGPL. I'm not sure this is something that can be done.
Let me know what you think.