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.

Mathieu Westphal
  • 362
  • 2
  • 10
  • 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. – planetmaker Oct 30 '21 at 13:39
  • The copyright holders can change the license, but previous version is still covered by previous license. It this what you mean ? – Mathieu Westphal Oct 30 '21 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 Oct 30 '21 at 19:06
  • 1
    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 Oct 30 '21 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 Oct 31 '21 at 03:34
  • Honestly, this sounds more like a political problem. I'm guessing there was a fork for a reason. Most folks don't want to deal with forking a project, as there is overhead to everyone for maintaining a separate fork. Have you talked to these folks? If both projects still have the same goals, perhaps you can work it out so that everyone continues contributing to the main branch? – Brad Oct 31 '21 at 05:02
  • You also cannot delicense work of others, so if you ever accepted contributions (at least non trivial ones) and did not ask them to sign off the right to reticence it under an other license, you would need to rip that out of the code base before you are the sole owner of the code to decide to use a different license. – eckes Oct 31 '21 at 14:10
  • I'm confused. Even under the regular GPL, AFAIK, it should not be legal to fork the code and release it without following the source code obligations. The only way it would be possible is if they acquired the code under a different license. Either way, they shouldn't be able to use any new contributions that are under the GPL. That's the whole point of it as a copyleft license--it forces all subsequent releases to be open source. – trlkly Oct 31 '21 at 19:49
  • @trlkly GPL obligations trigger only on distribution of the binaries and/or source. In the SaaS scenario, there is no distribution so there are no obligations. This is exactly the issue the AGPL was written to cover. – Philip Kendall Oct 31 '21 at 20:25
  • @trlkly If you're asking about the original problem, the issue is that this downstream user is running a network service that doesn't involve distribution of GPL material, only the private execution of GPL code to run a publicly available service, so source-sharing obligations that accompany distribution do not apply because no downstream release is occuring. Or were you talking about a different issue raised in one of the comments? Or have I misunderstood the case you're concerned with? – apsillers Oct 31 '21 at 20:41
  • @apsillers Ah. This was not clear to me from the description. I read "hosting" as just meaning "hosting for download," not "running the software." – trlkly Nov 01 '21 at 05:13
  • @apsillers "Any particular person may choose to stop handing out new GPLv3 licenses" That's not what the GPLv3 says. It says, "Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License." It does not permit anyone to choose whether or not to offer a GPLv3 license. Once a copyright holder places a work under the GPLv3, every time anyone conveys that work, the recipient automatically gets a GPLv3 license from the person who placed the work under the GPLv3 license. – David Schwartz Nov 01 '21 at 05:25
  • Too many questions unrelated to the initial topic. I've reworded it a bit and will try to answer further questions if they are any. – Mathieu Westphal Nov 01 '21 at 14:37
  • i still find it generally confusing. @Philip's answer, to just relicense new versions, seen exactly the answer you request. and the 3 possibilities you list seem to contradict core concepts of what licensing even means... but i could be wrong. in short: why don't you simply follow his suggestion on the last paragraph? simply license every new code under agpl! – cregox Dec 03 '21 at 05:46
  • Yes, this is a correct answerm but the first point of his answer is not on point. – Mathieu Westphal Dec 03 '21 at 11:22

2 Answers2

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.

Philip Kendall
  • 19,156
  • 1
  • 57
  • 82
  • 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 Oct 31 '21 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. – Mathieu Westphal Nov 01 '21 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 Dec 03 '21 at 05: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.

Martin_in_AUT
  • 7,205
  • 10
  • 37
  • 1
    I do not want to prevent forking, I want to prevent close source forking. – Mathieu Westphal Nov 10 '21 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. – Martin_in_AUT Nov 10 '21 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. – Mathieu Westphal Nov 11 '21 at 11:16