57 comments

[ 4.1 ms ] story [ 126 ms ] thread
I’m torn on issues like this. I respect and support companies that intend to make their software free and open for personal and academic use, but charge for commercial use. But the licensing challenges surrounding support of this intent is tricky, and is often attacked by FOSS purists. I don’t think a good license exists for companies like Neo4j, MongoDB, Elastic, etc…and we need one.
Let’s discuss intent.

(I have contributed OSS in a minor way via a few original projects. I don’t run a business. I don’t have a dog in this fight. But imo ..)

If you start an OSS project, get contributions, then the thing becomes a hit, and then when money comes knocking on the door — investors want returns as it happens — and you then suddenly realize that you wanted a business after all. Then you will run into then “no good license” issue if you still want the help of free OSS patches, workers, and OSS monicker but need to protect business interests.

One the other hand, you can start with intent of making a business from your OSS project, and give non-transferable non-commercial license grants (of a foundational subset e.g. a single node graph db) to whoever wants to see or help you with the code. This scenario is (ianal) supported by existing commercial licenses. However this -may- limit the free flow of code and love and care by non-stakeholders of your commercial endeavor. I am not sure if anyone has ever tried this.

IMHO it’s because we have no real way to pivot with this stuff, and you said it well enough, I just want to add:

In my mind, you’re either an OSS person who “goes viral” and maybe gets picked up or a large “thank you” contrib to your “buy me a coffee” bucket.. or you’re actually trying to make a product but need to “market test” on the old (but hardly ever used anymore) “shareware” concept. Free market testing and occasional PRs is not a proper path to IPO or venture capital. It’s just that you didn’t realize it when you set out, or you did and you’re “meta gaming” the lifecycle.

With a (to be invented?) license that allows pivoting, I reckon it can be the kind of thing that happens, and is a potential known to any product with that license.

I just don’t see it being popular.

Not that it works especially well for patents, but I could imagine a RAND licensing scheme for open source contributors that triggers when a license transitions from open to closed.
I imagine readers who've never babysat open source projects think that you "get contributions" and "free OSS patches, workers" but those things, for 99.9% of projects are 1-illusory, 2-when and if they materialize, usually more cost than benefit.
Patches are not the only contribution, although I am sure that while not every OSS projects get many, the most visible ones do get also Patches. Anyway whatabout the early testing, bugfiling, documentation and helping others to understand how to use these projects. A lot of people get involved with these activites because they want to support an OSS Project and often these, (especially testing early releases and Developer advocacy) are more important than a patch contribution for the success of the project and the chance for it to become profitable.
I've never seen those provide value anywhere that's anywhere close to matching the costs incurred. They get diluted by:

- bugs that are actually free support

- feature requests for things that some company needs, but won't pay them to create

- pull requests you can't accept, need to review, etc.

This is so true. I don't really want people to contribute because it takes more time to assess what they did vs just mindlessly doing it yourself. If I had the time to review I would rather implement the feature or fix.
I don’t think it’s about it being a hit so much as the business dynamics have changed incredibly the last 13 years, when many of these projects took off. Open source as a business is incompatible with the Cloud.
This is an excellent point. Something changed. I'd argue that that however yet again brings us back to question of intent. There were pathways, RH for ex., that had worked as viable business models. But then cloud messed up with the well laid 'plans'.
It will be attacked by the FOSS purists and the corporatists who will scream “see the GPL is a cancer to commercial code”
*OSS purists
what’s the label for open source idealists who view IP/copyright as fundamentally incompatible with the mission?

i’m not talking about the MIT or “permissive license” crowd, but the smaller group which explicitly avoids providing a license because doing so would grant legitimacy to the idea that intellectual property is a thing which should be licensed/controlled.

tends to have an overlap in piracy circles and anarchists, probably because copyright is tied to the state/legal code. anyway i see enough of them now where the acronyms like FOSS, FLOSS, etc definitely don’t apply, but i’m not sure what label to use instead.

Maybe as a compromise between copyright and copyleft you could call then copycentre?
It's a good model but only when it starts like that from the beginnig. How many developers have contributed to that open source because of the liberal orginal license? Now they take all that work and make it commercial? Ok but in that case the rights should revert to the orginal contributors and the company should make licensing terms with them for the Commercial part.

Most of the controversies have been about this bait&switch Aproach.

Unless all your contributors signed copyright assignment to you (or you have no external contributors), you cannot just restrict license this way for copyleft licenses.
Ofcourse the contributors have signed copyright assignment to you (that's mostly standard practice) but they have done so for a project that at the time was with the liberal license. It may not be illegal but it's certainly abusive to then switch licenses because chances are those would not have signed the copyright away for free for a commercial product in the first place.
The real problem is that they picked the AGPL, which has the Further Restrictions clause. If they didn’t want that, then they should have picked something else. They could have created a custom license, but instead they proudly announced that they were choosing the AGPL, and they gained significant goodwill from that. This lawsuit demonstrates that they are either incompetent, or that they were attempting to use the AGPL in a fraudulent way.
Neo4J have a genuinely interesting product but they managed, throughout the decades, to hamper its adoption at every turn.
I know virtually nothing about the software, but I keep hearing over and over about the licensing problems. I doubt it’s the reason they want people to remember their name.
Yeah, if money and time is no object graph databases are a joy to use but being a commercial database is pretty much the death knell for support in different languages and frameworks.
Maybe with Business Source License?

That is essentially a proprietary license that will turn the licensed work to FOSS software after a given period of time. So that everyone can use and fork the software, but the original author can also make money out of it sustainably.

Thank you for bringing that license to my attention. I've been figuring out licensing for a project and out of all the ways I've looked into, this one fits my thinking the most.
> But if the license is referred to as the AGPLv3, then its Further Restrictions Clause – which allows users of APGLv3 licensed software to remove added licensing terms – should apply. If the court accepts that argument, it would be a significant reversal: PureThink would be allowed to fork Neo4J EE under the AGPLv3.

Huh, what if they removed that but still called it an AGPLv3 license?

Also does that apply to other GPL licenses like the normal GPL or LGPL?

If they had removed the Further Restrictions clause and still called it the AGPLv3, then they would have infringed on the FSF’s trademarks. The FSF grants anyone a license to use the language of the GPL, LGPL and AGPL licenses however they want, provided they either use the whole thing under the proper name, or they use only the parts they want under a name of their own.
Thanks!

That is an aspect the fine article omitted, alas. It explains the title as well as giving a reason why a private company couldn't release something under whatever license they like.

Basically: they can, but cannot give the license a trademarked name then.

I don't think that would change the actual license on the code though? Just that fsf could sue them over using that name
I don’t understand how this argument helps PureThink at all. Even if Neo4j is not allowed to refer to their license as “AGPLv3 with the commons clause as follows” then isn’t that between them and FSF?

PureThink isn’t a party to that dispute, and the inclusion of the clause was apparently stated at the beginning of the license that they are, presumably, subject to.

That said, what does look interesting to me is the whole ‘Additional Conditions’ section of AGPL which one could argue is still effective over what is written in the “Commons clause.” From that clause:

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

Since it does not limit the Additional Conditions section or say ‘notwithstanding’ that verbiage, then it seems it would still be subject to subsequent removal of the commons clause condition.

PureThink sued, it surely has some to say in the dispute.
"defendants PureThink and founder John Mark Suhy, who were sued by database biz Neo4j in November 2018, for alleged trademark and competition law violations."
That is what i meant. PureThink (got) sued. Ironically, i would guess they'd like to have nothing to do with the matter and get back to whatever it is they do. neo4j have lawers in the drawers, they can battle for years over this.
I’m talking specifically about the defense in the article that ‘if they include AGPLv3 in the title then it has to be AGPLv3’ due to the GPL/AGPL being a trademark owned by the FSF (this is argued in the expert report linked in the article.)

That defense somehow would require a trademark issue with the FSF to be remedied by granting a more lenient license to the third party (PureThink, the defendant here.)

As I understood it, AGPLv3's contains a clause that allows the users (Purethink in this case) to remove additional conditions added to the license. In this case to remove the Commons clause because it was added to the AGPLv3. So they can use the Software under pure AGPLv3.

| But if the license is referred to as the AGPLv3, then its Further Restrictions |Clause – which allows users of APGLv3 licensed software to remove added |licensing terms –

If they had called anything else than AGPLv3 (something that i understand is permissable) than they can not remove the extra restrictions because only the users of AGPLv3 can remove those.

If someone took the name Mikey Mouse. Stamped it on a dvd along with some +18 content, and then had the guts to sue Walt's brother and friends for taking that film, editing it to make it suitable for kids, i bet we would call that totally absurd. We aren't far off with this court case, unless i don't understand the issue.

And for those who undoubtly miss to understand the issue, they at neo4j mistakenly or knowingly put glucose in their sugar free advertised product, and pretend nobody should be allowed to remove the junk because they made the rest of the recipe and made sure to include glucose in the ingredients lists since the beginning.

Sadly they may win in the court since even hackernews readers don't immediately see the mascarade.

> mascarade

That word is redolent of Pride parades. It brings to mind a person in costume, with eye make-up.

That's how the defendant should dress going to court.
Apples to oranges. The Mouse is protected by copyright; GPL-ed software is protected by copyleft. When you distribute copyleft software, you're explicitly granting rights to your downstream users. You can't just decide one day to retroactively change the terms.

> And for those who undoubtly miss to understand the issue ...

Clearly, you misunderstand the issue. Neo4j specifically told people to modify their recipe however they please as long as the license is respected. Yes, this is the very license that allows this. It's a completely different (and undefendable) issue that they did so by committing the legal equivalent of copying code from Stack overflow and not even reading it. The law doesn't work like code does and you can't just claim, "Sorry, there was a bug. You will be forced to download a software update." when it comes to copyrights and contracts.

I've mi-spoken. Baral, please do explain the issue then.
AGPL3 is radioactive to users and businesses. Google absolutely refuses to use anything with it because there's no way to prove it can't become part of some service. If some FOSS is so wonderful, users will buy support contracts with something actually free like MIT, BSD-2, or Apache 2. Forcing people to do things another way and telling them what they can or can't do with "open" source isn't free or open. Call it what it is: idealistic purity tests of extremists.

I see AGPL and I see something to skip.

The (A)GPL licenses were designed for user freedom, not developer freedom. That indeed means that some companies might not want to use it, because they dont want to give their users access to the code. But for the people who prefer this license, that's not an unintended consequence, but the whole point.
I am unconvinced that either one is sufficiently free for end-users. It's been a bit since I've done a close reading, but doesn't GPL consider any linkage to create a derivative work? Dynamic linkage is something the end-user does.

If I'm an end-user and want to replace a GPL .so with a GPL-incompatible .so (maybe it has better performance or fewer bugs or whatever), and an installed GPL program uses that library, isn't it the case that the GPL forbids me from doing so unless I also have the right to re-license the .so as GPL?

(comment deleted)
The GPL doesn’t restrict the end user in that way. The GPL specifically allows the end user to use the software however they like. This includes combining it with software that uses an incompatible license.

The one restriction that the GPL does make only applies if you _redistribute_ your modifications. If you make modifications to the software or combine it with something else, then you are required by the terms of the GPL to license the result of those modifications under the GPL. But if you’ve modified the program by combining it with something that has license terms incompatible with the GPL then you won’t be able to do that. Since you cannot license the modified software under the GPL, you do not have permission to redistribute it.

(comment deleted)
See that's the problem. There are no modifications. I'm simply removing one piece of GPL software and replacing it with non-GPL software.

In any case, I have serious doubts about the legality of the GPL (as opposed to the LGPL) after Google v. Oracle.

That is a modification, but since you are redistributing it the GPL doesn’t limit you in any way. It specifically allows you to make any use of the software that you like.
How is it a modification? Replacing a dynamic library with another doesn't fit the definition under copyright law or under the GPL.

> To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy.

https://www.gnu.org/licenses/gpl-3.0.en.html

For the sake of continuing the hypothetical, let's say I do distribute it. Let's say I make a Linux distro that includes bash and a proprietary derivative of libedit with an API shim (fair use) to make it compatible with GNU readline.

What's interesting and potentially problematic is that the FSF clearly interprets dynamic linking to create a derivative work, but the GPL doesn't actually say that.

This is found in their commentary at the end of https://www.gnu.org/licenses/gpl-3.0.en.html:

> The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License.

Also see: https://www.gnu.org/licenses/why-not-lgpl.html

You should probably start with the FAQ: https://www.gnu.org/licenses/gpl-faq.en.html#combining

Swapping out one library for another compatible one is a modification of the program.

There is no reason to start with the FAQ. The FAQ is irrelevant. The FAQ is not part of the GPL and has no legal force whatsoever.

What part of the GPL brings swapping dynamically linked libraries within the definition of "modify"?

Because on first read, not only is such an activity not explicitly included, it is explicitly excluded — since you do not need copyright permission for program X to swap out library Y that it relies upon, see 17 U.S.C. § 117(a)(1) (excluding copies made in memory at runtime from the need for copyright permission), it can never be a modification to do so.

I don’t know why you bring up 17 U.S.C. § 117(a)(1); it is completely irrelevant to your question. It is an important thing to understand, but it doesn’t have any effect on the answer to the question you asked. I can’t even fathom why you would think that it does. Maybe it is some kind of motivated reasoning?

The FAQ is, however, quite relevant. It’s certainly not part of the text of the GPL, but your Question is very Frequently Asked, and thus the answer to it is right there (<https://www.gnu.org/licenses/gpl-faq.html#MoneyGuzzlerInc>).

    I'd like to modify GPL-covered programs and link them with the
    portability libraries from Money Guzzler Inc. I cannot distribute
    the source code for these libraries, so any user who wanted to
    change these versions would have to obtain those libraries
    separately. Why doesn't the GPL permit this? (#MoneyGuzzlerInc)
    
        There are two reasons for this. First, a general one. If we
        permitted company A to make a proprietary file, and company B
        to distribute GPL-covered software linked with that file, the
        effect would be to make a hole in the GPL big enough to drive
        a truck through. This would be carte blanche for withholding
        the source code for all sorts of modifications and extensions
        to GPL-covered software.
    
        Giving all users access to the source code is one of our main
        goals, so this consequence is definitely something we want to
        avoid.
    
        More concretely, the versions of the programs linked with the
        Money Guzzler libraries would not really be free software as
        we understand the term—they would not come with full source
        code that enables users to change and recompile the program.
This is a legal question. The statute, which is a legal authority, is absolutely relevant. The FAQ, which is not a legal authority and not part of the license and not even published by any relevant party, is absolutely irrelevant.
> Dynamic linkage is something the end-user does.

Is it the end-user telling the dynamic linker loader to load the .so, or is it the program you distributed to them?

> If I'm an end-user and ... isn't it the case that the GPL forbids me from doing so unless I also ...

No, it doesn't. You can do anything you want if you're the end-user. It's only when you distribute to others (outside your organisation) that the GPL kicks in.

Agreed. Google’s allergy to the AGPL should make people sit up and take notice. This is a license with teeth, so well written that even Google can’t find a way to subvert it. If you want to write software and give it away without any risk that Google will make a billion dollars off of your hard work without contributing anything back, the AGPL is the way to go.
It's not clear what the actual license says so people are speculating a bit. Something I found on the Wayback Machine is

"Neo4j Enterprise Edition is dual licensed under Neo4j commercial license as well as under the free Affero General Public License (AGPL) v3." [https://web.archive.org/web/20160327040441/http://neo4j.com/...]

That has a link to AGPL's Wikipedia page. So maybe that statement alone is enough to make it AGPL v3 even if they have a modified version of it elsewhere?

> 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 a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.

From the applicable version of their license[0]. Which appears to be the standard AGPL text, excepting the top and bottom. If it's dual licensed, then AGPL terms apply, which allow removing restrictions that get added.

0: https://github.com/neo4j/neo4j/blob/3.4/enterprise/neo4j-ent...

Seems simple, it's only AGPL (from their own license! [0]):

  All other non-permissive additional terms are considered "further
  restrictions" within the meaning of section 10.  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 a license document contains a further
  restriction but permits relicensing or conveying under this License, you
  may add to a covered work material governed by the terms of that license
  document, provided that the further restriction does not survive such
  relicensing or conveying.
[0]: https://github.com/neo4j/neo4j/blob/3.4/enterprise/neo4j-ent...
uf that would also mean that itext's additional clause is unnecessary:

> When using iText 7 Community under AGPL, you must prominently mention iText and include the iText copyright and AGPL license in output file metadata, and also retain the producer line in every PDF that is created or manipulated using iText.

https://itextpdf.com/how-buy/AGPLv3-license