Is Neo4j Apache License compatible?

377 views
Skip to first unread message

Harald Wellmann

unread,
Jan 15, 2012, 4:22:10 AM1/15/12
to ne...@googlegroups.com
True or false: copyleft is contagious, so if library A uses library B
which is GPLed, and if library A is distributed, then library A must
also be licensed under GPL.

If this is true, then how can Spring Data Neo4j be published under an
Apache License, whereas Neo4j is published under GPL?

If this is false, does that mean I can write a software component using
Neo4j and publish it under an Apache License?

Best regards,
Harald

Harald Wellmann

unread,
Jan 17, 2012, 3:48:05 PM1/17/12
to ne...@googlegroups.com
No reply - so there's no problem...?

Peter Neubauer

unread,
Jan 17, 2012, 3:55:47 PM1/17/12
to ne...@googlegroups.com
Harald,
IANAL, but my understanding is that you use Neo4j Community as you
would MySQL. That is, Neo4j is only viral when you redistribute the
software, not if you build a server.

the ASLv2 is compatible with the GPL in that the ASL is only about
attribution, and not forbidding the whole work to be GPLed (if the GPL
is kicking in).

For distribution, I think the system in question is not Spring, but
the system you build with SDN, so that the SDN distribution as a
toolbox is not a problem.

Cheers,

/peter neubauer

Google:    neubauer.peter
Skype:     peter.neubauer
Phone:     +46 704 106975
LinkedIn:  http://www.linkedin.com/in/neubauer
Twitter:    @peterneubauer
Tungle:    tungle.me/peterneubauer

brew install neo4j && neo4j start
heroku addons:add neo4j

Toni Menzel

unread,
Jan 17, 2012, 3:56:55 PM1/17/12
to ne...@googlegroups.com
Actually i think the point is to not ship ASL2.0 artifacts containing GPL Licensed code.
But I'm sure someone (at least Niclas, who i can ping if you want off list - if he's not following this list closely) will reply on this shortly. I know Peter is the most avid mailing list "any problem solver" i've seen yet - he will be here if he has an answer.

Other than that, I'd be very interested into this as well for an ASL2.0 licensed project

Toni Menzel

unread,
Jan 17, 2012, 3:57:48 PM1/17/12
to ne...@googlegroups.com
Ha! Here he is!
--
Toni Menzel Source

Harald Wellmann

unread,
Jan 17, 2012, 4:47:30 PM1/17/12
to ne...@googlegroups.com
Am 17.01.2012 21:55, schrieb Peter Neubauer:
> Harald,
> IANAL, but my understanding is that you use Neo4j Community as you
> would MySQL. That is, Neo4j is only viral when you redistribute the
> software, not if you build a server.

Hmm, I wasn't really thinking about a server. Suppose I'd start some
project like a routing engine based on an embedded Neo4j Community
database. That project of mine would have a compile and runtime
dependency on GPLed Neo4j.

I'd like to publish my project under an Apache License. The question is
whether or not I'd violate Neo4j's licensing terms by doing so.

>
> the ASLv2 is compatible with the GPL in that the ASL is only about
> attribution, and not forbidding the whole work to be GPLed (if the GPL
> is kicking in).

Yes, but that's the opposite question. You can add some stuff of your
own to an ASL component and publish the whole lot under GPL, but I'd
like use a GPL component in some stuff of mine and publish the whole lot
under ASL.

>
> For distribution, I think the system in question is not Spring, but
> the system you build with SDN, so that the SDN distribution as a
> toolbox is not a problem.
>

SDN = spring-data-neo4j? I have no intention of using it, I just noticed
that they published their project under ASL, like all the rest of
Spring, so my line of thought was, if they can do it, why can't I.

Unless there is a special licensing agreement between Neo4j and Spring
allowing just that for this special case...

Cheers,
Harald

Emil Eifrem

unread,
Jan 17, 2012, 4:53:29 PM1/17/12
to ne...@googlegroups.com
On Tue, Jan 17, 2012 at 13:47, Harald Wellmann <hwellm...@googlemail.com> wrote:
Am 17.01.2012 21:55, schrieb Peter Neubauer:

Harald,
IANAL, but my understanding is that you use Neo4j Community as you
would MySQL. That is, Neo4j is only viral when you redistribute the
software, not if you build a server.

Hmm, I wasn't really thinking about a server. Suppose I'd start some project like a routing engine based on an embedded Neo4j Community database. That project of mine would have a compile and runtime dependency on GPLed Neo4j.

I'd like to publish my project under an Apache License. The question is whether or not I'd violate Neo4j's licensing terms by doing so.

IANAL etc, but you can combine Neo4j Community with Apache licensed software to create a larger body of work (and users of that must abide by all the terms of the various components, in this case both GPLv3 and Apache 2.0), because the GPLv3 (and by association the AGPLv3) is compatible with the Apache License. See for example graph here (or consult an overpriced IP lawyer):


[snip]
SDN = spring-data-neo4j? I have no intention of using it, I just noticed that they published their project under ASL, like all the rest of Spring, so my line of thought was, if they can do it, why can't I.

Unless there is a special licensing agreement between Neo4j and Spring allowing just that for this special case...

There's no special agreement. Anyone can combine GPLv3 and Apache 2.0 licensed code.

</IANAL>

Cheers,

--
Emil Eifrém, CEO [em...@neotechnology.com]
Neo Technology, www.neotechnology.com
Cell: +46 733 462 271 | US: 206 403 8808
http://blogs.neotechnology.com/emil
http://twitter.com/emileifrem

Harald Wellmann

unread,
Jan 17, 2012, 5:38:30 PM1/17/12
to ne...@googlegroups.com
Am 17.01.2012 22:53, schrieb Emil Eifrem:
>
> IANAL etc, but you can combine Neo4j Community with Apache licensed
> software to create a larger body of work (and users of that must abide
> by all the terms of the various components, in this case both GPLv3 and
> Apache 2.0), because the GPLv3 (and by association the AGPLv3) is
> compatible with the Apache License.


Thanks Emil, that explains it. I would have bet from past experience
that GPLv2 and ASL 2.0 are not compatible, but I wasn't aware of the
changes in GPLv3 that now make them compatible.

http://www.gnu.org/licenses/license-list.en.html

Good to know :-)

Best regards,
Harald

Stevo Slavić

unread,
Jan 17, 2012, 7:45:36 PM1/17/12
to ne...@googlegroups.com
Sonatype, company behind Maven, have recently published a paper "Why You Should Care About Open Source Licensing" (see http://www.sonatype.com/people/2012/01/how-well-do-you-know-your-open-source-licensing/ for more details). Among other things, that paper mentions that GPLv3 is a strong copyleft license which requires one to license applications under same GPLv3 license even when using a single GPLv3 licensed component. Also when distributing such product, code has to be distributed as well which is a problem for commercial products, but not for you since you state that you want to open source your product anyway.

Since you also mention that you want to use Apache v2 license for your project you might be interested at what Apache Foundation has to say on Apache v2 and GPLv3 compatibility at http://www.apache.org/licenses/GPL-compatibility.html
Several sentences there drew my attention:
- "This licensing incompatibility applies only when some Apache project software becomes a derivative work of some GPLv3 software, because then the Apache software would have to be distributed under GPLv3."
- "We avoid GPLv3 software because merely linking to it is considered by the GPLv3 authors to create a derivative work."

I read this last one as, some GPLv3 authors could consider something as derivative work, so even though others maybe won't, to stay on safe side Apache Foundation decides to avoid GPLv3 software.
I'm just a developer confused with all these legal stuff too. If derivative work is something defined by US Law ( see http://en.wikipedia.org/wiki/Derivative_work ), how can it be matter of interpretation. I guess law is not perfect, as anything humans create.

Anyhow, I wish neo4j community edition was Apache v2 licensed.

Kind regards,
Stevo.

Harald Wellmann

unread,
Feb 5, 2012, 6:45:49 AM2/5/12
to ne...@googlegroups.com
After careful reading of the material quoted so far, I'm afraid I have
to reopen this thread.

The usage of "compatibility" in the FSF documents is rather misleading.
In plain English, I take "compatibility" to be a symmetric relation, and
[1] seems to support this view at first sight.

However, [2] is clearly asymmetric. "ASL is compatible with GPLv3" means
you can combine ASL and GPLv3 components in a larger work - but ONLY IF
you license the larger work under GPL.

Peter said earlier in this thread you can "use Neo4j Community as you
would MySQL".

I don't think this is true, at least there is a substantial difference
in the licenses.

The MySQL JDBC driver is licensed under GPLv2 but with a FOSS exception
[4], which states explicitly that you may use the GPLed library in a
larger work licensed under one of the listed FOSS licenses (including ASL).

If this were permitted by default, the exception would not be necessary.

So IMHO all of this implies that I cannot use Neo4J Community (or any
other GPLv3 library) in a work of my own and distribute the combined
work (including the GPLv3 libs) under ASL.

A weaker variant of this: My component uses Neo4J APIs, I distribute my
component (source and binaries) under ASL, NOT including the Neo4j libs.
(This is what SpringSource does with spring-data-neo4j (SDN).) To run my
component, users need to obtain Neo4j on their own.

This use case is permitted by section 4 (Combined Works) of the LGPLv3.
It is not mentioned very clearly in the GPLv3, and my interpretation is
that it is NOT PERMITTED, otherwise there would be no point in creating
LGPLv3 as a weaker variant of GPLv3 specifically permitting this case.

Therefore, I believe that SDN violates the GPLv3 license of Neo4j.

Now I don't really care about potential legal problems of other parties,
but I do care about my own work.

I do have some unpublished source code which uses Neo4j and which I'd
like to publish. It is my own policy and the policy of OSS communities I
normally work with to publish source code (and binaries) under ASL.

So it seems there are only two options: Publish my code under GPLv3
(outside of an ASL-bound community), or keep it private.

As things stand, I think I'll publish the work I've done so far under
GPL, against my own preference, and then stop using Neo4j in OSS
contexts because its copyleft restricts my freedom.

If Neo Technology wants to promote the use of Neo4j in OSS projects and
to remove all legal uncertainty, then I think the minimum you should do
is adding an OSS exception to the Neo4j Community license, but LGPLv3 or
ASLv2 would really be the preferred solution from that perspective.

[1] http://www.gnu.org/licenses/gpl-faq.html#WhatDoesCompatMean
[2] http://www.gnu.org/licenses/gpl-faq.html#FSWithNFLibs
[3] http://www.gnu.org/licenses/quick-guide-gplv3.en.html, New
Compatible Licenses
[4] http://www.mysql.com/about/legal/licensing/foss-exception/

Best regards,
Harald

Peter Neubauer

unread,
Feb 5, 2012, 8:39:14 AM2/5/12
to ne...@googlegroups.com

Harald,
Thanks for the research! Will bring it up with Emil etc and get back. We don't want you to be hampered by the community license in your oss work.

Send from a device with crappy keyboard and autocorrection.

/peter

Bion Howard

unread,
Jan 29, 2020, 2:24:59 PM1/29/20
to Neo4j
Hi, I'm currently struggling because I want to make an MIT open source medical research project with neo4j, was accepted to neo4j startup program, but can't actually use neo4j because of the GPLv3 viral nonsense.

Not sure what happens when my MIT licensed project connects via Apache 2.0 licensed driver to the GPLv3 virus we call Neo4j, but I'm assuming it means, SaaS startups can't use Neo4j right now. 

Aura has no ability to pause or autoscale the servers, and you pay $65 for 0.2 CPUs to run 24/7, which seems like a literal joke. 

 Guess I should just use postgres, faunadb, mongodb, or arangodb. Just really like Cypher and feel frustrated with license issues.

Also, it's not clear what happens after the startup program ends, because there is no information published about enterprise pricing for neo4j, but I heard it was like $35,000 per server, which is truly insane and impossible for a startup to afford.

You claim to love open source, but you use this viral GPLv3 license. You claim to love startups but leave us wondering what happens after the program ends...do we switch databases at that point?

Sorry to vent frustration here, but I thought I could just pick up Neo4j and use Cypher queries, but it's all stress about licenses, managing servers, guessing about hidden pricing ... not fun!

Bion


On Sunday, February 5, 2012 at 8:39:14 AM UTC-5, Peter Neubauer wrote:

Harald,
Thanks for the research! Will bring it up with Emil etc and get back. We don't want you to be hampered by the community license in your oss work.

Send from a device with crappy keyboard and autocorrection.

/peter

Benoît Simard

unread,
Jan 30, 2020, 6:28:59 AM1/30/20
to Neo4j
Hi,

All the neo4j official drivers are under the Apache 2.0 license, so they can be used with an MIT project, there is no problem on that.

About the database itself, there are two editions  :
* Community under the GPLv3
* Enterprise under a commercial license

And you can use Neo4j in two modes :
* As a server
* Or embedded in your code (for java application)

The GPL license is viral when you are using the embedded mode of Neo4j, because your code needs to be compliant with the GPL.
But it's not the case when you are using the server mode.
For a remote use with Apache v2 driver, there is really no problem (in fact that's why the drivers are using the apache license).

There is a separation between the license of your application code (+ the drivers), and the license of the remote database server.

So you can use Neo4j (community or enterprise) in server mode for your MIT project without any risk (for example, mysql community is also under a GPL license). 
But if you modify neo4j's code in the community edition, you have to put the code in GPL.

The only point you need to be focus on, is the distribution of your application.

And I have a last point to do about open-source, the GPL license is made by the Free Software Fundation, so GPL is free software. It respects the freedom to use, copy, study, modify the code (with a redistribution of the modifications) .

Hope it helps.

Cheers

Michael Hunger

unread,
Feb 1, 2020, 8:51:25 AM2/1/20
to ne...@googlegroups.com
As Benoit said,

there is no issue connecting an MIT app via the Apache Drivers to the GPL server. So you can continue to use that forever. And all this discussion is moot.

if you exceed the startup program (i.e 3M revenue, 50 employees) then a cloud service like Aura should be quite affordable (which starts right now at $60 a month, there will be cheaper tiers later) for your needs.

For the other databases you still have to pay for hosting (your cloud provider, or their cloud offering) and operations (one of your employees).

After all the engineers and other folks working on Neo4j also want to feed and house their families, same as you.

Michael


--
You received this message because you are subscribed to the Google Groups "Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email to neo4j+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/neo4j/e6f23a10-7476-4e06-92d4-57dcf2ae6701%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages