Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modifying the AGPL License by adding restrictions is not allowed #11821

jmsuhy opened this issue May 19, 2018 · 12 comments

Modifying the AGPL License by adding restrictions is not allowed #11821

jmsuhy opened this issue May 19, 2018 · 12 comments


Copy link

@jmsuhy jmsuhy commented May 19, 2018

The AGPL license files had a restrictions added to it which I am pretty sure is not allowed by AGPL.
So it seems that you have either just made Neo4j Enterprise closed source - i.e. no longer AGPL - or you've made a mistake and accidentally added restrictions to it.

I am pretty sure the community would like to know what is going on with this.

"Commons Clause" License Condition

The Software is provided to you by the Licensor under the License, as
defined below, subject to the following condition. Without limiting
other conditions in the License, the grant of rights under the License
will not include, and the License does not grant to you, the right to
Sell the Software. For purposes of the foregoing, "Sell" means
practicing any or all of the rights granted to you under the License
to provide to third parties, for a fee or other consideration,
a product or service that consists, entirely or substantially,
of the Software or the functionality of the Software. Any license
notice or attribution required by the License must also include
this Commons Cause License Condition notice.

@eebus eebus added the operability label May 21, 2018
Copy link

@xizhao xizhao commented May 21, 2018

To try to get ahead of any misunderstandings, the AGPL doesn't "disable-itself" if exceptions are added from the original licensor. It simply becomes a new license.

The scope of license alteration restrictions (as well as these kinds of restrictions in all OSS licenses) is to disable the ability for "man-in-the-middle" sub-licensing, effectively ensuring that the license grant comes from the original copyright holder no matter how the software is conveyed. However, as the original copyright holder of the codebase is Neo, they can add whatever terms or exceptions best fit their original licensing intent for their commercial product -- the protections in the original AGPL prevents third parties from altering or sub-licensing those terms.

We're not dealing with a copy of the software here -- the whole file is the original license document provided by Neo. Sure it's not the original AGPL, but there's no way I'd call it "Enterprise closed source".

Copy link

@jmsuhy jmsuhy commented May 22, 2018

The issue at hand is that you can not add restrictions to AGPL then misguide the community and committers as to what is happening.

Not only does AGPL forbid this, it is not fair to committers and the community as a whole.

If your intention was to keep Neo4j free and open, then you should know your restrictions are not allowed by AGPL and we can continue the 'debate' in that direction.

I think you should be upfront with the community that helped make Neo4j what it is today.

Copy link

@digitalstain digitalstain commented May 22, 2018

Neo4j is a broad church. We have to balance the interests of our amazing community, our customers and the company too. We've done a lot of thinking about how to best align those interests in our licensing and made a choice to add the Commons Clause to the AGPL license. We think this is the best way we can ensure the long term viability of neo4j as both an open source project and as a commercial endeavour to keep that open source flowing.

Github issues probably aren't the best place to have detailed licensing discussions, and much as we appreciate the input and enthusiasm of the participants we're going to close it now. This is clearly deserving of a longer piece on why the license is changing and we'll get that published as soon as we can.

Thanks to everyone for sharing your views!

digitalstain referenced this issue May 22, 2018
Includes new copyright and Commons Clause addition

Also adds LICENSE.txt to some modules that didn't have it
Copy link

@Zappes Zappes commented Aug 23, 2018

I would expect the text of a a License to be subject to copyright, and the author probably has the right to forbid changes to the text. Without being a legal expert, I can't say if you may perhaps be allowed to copy the AGPL, add your clause and use the license under a different name like Neo4jPL - but I am quite sure that you can't change the text and re-publish it using the same name, i.e. "AGPL".

Copy link

@akhmerov akhmerov commented Aug 23, 2018

@Zappes it's more strict than it just being not allowed to call the license AGPL. The header of AGPL clearly states that modifying it is a violation of the FSF copyright:

Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

Therefore even using significant parts of AGPL is a copyright violation.

Copy link

@lsmith77 lsmith77 commented Aug 23, 2018

also whatever the copyright situation might be, its important to communicate clearly, which I think is what the issue creator is asking for. if you want to use the AGPL, then use it without modification. if you want a mix of the AGPL and common clause, then make sure you do so in a clear and transparent manner.

Copy link

@greve greve commented Aug 23, 2018

I've given my take on the Commons Clause at and

TL;DR: This turns anything licensed under it into proprietary software with a very vague, wide reaching license that establishes serious legal liability for all developers and users. It is the end of the commons that is formed by an Open Source community, project and companies.

I assume the CLA will cover this, but at the very least I would assume developers did not expect a

"Haha, we're taking this proprietary and by the way we're reserving the right to sue you in case you work with Neo4j professionally"

kind of move when they signed the CLA.

Yet that is precisely what this change seems to represent.

Copy link

@jmsuhy jmsuhy commented Aug 24, 2018

I wanted to chime in too. When the ticket was closed the way it was, I just gave up on it.

@greve , the other companies who adopted the 'commons clause' do not have AGPL licenses like Neo4j adopted for the enterprise edition, and which the clause was added to.

The other companies who adopted this 'commons clause' have non GPL licenses.

Redis: BSD
dGraph: Apache 2

The AGPL license states: If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term.

We contacted the free software foundation as well, I made sure to do my homework before submitting the original ticket.

Neo's intentions around this clause seem obvious to me. Their government sales team have already been trying to scare agencies from using neo4j enterprise under the open source license by referencing the commons clause. I'll write a blog post on this since most are not aware of some of this behavior.

I started working with the guys from GraphGrid on a way of ensuring Neo4j stays free and open to the community.

We already formed a non-profit called the GraphFoundation (, with an apache like governance model, which ensures no single company or person(s) control the future direction.

We invite the community to help us with this 'labor of love'.

I have nothing but respect for what Neo has built, they have a very talented team!

If more people call them out on this behavior, maybe things can change and they can embrace open source and support the community that made them who they are.

Just my 2 cents...

MrBerg added a commit to MrBerg/neo4j that referenced this issue Oct 15, 2018
Disregarding whether the AGPL actually allows tacking on the Commons Clause or whether it actually has any effect (neo4j#11821, neo4j#12027), it seems a good idea to actually mention the license(s) you want to apply whenever it/they is mentioned.
Copy link

@belarm belarm commented Nov 4, 2018

"Github issues probably aren't the best place to have detailed licensing discussions"

Then where is, exactly?

Copy link

@heathermeeker heathermeeker commented Nov 13, 2018

The provision in AGPL about removing restrictions (Section 7) does not conflict with Commons Clause, if the author of the AGPL code applies Commons Clause. There may seem to be a conflict, but only when Section 7 is read out of context.

In AGPL, “you” refers to the recipient of the code, in other words, the licensee. (See Section 0, which says, “Each licensee is addressed as "you".”) Section 7 is about what terms recipients -- meaning licensees -- of AGPL code can and cannot add when they redistribute the code to others. Section 7 starts by saying, “When you convey a copy of a covered work, you may at your option…” The entire Section was written to govern the actions of licensees only. The “conflicting” clause in Section 7 says, “If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term.” This is not a limitation on the licensor, who is not referred to as “you” anywhere in the document.

To be clear, I represent Neo4j and I am responding on behalf of Neo4j at their request.

Copy link

@akhmerov akhmerov commented Nov 13, 2018

@heathermeeker can you please also comment on the statement in the preface of AGPL:

Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

In your opinion, does the addition of the commons clause constitute a violation of FSF copyright? If not, can you please explain why?

Regarding the clause in Section 7: in your opinion, does "this License" refer to AGPL or AGPL + commons clause? The latter seems to contradict the definition in Section 0.

If "this License" does indeed refer to AGPL alone, do you disagree that Section 7 permits the licensees to remove the commons clause?

To me it seems to be the case because: the program as you (the licensee) received it contains contains a notice (the notice at the header of the document) stating that it is governed by this License along with a term that is a further restriction (commons clause) you may remove that term.

Please let me know what this interpretation misses.

Copy link

@belarm belarm commented Nov 23, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
10 participants