neo4j / neo4j

Graphs for Everyone
http://neo4j.com
GNU General Public License v3.0
13.29k stars 2.38k forks source link

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

Closed jmsuhy closed 6 years ago

jmsuhy commented 6 years ago

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.

https://github.com/neo4j/neo4j/blob/3.4/enterprise/server-enterprise/LICENSE.txt

"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.

xizhao commented 6 years ago

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".

jmsuhy commented 6 years ago

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.

digitalstain commented 6 years ago

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!

Zappes commented 6 years ago

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".

akhmerov commented 6 years ago

@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. http://fsf.org/ 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.

lsmith77 commented 6 years ago

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.

greve commented 6 years ago

I've given my take on the Commons Clause at https://twitter.com/ggreve/status/1032520322170462208 and https://twitter.com/ggreve/status/1032657522400866305.

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.

jmsuhy commented 6 years ago

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 (https://graphfoundation.org), 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...

belarm commented 5 years ago

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

Then where is, exactly?

heathermeeker commented 5 years ago

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.

akhmerov commented 5 years ago

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

Copyright (C) 2007 Free Software Foundation, Inc. http://fsf.org/ 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.

belarm commented 5 years ago

Granted in all cases, but I believe you've missed something: “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.”

If 'you' in this sentence refers to the licensee, as you claim, then I (the licensee) am free to remove that clause.

On Tue, Nov 13, 2018 at 2:19 PM Meeker notifications@github.com wrote:

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.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/neo4j/neo4j/issues/11821#issuecomment-438401192, or mute the thread https://github.com/notifications/unsubscribe-auth/AASuSFbUWwiqKij0SfP9LbD2zq4qIYdOks5uuxsngaJpZM4UFmd9 .

-- We are a way for the cosmos to know itself. -Carl Sagan

jmsuhy commented 1 year ago

Only took 4 years….

https://sfconservancy.org/news/2023/feb/09/kuhn-neo4j-purethink-expert-report/

https://sfconservancy.org/docs/kuhn_expert-report-in-neo4j_5-18-cv-07182.pdf

jmsuhy commented 1 year ago

The SFC encourages everyone who cares about the rights and freedoms guaranteed by copyleft licenses to review the expert report above.

belarm commented 1 year ago

Thanks for continuing to work on this!

jmsuhy commented 11 months ago

There you go: https://www.fsf.org/blogs/licensing/protecting-free-software-against-confusing-additional-restrictions

jmsuhy commented 10 months ago

For those not aware, the free software foundation has sent Neo4j a cease and desist letter related to the addition of the commons clause while still using the FSF trademarks and preamble. I will attach the cease and desist to this ticket shortly. I think its important for the developers to know what is going on.

srbaker commented 10 months ago

neo4j was made well aware of this when I worked there, by me and others, repeatedly. It was one of the reasons I quit^1. The response I received internally was "We don't care."

I am very glad the SF Conservancy and the FSF are finally communicating about this.

  1. the other reason was that they got 6 of us deported because they couldn't be bothered to follow a very clearly written rule, which was communicated to them. Seems they have a systemic problem reading plainly written English, and following rules.
jmsuhy commented 8 months ago

Neo4j had their hand forced by the Free Software Foundation. It only took 5 years.

You missed a few tags however - specifically the 3.5 pre release tags under the enterprise directories.

https://github.com/neo4j/neo4j/commit/b6237ca4e31706b1efbd0f874d265117b84c12d5

jmsuhy commented 8 months ago

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

Copyright (C) 2007 Free Software Foundation, Inc. http://fsf.org/ 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.

Even better explanation from the Free Software Foundation:

https://www.fsf.org/blogs/licensing/protecting-free-software-against-confusing-additional-restrictions

jmsuhy commented 6 months ago

I submitted a GitHub ticket on May 19, 2018, concerning Neo4j adding the commons clause to the AGPL without changing the license name.

After five years of litigation and steadfastly defending the principles of the free software community, Neo4j was finally forced to address the commons clause issue.

For those who are not aware, the Free Software Foundation recently got involved in the litigation between myself and Neo4j related to the commons clause.

In November of last year, the FSF sent Neo4j a cease and desist relating to the commons clause.

Specifically, the Free Software Foundation demanded Neo4j to either remove the commons clause from the AGPL license or to rename the license.

Consequently, for version 3.4, Neo4j renamed the AGPL license to the "Neo4j Sweden Software License", backdating the change to May 18, 2018, a day before I opened the ticket. (which I find interesting)

The relevant change is documented in their GitHub commit: link.

Furthermore, for the 3.5 branch, Neo4j recently removed the tags that had the AGPL + commons clause.

3.5.0-alpha01, 3.5.0-alpha02, 3.5.0-alpha04, 3.5.0-alpha05, 3.5.0-alpha06, 3.5.0-alpha07, 3.5.0-alpha08, 3.5.0-alpha09, 3.5.0-beta01, 3.5.0-beta02, 3.5.0-beta03

I think this ticket can now be considered 'officially' closed now.

belarm commented 6 months ago

I'm still sad they made this choice, but at least they're not lying about it any more. Thanks for sticking with this.