I work as academic researcher in software engineering. We have an agreement with our university that we can release source code under EPL.
Currently, I work on two interrelated research projects (both released under EPL):
ingraph
, an incremental graph query engine supporting Cypher graph queriescodemodel-rifle
, a static analysis application for JavaScript source code repositories, which uses Cypher graph queries for defining well-formedness rules. This project has a number of external dependencies, including some ASL- and MIT-licensed external libraries, and also uses Cypher-compliant query engine (Neo4j oringraph
) in a client-server setup, talking through a driver with REST or REST-like calls. A key component of this project is the parser that transforms the source code to a graph representation - this requires considerable implementation efforts. The parser has talks to the query engine to build the graph.
We are planning to collaborate with jQAssistant
, which is GPLv3-licensed framework for static analysis, also using Cypher graph queries. jQAssistant currently runs as part of the build process, so it uses process calls instead of REST calls (e.g. it uses an embedded version of the GPLv3 Neo4j graph database).
As far as I understand, codemodel-rifle
and jQAssistant
cannot use each other's code as GPL and EPL are incompatible both ways.
We can request a new license from the university for future projects. In this case, we could re-implement the codemodel-rifle
application (cr2
) and re-release it under a different license. However, I am not sure which license to choose. cr2
would still depend on ingraph
(which is fully EPL-licensed), so we cannot use GPLv3.
The goal of the collaboration would be to:
- share the parser component,
- share the well-formedness rules.
Potential workarounds seem to be the following:
- Reimplement
codemodel-rifle
in GPLv3, and also implement an ASL-licensed driver to useingraph
in a client-server setup. - Introduce an ASL-licensed common project that can use
codemodel-rifle
and can be used byjQAssistant
. In this case, we still cannot use ourjQAssistant
's original code, but can jointly develop the common project. Our partner does not necessarily needingraph
to run the analysis, as they can use Neo4j (which is GPL-licensed), so they could release their software under GPLv3.
Are there any better options for collaborating under these conditions?