Hello everyone,

Michael Hunger and Philip Rathle of Neo4j have been working closely with Apache 
TinkerPop to get neo4j-gremlin/ back into the Apache TinkerPop distribution. 
For those that don't remember, the reason it was gutted was due to LICENSE 
conflicts. In order to find a solution to this problem, there have been 
numerous calls/emails with Neo4j, Apache TinkerPop PMC, the Apache TinkerPop 
mentors, and discussions on the general@incubator mailing list. Given all the 
recommendations, we have zero'd in on a solution that will allow Apache 
TinkerPop to provide neo4j-gremlin/ in the next release.

For those interested in the technical solution to the license problem, please 
see the following branch which is sync'd with TinkerPop master/:

        https://github.com/apache/incubator-tinkerpop/tree/neo4j-gremlin-apache

Everything builds, but there are some failing tests right now as 2 months have 
passed since we have worked with neo4j-gremlin/. I believe they are trivial 
fixes.

Here is the LICENSE trick that makes this all possible:

        
https://github.com/apache/incubator-tinkerpop/blob/neo4j-gremlin-apache/neo4j-gremlin/pom.xml#L39-L43
 (Apache2 Licensed)
        
https://github.com/apache/incubator-tinkerpop/blob/neo4j-gremlin-apache/neo4j-gremlin/pom.xml#L45-L53
 (AGPL/GPL Licensed)

What we need to do now is make it so that TinkerPop developers can (on their 
local machine) pull in Neo4j libraries for local testing. However, the 
apache-tinkerpop-x.y.z-source-release.zip will not have references to these 
libraries and thus, only references to the Apache2 Neo4j API. However, because 
the Neo4j Apache API has interface references, the package will compile (but 
will not test).

I'm not to keen on mvn, shell tricks, etc., but here are some ideas:

        1. We have a "bin/test-neo4j-gremlin.sh <boolean>" that inserts/removes 
the <dependency> stub into the pom.xml via some awk/sed-magic.
        2. We have a -D profile that does some magic? Perhaps simply does what 
1 above does, but within a MVN call.
                - i.e. bin/test-neo4j-gremlin.sh true; mvn clean install 
(remove the -Dtest-neo4j parameter); bin/test-neo4j-gremlin.sh false;
        3. If you are TinkerPop developer, you have to manually cut/paste the 
<dependency> into the neo4j-gremlin pom.xml if you want to test Neo4j.
                - we can have a "bin/strip-neo4j-test.sh" that will remove the 
<dependency/> so its less likely for developers to push the bad-licensed 
pom.xml.

Anywho -- looks like we are on our way. Here is what is on our  immediate plate:

        1. @Kuppitz (others?): Come up with a good solution to the pom.xml test 
<dependency/> issue articulated above.
        2. @Stephen: Get the IO tests working with neo4j-gremlin.
        3. @Michael: Look at the <dependency> naming conventions -- they are a 
bit "off":
        <groupId>org.neo4j</groupId> 
<artifactId>neo4j-tinkerpop-api</artifactId>
        <groupId>org.neo4j</groupId> <artifactId>tinkerpop-api-impl</artifactId>
                - also, should we go with 
<artifactId>neo4j-apache2-api</artifactId> as its general to anyone?
        4. @Marko: Make two Neo4jGraph implementations -- one that supports 
multi-properties and one that doesn't (don't have all this if/else checking in 
one implementation).
        5. @Marko/Stephen: Get the test suite for Neo4j up to par with latest 
TinkerPop3 -- I've put null-parameters here and there where test suite methods 
have changed and there is no obvious mapping.
        6. @Stephen: Get the Neo4jGremlinPlugin to dynamically pull in the 
Neo4j impl library via Gremlin Console/Server.

Here is what is required a little further down the road once all the code 
challenges above are complete:

        1. The Neo4j team needs to to publish their new API packages to Central 
Repo.
        2. TinkerPop will merge the neo4j-gremlin-apache/ branch into master/.
        3. Send promotional tweets with images of Gremlin and Neo4j iconography 
doing stuff. :)

Thanks Neo4j and mentors for the numerous hours you have dedicated to this 
problem. I'm exited to see neo4j-gremlin/ in TinkerPop3 GA.

Take care,
Marko.

http://markorodriguez.com

Reply via email to