
Neo4j Graph Database re-licensed under GPLv3 - LiveTheDream
http://blogs.neotechnology.com/emil/2011/04/graph-databases-licensing-and-mysql.html
======
emileifrem
Please note that this post talks about Neo4j Community. Neo4j is now split
into three editions:

* Neo4j Community, a high performance, fully ACID transactional graph database – licensed under the GPL

* Neo4j Advanced, adding advanced monitoring – licensed under the AGPL or a commercial license

* Neo4j Enterprise, adding online backup and High Availability clustering – licensed under AGPL or commercial

See more in the 1.3 announcement
([http://blog.neo4j.org/2011/04/neo4j-13-abisko-lampa-
released...](http://blog.neo4j.org/2011/04/neo4j-13-abisko-lampa-
released.html)) and our licensing guide (<http://neo4j.org/licensing-guide/>).

~~~
tzs
A couple perhaps nit-picks. First:

"As well as a slew of new features and improvements, we’re thrilled to
announce that the community edition is now entirely GPLv3 licensed –
permissive and accommodating to your needs!"

The GPL is not a permissive license as the term is usually understood in the
free and open source communities. I believe the FSF is careful to distinguish
GPL from permissive licenses.

Second: there are several places on the linked pages that compare this to
MySQL, basically saying you can do with it whatever you could do with MySQL as
far as the licensing goes.

MySQL is under GPLv2, not GPLv3, so the comparison to MySQL might mislead
people.

~~~
emileifrem
Re: permissive, I concur! Poor wording on our part. Permissive-r than AGPL
perhaps was our thinking. :) But you're absolutely correct that the GPL is not
a permissive license. Updated the post!

As for GPLv2 vs v3, in a high-level post like this they're reasonably
identical. v3 brings in some nice subtleties like ASL compatibility (a biggie
for us!) as well as better patent language. But in terms of use cases where
the "virality" kicks in, they're the same.

~~~
DarkShikari
You could simply do GPLv2 "or later" and get the best of both worlds.

------
vmind
Am I right in thinking that, with an embedded database such as Neo4j, I would
be required to use the server standalone and use the remote capabilities from
a separate JVM in order to escape the virility of the license? (And if
distributing, refer to their site for installation of the server?)

Though this is a much welcome change from AGPL or commercial.

------
emehrkay
I am using neo4j with an app that I am building, it is GREAT!

I'd love to see some of the enterprise features included in the community
version (clustering support like in orientdb). Maybe the community will come
together and make it happen :)

I often read (gloss over) how GPLv3 isn't as good as it may seem, can someone
fill me in?

~~~
andrewcooke
it's a licence, so i am not sure that judgements like "good" and "bad" apply.

the gpl means that you can use the library, but whatever you develop that
"works with it" must also use the gpl. that means that when you give or sell
your software to someone else, you have to grant them the rights that you
received when neo4j gave their software to you. in particular, you must give
them your source and you cannot restrict (much) what they do with that - they
can give away your source for free.

one qualification: unlike the agpl, the "works with it" phrase above doesn't
extend to client / server on a network. so if you use gpl code on a server, it
does not affect clients.

this is only a rough summary - read the licence for full details at
<http://www.gnu.org/licenses/gpl.html>

[edit: ps this is good news. i can't remember what the original licence was,
but it stopped me from using neo4j at some point, and i have also had to warn
others at times. this is in the context of web services where i suspect that
if people were successful they would be willing to pay to scale out; they just
don't want to pay up front if they are going to fail fast. so gpl seems like a
great fit.]

~~~
emehrkay
Thank you for explaining that. I will take the time to do a bit more research
on various licensing types.

~~~
andrewcooke
i don't know of anywhere with very good, simple explanations, unfortunately. i
think the problem is that (1) if you simplify a licence then you leave
something out which could be important and (2) no-one wants the liability
involved.

on the other hand, people recognise that and the major licences do try to be
fairly easy to read. but you do need to just "bite the bullet" and read them
through (and think what they mean).

this is a good place to start -
<http://www.opensource.org/licenses/index.html> (in particular, see
"License[s] that are popular and widely used or with strong communities" at
<http://www.opensource.org/licenses/category> for a list of the ones you
should focus on)

have fun :o/

------
CoffeeDregs
Perhaps OT, but can someone explain how graph databases are useful? I've read
through their site, but don't have a good handle on when I'd select a graph
database over an RDBMS, document store or KV store. Also, how is scaling one
of these different or the same as an RDBMS?

~~~
andrewcooke
i am not a great fan of them, so i am both biassed and inexperienced, but it
seems to me that they win out over SQL in cases where you would be doing
recursive queries. this is typically the case when you don't have much
structure in your database (everything is related to everything else in one
big table) and/or when you need to jump across an uncertain number of joins
(to answer questions like "how many steps does it need to get from here to
there?").

compared to KV they place more logic in the database (much like SQL v KV).

~~~
TheKollegger
I'd agree with Andrew's general characterization of graph database advantages.
Graphs are "whiteboard friendly" in as much as you can store data exactly as
you would likely sketch it up when thinking purely in your domain. Because the
graph structure is generic, you can even happily use it as a key-value or
document storage. And, multiple intersecting domains can co-exist within the
same graph. A graph could be a simple list, a map, a tree, or a complex
network of data. With Neo4j, you'd get that expressiveness with the confidence
of ACID behavior.

Beyond that, the Not-Only SQL options are a reminder to pick the storage that
fits your application, rather than fit your application to the storage you
have. Be domain appropriate.

I usually think in terms of: RDBMS - when aggregating data is important Graphs
- when relationships between records matters KV - when you have really simple
data, but gazillions of records Document - when you have complex, but
unrelated and possibly non-uniform data

Cheers, Andreas

------
mark_l_watson
That's cool. Neo4j is a good project. I grabbed one of the free single server
licenses the developers offered a few months ago, which is even better for me:
I can embed it in a single server web app. With the GPL I would need to run it
as a separate service.

