What does everyone else think? I think that Rene and team can move forward with their proposal.
On Tue, Jul 23, 2013 at 4:59 PM, René Peinl <rene.pe...@hof-university.de> wrote: > Hi Ryan, > yes, I would appreciate your thoughts on our plans. (see below) > Regards > René > > -----Ursprüngliche Nachricht----- > Von: René Peinl [mailto:rene.pe...@hof-university.de] > Gesendet: Montag, 22. Juli 2013 22:41 > An: 'Ryan Baxter' > Betreff: WG: Review Request: Alternative database backend based on graph > database neo4j > > Hi Ryan, > maybe you had no time to answer my last email due to the problems with > Shindig 2.5 but I would be really interested in your opinion on my proposal. > Regards > René > > -----Ursprüngliche Nachricht----- > Von: René Peinl [mailto:rene.pe...@hof-university.de] > Gesendet: Freitag, 19. Juli 2013 09:41 > An: 'dev@shindig.apache.org' > Cc: Florian Holzschuher (fholzschuh...@hof-university.de); > michael.hun...@neotechnology.com > Betreff: AW: Review Request: Alternative database backend based on graph > database neo4j > > That's still subject to discussion. As you see, we are pursuing two goals: > contribute to the Shindig project and do some research. > Our first comparison was between SQL, Cypher, Gremlin and neo4j native API > regarding speed and maintainability of the code. We found out, that Cypher > is a good compromise. > For this next step we want to experiment with different network protocols > and payload types. In our first comparison, we found out that the existing > REST interface of neo4j is not performing very well. Neo technologies has > enhanced it since then, but we envision comparing a Web socket connection > with the existing http connection and a raw TCP socket connection regarding > speed. For the payload we are looking at JSON (currently used in neo4j), > BSON and an own object serialization. > The last comparison will deal with the commands passed from Shindig to > neo4j. The obvious choice is Cypher, since this is becoming the default > language for neo4j, but we also want to experiment with kind of stored > procedures (not currently supported in neo4j), where we only transfer the > name of the query and the parameters. The implementation could then be > Cypher or native api on the neo4j side. > Any suggestions? > Regards > René > P.S.: Another interesting thing would be to experiment with asynchronous, > non-blocking database connections, but I guess that doesn't make sense, as > long as the rest of Shindig uses blocking calls. > > -----Ursprüngliche Nachricht----- > Von: Ryan Baxter [mailto:rbaxte...@apache.org] > Gesendet: Donnerstag, 18. Juli 2013 22:31 > An: dev@shindig.apache.org > Betreff: Re: Review Request: Alternative database backend based on graph > database neo4j > > Great. So what technically will the code that is contributed to Shindig do? > How does it talk to the neo4j backend? > > On Thu, Jul 18, 2013 at 9:25 AM, René Peinl <rene.pe...@hof-university.de> > wrote: >> Dear Ryan, >> fair question. The main contribution is to allow usage of neo4j as an >> alternative database backend which improves performance significantly >> in some areas compared to ORM and MySQL (see >> http://www.edbt.org/Proceedings/2013-Genova/papers/workshops/a29-holzs >> chuher >> .pdf). >> In addition to that, we have also implemented some of the missing >> features from Open Social 2.0 like adding friends to the friend >> network and some additional features not mentioned in the Open Social >> specification, but state-of-the-art in social networks like friend and >> group recommendations based on friends in common and groups of friends. >> The limitation is, that these do only work or are only tested with >> neo4j backend. >> Regards >> René >> >> -----Ursprüngliche Nachricht----- >> Von: Ryan Baxter [mailto:rbaxte...@apache.org] >> Gesendet: Mittwoch, 17. Juli 2013 02:32 >> An: dev@shindig.apache.org >> Cc: Ate Douma; Peter Neubauer; Florian Holzschuher >> Betreff: Re: Review Request: Alternative database backend based on >> graph database neo4j >> >> The split proposal sounds like a good approach, but what exactly would >> be contributed to Shindig? >> >> On Tue, Jul 16, 2013 at 9:46 AM, René Peinl >> <rene.pe...@hof-university.de> >> wrote: >>> Dear Ate, dear Shindig developers, >>> it's been some time since this discussion because we were a bit >>> frustrated and the project on our side was frozen for some time. >>> Fortunately, I came up with an idea of how to circumvent this problem >>> and this time wanted to do the legal check BEFORE we start the coding. >>> >>> The current code has a direct compilation dependency on either neo4j >>> directly or at least their REST/JSON wrapper, which is also GPLv3 >> licensed. >>> That seems to be the problem. >>> We therefore propose to split our code into two parts. One part >>> should become part of the Apache Shindig project and will be licensed > APLv2. >>> The other part will directly use neo4j and therefore be licensed >>> under >>> GPLv3 and published on sourceforge or somewhere. Between those two >>> parts there will be only network communication, no compilation > dependency. >>> >>> Could somebody from the core team please confirm, that >>> a) this new proposal will have no licensing problem (my German >>> lawyer, who is specialized in OSS licensing confirmed that, but the >>> ASF may still see it >>> differently) >>> b) the community is still interested in the neo4j backend as an >>> option for Shindig >>> >>> Otherwise, we would not invest any more time in this issue. >>> Regards >>> René >>> >>> -----Ursprüngliche Nachricht----- >>> Von: Ate Douma [mailto:a...@douma.nu] >>> Gesendet: Mittwoch, 27. März 2013 15:22 >>> An: dev@shindig.apache.org >>> Cc: Peter Neubauer; René Peinl; Florian Holzschuher >>> Betreff: Re: Review Request: Alternative database backend based on >>> graph database neo4j >>> >>> Sorry about top posting (and dropping legal-discuss@) but as we >>> didn't get any feedback yet on the below question from >>> legal-discuss@, I've dived into it myself a bit further. >>> >>> I already came to the conclusion (and discussed this internally with >>> another ASF >>> member) that the current proposed contribution which directly uses >>> Neo4J >>> GPL3 licensed APIs cannot be allowed, as that (source) dependency >>> will enforce the >>> GPL3 license upon this contribution as a whole, optional or not. >>> >>> The possible 'workaround' of using a 3rd party library like >>> spring-data-neo4j >>> (only) which is ALv2 licensed I am also very doubtful about, because >>> that library itself has direct usage and dependency on the Neo4J >>> APIs, so it really is only 'hiding' the same problem. >>> If this is a correct assumption, and I created an specific JIRA >>> question [1] for legal-discuss@ for it, then the spring data >>> 'workaround' is also tainted and not to be allowed either. >>> >>> I've also brought this forward to someone at Apache Camel which >>> intend to (but hasn't yet) release a Camel Neo4J component, and it >>> looks like they will decide also that Neo4J cannot be supported after >>> all, at the >> ASF. >>> >>> Pending the resolution of [1], it now seems doubtful to me Apache >>> Shindig can accept the neo4j support contribution. >>> If this becomes the case, I see two possible solutions, in preferred >>> order (besides dropping it): >>> >>> a) NeoTechnology provides an additional (probably API only) library >>> of its own under an ALv2 compatible license, which can be used to >>> create integrations like these. This would be the most practical and >>> beneficial solution IMO, similar to for instance the MongoDB (AGPL3 >>> licensed) mongodb-java-driver library which is >>> ALv2 licensed, see [2]. >>> >>> b) Provide the Shindig Neo4J support in a separate project outside >>> the ASF, maybe at Apache Extras [3]. Downside of this of course is >>> that alignment with Apache Shindig itself will be more difficult and >>> likely trailing the development @Shindig. >>> >>> I'll keep the list noted on any progress or conclusion of [1]. >>> >>> Regards, Ate >>> >>> [1] https://issues.apache.org/jira/browse/LEGAL-162 >>> [2] https://github.com/mongodb/mongo-java-driver >>> [3] http://community.apache.org/apache-extras/faq.html >>> >>> On 03/11/2013 11:09 AM, Ate Douma wrote: >>>> Now replying again, but to the proper mail address, see inline below. >>>> >>>> Cheers, Ate >>>> >>>> On 03/11/2013 11:05 AM, Ate Douma wrote: >>>>> Another forward of an incorrectly addressed email for >>>>> legal-discuss@ >>>>> >>>>> On 03/11/2013 09:41 AM, Peter Neubauer wrote: >>>>>> Also, >>>>>> keep in mind that only the enterprise components of Neo4j are >>>>>> AGPL, the community edition, which I believe is the most >>>>>> interesting part here, is GPL. >>>> >>>> That is useful information indeed. Thanks for correcting me in this! >>>> >>>> So for this case at hand I assume we only need to consider the >>>> possibilities to use the GPL3 licensed community edition of neo4j. >>>> >>>> The question then is if at the ASF we may reference and explicitly >>>> use >>>> GPL3 licensed APIs in our AL2.0 licensed code, in an optional >>>> module, which also requires these GPL3 libraries at runtime. >>>> Even if we don't distribute those 3rd party GPL3 libraries ourselves. >>>> >>>>>> >>>>>> /peter >>>>>> >>>>>> >>>>>> Cheers, >>>>>> >>>>>> /peter neubauer >>>>>> >>>>>> G: neubauer.peter >>>>>> S: peter.neubauer >>>>>> P: +46 704 106975 >>>>>> L: http://www.linkedin.com/in/neubauer >>>>>> T: @peterneubauer >>>>>> >>>>>> Graph database introduction book for the uninitiated - >>>>>> http://graphdatabases.com Neo4j questions? Please use SO - >>>>>> http://stackoverflow.com/search?q=neo4j >>>>>> >>>>>> >>>>>> On Mon, Mar 11, 2013 at 9:22 AM, René Peinl >>> <rene.pe...@hof-university.de>wrote: >>>>>> >>>>>>> Dear Apache legal advisors, dear Shindig developers, as you can >>>>>>> see from the discussion below, we have a possible license >>>>>>> conflict between AGPL and APL v2. >>>>>>> We want to integrate code that uses neo4j, a graph database which >>>>>>> is licensed under AGPL, into Shindig. From my perspective it is >>>>>>> not necessary to include any neo4j binaries nor code, but I'm not >>>>>>> sure how this affects compilability. Maybe we can only use the >>>>>>> REST API then and don't offer to run neo4j in embedded mode. >>>>>>> I'm not a lawyer nor a licensing specialist, so please advise on >>>>>>> how to proceed. Maybe we can find a workaround that ensures we >>>>>>> are conforming to the licensing terms and still get the new >>>>>>> functionality >>> into Shindig. >>>>>>> One suggestion that seems a good one was to check how Apache >>>>>>> Camel deals with this issue. >>>>>>> Regards and many thanks for clarification in advance René >>>>>>> >>>>>>> -----Ursprüngliche Nachricht----- >>>>>>> Von: Ate Douma [mailto:a...@douma.nu] >>>>>>> Gesendet: Montag, 11. März 2013 08:49 >>>>>>> An: dev@shindig.apache.org >>>>>>> Cc: Peter Neubauer >>>>>>> Betreff: Re: Review Request: Alternative database backend based >>>>>>> on graph database neo4j >>>>>>> >>>>>>> On 03/10/2013 11:59 PM, Matt Franklin wrote: >>>>>>>> On Sunday, March 10, 2013, wrote: >>>>>>>> >>>>>>>>> Thanks for the insight Ate. >>>>>>>>> >>>>>>>>> Rene, I think we should take Ate's suggestion and send an email >>>>>>>>> to legal-discussion@ (please CC shindig-dev@). If they say it >>>>>>>>> is OK than we continue the discussion about integrating the patch. >>>>>>>> >>>>>>> >>>>>>> Although the answer from Peter Neubauer / neotechnology is >>>>>>> accommodating on this matter and seems to indicate *they* might >>>>>>> think this is not a problem, reading the AGPL [1] license tells >>>>>>> me >>> something differently. >>>>>>> I definitely would like this contribution to be acceptable, but >>>>>>> we must be very sure we're not opening a can of worms here. >>>>>>> >>>>>>>> >>>>>>>> I agree that legal should be consulted if we intent to ship a >>>>>>>> war or other archive with any neo4j (or other agpl) licensed >>>>>>>> binaries >>> included. >>>>>>> I don't think we can do that anyway. AGPL is a variant of GPL, >>>>>>> and we're not allowed, by ASF policy, to distribute any GPL artifact. >>>>>>> >>>>>>>> >>>>>>>> As a first mitigation step, why don't we make this a separate >>>>>>>> maven module and only ship the source and non-inclusive jar? It >>>>>>>> should not be a problem to ship a jar and source that only >>>>>>>> references the neo4j libs as runtime dependencies. >>>>>>> That might be a possibility to investigate. As Chris noted in >>>>>>> another email, it might be doable as Camel seemingly also has a >>>>>>> neo4j component. >>>>>>> >>>>>>> But also note: it will also depend on the type of reference such >>>>>>> an optional module uses. If it requires explicit Java imports and >>>>>>> direct usage of the neo4j APIs, this might qualifies as what is >>>>>>> called in the AGPL 'Corresponding Source'. >>>>>>> Especially as neo4j and Shindig provide and expect 'Remote >>>>>>> Network Interaction' >>>>>>> for which the AGPL is especially created to enforce its license >>>>>>> to downstream users. IMO this can lead to a conflict with the >>>>>>> AS2.0 license, to possibly not even be allowed distribution under >>>>>>> that license from within the ASF, or not even its sources be >>>>>>> checked into svn... >>>>>>> >>>>>>> But IANAL so indeed this should be run through legal-discuss@ first. >>>>>>> >>>>>>> [1] http://www.gnu.org/licenses/agpl-3.0.html >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Mar 9, 2013, at 7:56 AM, René Peinl >>>>>>>>> <rene.pe...@hof-university.de> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Dear Ate, >>>>>>>>>> thanks for your comments. I already thought about this and >>>>>>>>>> asked the >>>>>>>>> guys from neo technologies. Here is the answer from Peter Neubauer. >>>>>>>>>> >>>>>>>>>> in principle (IANAL) it is ok to have ALv2 licensed code >>>>>>>>>> binding to GPL >>>>>>>>> code. In runtime, the user will not be shielded from the GPL >>>>>>>>> core, which means the runtime will have GPL characteristics >>>>>>>>> when you plug in >>>>>>> Neo4j. >>>>>>>>> That is exactly the intent, and should be ok. The bindings-code >>>>>>>>> is development-time Apache license, regarding contributions and >>>>>>>>> copyright etc, so I think this should be ok. >>>>>>>>>> >>>>>>>>>> I'm not quite sure if that answers your question. I can >>>>>>>>>> further >>>>>>>>> investigate if necessary. >>>>>>>>>> Regards >>>>>>>>>> René >>>>>>>>>> >>>>>>>>>> -----Ursprüngliche Nachricht----- >>>>>>>>>> Von: Ate Douma [mailto:a...@douma.nu] >>>>>>>>>> Gesendet: Freitag, 8. März 2013 14:18 >>>>>>>>>> An: dev@shindig.apache.org >>>>>>>>>> Betreff: Re: Review Request: Alternative database backend >>>>>>>>>> based on graph >>>>>>>>> database neo4j >>>>>>>>>> >>>>>>>>>> Just from the peanut gallery, but neo4j is AGPL licensed. >>>>>>>>>> Normally any database backend access which is abstracted away >>>>>>>>>> behind >>>>>>>>> 'plain' >>>>>>>>>> JDBC interfaces are allright to use, commercial versions or >>>>>>>>>> otherwise >>>>>>>>> licensed, because the end-user would have the option to choose >>>>>>>>> whatever >>>>>>>>> (compatible) database they want to use. >>>>>>>>>> >>>>>>>>>> However with neo4j this seems different. Even with only >>>>>>>>>> optional support >>>>>>>>> for neo4j, the neo4j integration might require explicit neo4j >>>>>>>>> (Java) APIs and dependencies? I haven't reviewed the code for >>>>>>>>> this, but if it imports neo4j APIs then their AGPL license can >>>>>>>>> be too invasive and then possibly not acceptable for uses >>>>>>>>> within our >>>>>>>>> AL2.0 licensed >>>>>>> codebase. >>>>>>>>>> Or even if that could be allowed, I would make sure to check >>>>>>>>>> and ask >>>>>>>>> (legal-discuss@ etc.) if it would be acceptable from ASF policy > POV. >>>>>>>>>> >>>>>>>>>> Regards, Ate >>>>>>>>>> >>>>>>>>>> On 03/07/2013 07:46 PM, Henry Saputra wrote: >>>>>>>>>>> This is good news. >>>>>>>>>>> >>>>>>>>>>> One immediate comment is about the package name. >>>>>>>>>>> Would it be possible to put it under org.apache.shindig >>>>>>>>>>> rather than the de.hofuniversity? >>>>>>>>>>> >>>>>>>>>>> This would make the contributions uniform like from other >>>>>>>>>>> companies and organizations. >>>>>>>>>>> >>>>>>>>>>> - Henry >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> 2013/3/6 René Peinl <rene.pe...@hof-university.de> >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> ----------------------------------------------------------- >>>>>>>>>>>> This is an automatically generated e-mail. To reply, visit: >>>>>>>>>>>> https://reviews.apache.org/r/9773/ >>>>>>>>>>>> ----------------------------------------------------------- >>>>>>>>>>>> >>>>>>>>>>>> Review request for shindig. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Description >>>>>>>>>>>> ------- >>>>>>>>>>>> >>>>>>>>>>>> Review for Shindig-1911 >>>>>>>>>>>> Alternative database backend based on graph database neo4j >>>>>>>>>>>> Any comments welcome. We are committed to further improve this. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> This addresses bug Shindig-1911. >>>>>>>>>>>> https://issues.apache.org/jira/browse/Shindig-1911 >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Diffs >>>>>>>>>>>> ----- >>>>>>>>>>>> >>>>>>>>>>>> /trunk/java/neo4j-backend/pom.xml PRE-CREATION >>>>>>>>>>>> >>>>>>>>>>>> /trunk/java/neo4j-backend/src/main/java/de/hofuniversity/iis >>>>>>>>>>>> y >>>>>>>>>>>> s >>>>>>>>>>>> /gra >>>>>>>>>>>> phb >>>>>>>>>>>> ackend/Constants.java >>>>>>>>>>>> PRE-CREATION >>>>>>>>>>>> >>>>>>>>>>>> /trunk/java/neo4j-backend/src/main/java/de/hofuniversity/iis >>>>>>>>>>>> y >>>>>>>>>>>> s >>>>>>>>>>>> /gra >>>>>>>>>>>> phb >>>>>>>>>>>> ackend/GraphAPIModule.java >>>>>>>>>>>> PRE-CREATION >>>>>>>>>>>> >>>>>>>>>>>> /trunk/java/neo4j-backend/src/main/java/de/hofuniversity/iis >>>>>>>>>>>> y >>>>>>>>>>>> s >>>>>>>>>>>> /gra >>>>>>>>>>>> phb >>>>>>>>>>>> ackend/GraphConfig.java >>>>>>>>>>>> PRE-CREATION >>>>>>>>>>>> >>>>>>>>>>>> /trunk/java/neo4j-backend/src/main/java/de/hofuniversity/iis >>>>>>>>>>>> y >>>>>>>>>>>> s >>>>>>>>>>>> /gra >>>>>>>>>>>> phb >>>>>>>>>>>> ackend/GuiceModule.java >>>>>>>>>>>> PRE-CREATION >>>>>>>>>>>> >>>>>>>>>>>> /trunk/java/neo4j-backend/src/main/java/de/hofuniversity/iis >>>>>>>>>>>> y >>>>>>>>>>>> s >>>>>>>>>>>> /gra >>>>>>>>>>>> phb >>>>>>>>>>>> acke >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> >>>>> >>>> >>>> >>> >>> >>> >> >