13

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.

15
  • You cannot revoke a license of code distributed. Those who received the code under GPL can continue to distribute it under GPL. You can only change it for your own distribution and future changes. Commented Oct 30, 2021 at 13:39
  • The copyright holders can change the license, but previous version is still covered by previous license. It this what you mean ? Commented Oct 30, 2021 at 18:11
  • There is no "the license." Each time a person receives your code, they automatically receive an individual license to use that code under whatever terms you have set (e.g. the GPL, the AGPL, etc.). Those individual licenses are irrevocable, but you can stop handing out new individual licenses by changing the terms.
    – Kevin
    Commented Oct 30, 2021 at 19:06
  • 2
    Any particular person may choose to stop handing out new GPLv3 licenses (including you), but you may not forbid existing recipients from distributing the code under the GPLv3 (which means the people they give it to may do the same giving-away under the GPL, and so on). In practice, this is not much different from just continuing to give it away yourself, unless the set of existing recipients is very small and/or all uniformly motivated to prevent other people (e.g. business competitors) from getting the code.
    – apsillers
    Commented Oct 30, 2021 at 20:16
  • The SaaS loophole strikes again! Honestly, this is why the Server Side Public License is freer than the Free Software Foundation's rules allow so-called "free software" to be.
    – nick012000
    Commented Oct 31, 2021 at 3:34

2 Answers 2

14

The most important point you need to consider is that software licenses are irrevocable - i.e. once you have released a specific version of the code under the GPL, it is available under the GPL for ever, and there's nothing you or anyone else can do about that.

This means that your first two options (relicensing some or all of the existing codebase from GPL to AGPL) won't do what you want it to do - the people that have received the existing codebase under the GPL will still be able to use it under the terms of the GPL.

Your third option - just stating that the code is licensed under the AGPL - you cannot do without the permission of all copyright holders, because you do not have permission to change the license on any code to which you are not the copyright holder. And even if you did do this, it still wouldn't stop people using the GPL code.

So, what can you can do? You can license any new code you write under the AGPL. At this point, anything which includes the new AGPL code could be used only under the terms of the AGPL; the people using the GPL version would then have two options if they wish to keep up with any new functionality you release: either to switch to using the AGPL version with all that implies, or to fork the code from the last GPL version and do independent development of their own.

3
  • 3
    I think the OP understood all of this already. He wants to make sure "that new version of the project can't be" used, he's not talking about the already released versions. And I even understood his third approach to be that "starting from a certain commit, all [newly contributed] code is now AGPL". Saying that "over time, all part of the code would become AGPL" he clearly knows that the old parts of the code still would be GPL-licensed.
    – Bergi
    Commented Oct 31, 2021 at 20:11
  • 1
    Yup, exactly, maybe that was not clear enough in my question or may be the tilte was worded incorrectly, I will rewrite the question so it is more clear, but I can't accept this answer. Commented Nov 1, 2021 at 14:33
  • @bergi given op's update, i don't pers do understand all of this. every single version of every single file have an irrevocable license. and, as far as i understand (i'm no lawyer), GPL allows forks to become AGPL, but not the other way around. it seem counter intuitive, but from the big ones, the less permissive licenses make software more free, and that's indeed the point that op seem to understand.
    – cregox
    Commented Dec 3, 2021 at 5:53
-2

What you are asking is a solution which is moving away from the 'nice' open source path.

You are asking for a solution which prevents forking, but forking is one of the core freedoms of OSS. The only mainstream license I am aware of that does that is CC-BY-ND (or CC-BY-NC-ND), but there are good reasons why Creative Commons licenses are not ideal for software.

The other path I see to fulfil your requirement is the SSPL license, but again SSPL is highly disputed in the OSS community, it is not considered an open source license. SSPL forces those, who use the licensed code as SaaS, to offer their source code to everyone. This is different from AGPL, where the source code only needs to go to those that are using the SaaS service. But again, you are not going to find a lot of friends by going the SSPL route.

I feel that you might be stuck between a rock and a hard place, and if you want to achieve the objectives stated in your question there is no nice way out.

3
  • 1
    I do not want to prevent forking, I want to prevent close source forking. Commented Nov 10, 2021 at 12:40
  • @MathieuWestphal GPL alone is enough to prevent forking into closed source. So if you don't want to prevent forking as such, then you can ignore the 2nd paragraph of my answer. The rest of the answer still seems OK. Commented Nov 10, 2021 at 12:53
  • 1
    No it doesn't. GPL, LGPL and AGPL never prevent close source forking, they prevent distribution (in some way or form) of close source fork. GPL does not prevent the distribution of the service in a web form of a close source fork, which AGPL does. Commented Nov 11, 2021 at 11:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.