You are viewing a plain text version of this content. The canonical link for it is here.
Posted to legal-discuss@apache.org by Sijie Guo <gu...@gmail.com> on 2018/08/24 19:22:22 UTC

Questions about GPL+CPE libraries

Hi legal team,

I have some questions regarding dependencies of GPL+CPE libraries. I hope I
can get some help here.

In Apache Pulsar, we are integrating with Presto (https://prestodb.io/) and
Presto is using JOL (Java Object Layout). JOL[1]  is a JDK library licensed
under GPL+CPE license[2]. But based on [3], "special exceptions to GNU GPL
(e.g. GNU Classpath)" are marked as Category-X. so my question is following:

- Can we include Presto as dependencies in Pulsar?
- We are implementing a Pulsar Presto connector. Can this connector be part
of Pulsar?
- We are thinking including Presto dependencies in the Pulsar binary
distribution, which it will also include JOL in the binary distribution.
JOL will be part of the classpath. Is that okay to do so?

Regardless, I have a general question regarding ALv2 and GPL+CPE : since
Presto is using JOL which is GPL+CPE, does Presto have to be licensed under
GPL as well?

Thank you,
Sijie


[1] http://openjdk.java.net/projects/code-tools/jol/
[2] http://openjdk.java.net/legal/gplv2+ce.html
[3] https://www.apache.org/legal/resolved.html#category-x

Re: Questions about GPL+CPE libraries

Posted by Sijie Guo <gu...@gmail.com>.
On Mon, Aug 27, 2018 at 7:28 AM Dave Fisher <da...@comcast.net> wrote:

> Hi Sijie,
>
> I think you need to answer about whether Presto is optional to Pulsar
> users.
>

Ah, okay. I thought I was asked whether JOL is optional to presto.

Yes, Presto is optional to Pulsar users.


> Regards,
> Dave
>
> Sent from my iPhone
>
> On Aug 26, 2018, at 11:10 PM, Sijie Guo <gu...@gmail.com> wrote:
>
>
>
> On Sun, Aug 26, 2018 at 11:05 PM Justin Mclean <ju...@classsoftware.com>
> wrote:
>
>> Hi,
>>
>> After bunch of investigations, one of the ideas that I have is following
>> what Flink is doing here:
>>
>> - Exclude the JOL library (
>> https://github.com/apache/flink/blob/7be07871c23b56547add4cd85e15b95c757f882b/flink-filesystems/flink-s3-fs-presto/pom.xml#L167
>> )
>> - Let user drop in JOL library if they want to use this feature. We can
>> provide the documentation for user to follow.
>>
>> Does this work? Is there any other licensing issues in this approach?
>>
>>
>> As long as it is truly an optional dependancy (which I don’t think has
>> been answered here) that sounds like a good solution.
>>
>
> Technically I don't think it is an "optional" dependency. Basically Presto
> is using one class from JOL for computing size of a class/object.
> The way how Flink does is that they mock out the implementation :
> https://github.com/apache/flink/blob/7be07871c23b56547add4cd85e15b95c757f882b/flink-filesystems/flink-s3-fs-presto/src/main/java/org/openjdk/jol/info/ClassLayout.java#L25
>
> Does this approach work without licensing issue?
>
>
>> The question to ask is would most users want to use this feature or not?
>> I assume Presto can work without it?
>>
>> Thanks,
>> Justin
>>
>

Re: Questions about GPL+CPE libraries

Posted by Dave Fisher <da...@comcast.net>.
Hi Sijie,

I think you need to answer about whether Presto is optional to Pulsar users.

Regards,
Dave

Sent from my iPhone

> On Aug 26, 2018, at 11:10 PM, Sijie Guo <gu...@gmail.com> wrote:
> 
> 
> 
>> On Sun, Aug 26, 2018 at 11:05 PM Justin Mclean <ju...@classsoftware.com> wrote:
>> Hi,
>> 
>>> After bunch of investigations, one of the ideas that I have is following what Flink is doing here: 
>>> 
>>> - Exclude the JOL library ( https://github.com/apache/flink/blob/7be07871c23b56547add4cd85e15b95c757f882b/flink-filesystems/flink-s3-fs-presto/pom.xml#L167)
>>> - Let user drop in JOL library if they want to use this feature. We can provide the documentation for user to follow.
>>> 
>>> Does this work? Is there any other licensing issues in this approach?
>> 
>> As long as it is truly an optional dependancy (which I don’t think has been answered here) that sounds like a good solution.
> 
> Technically I don't think it is an "optional" dependency. Basically Presto is using one class from JOL for computing size of a class/object.
> The way how Flink does is that they mock out the implementation : https://github.com/apache/flink/blob/7be07871c23b56547add4cd85e15b95c757f882b/flink-filesystems/flink-s3-fs-presto/src/main/java/org/openjdk/jol/info/ClassLayout.java#L25
> 
> Does this approach work without licensing issue?
>  
>> The question to ask is would most users want to use this feature or not? I assume Presto can work without it?
>> 
>> Thanks,
>> Justin

Re: Questions about GPL+CPE libraries

Posted by Sijie Guo <gu...@gmail.com>.
On Mon, Aug 27, 2018 at 10:50 AM Sijie Guo <gu...@gmail.com> wrote:

>
>
>
> On Mon, Aug 27, 2018 at 7:45 AM Ralph Goers <ra...@dslextreme.com>
> wrote:
>
>>
>>
>> On Aug 26, 2018, at 11:10 PM, Sijie Guo <gu...@gmail.com> wrote:
>>
>>
>>
>> On Sun, Aug 26, 2018 at 11:05 PM Justin Mclean <ju...@classsoftware.com>
>> wrote:
>>
>>> Hi,
>>>
>>> After bunch of investigations, one of the ideas that I have is following
>>> what Flink is doing here:
>>>
>>> - Exclude the JOL library (
>>> https://github.com/apache/flink/blob/7be07871c23b56547add4cd85e15b95c757f882b/flink-filesystems/flink-s3-fs-presto/pom.xml#L167
>>> )
>>> - Let user drop in JOL library if they want to use this feature. We can
>>> provide the documentation for user to follow.
>>>
>>> Does this work? Is there any other licensing issues in this approach?
>>>
>>>
>>> As long as it is truly an optional dependancy (which I don’t think has
>>> been answered here) that sounds like a good solution.
>>>
>>
>> Technically I don't think it is an "optional" dependency. Basically
>> Presto is using one class from JOL for computing size of a class/object.
>> The way how Flink does is that they mock out the implementation :
>> https://github.com/apache/flink/blob/7be07871c23b56547add4cd85e15b95c757f882b/flink-filesystems/flink-s3-fs-presto/src/main/java/org/openjdk/jol/info/ClassLayout.java#L25
>>
>> Does this approach work without licensing issue?
>>
>>
>> What happens when the mock implementation is used?
>>
>
> It is used for estimating the size of an object. so when a mock
> implementation is used, it doesn't really affect the "correctness" of the
> program.
>
>
>
>> Does the application still work correctly or does it get an error. If the
>> user is required to install the dependency for the application to work
>> correctly it isn’t optional and isn’t allowed.
>>
>
> It won't get an error. so technically it isn't really required to install
> the depencency, but user can install the dependency to get the best
> estimation on size. So it is "optional".
>
> If you only need one class that can compute the size of a class why not
>> just reimplement it as part of your project?
>>
>
> technically yes. however I don't think it is a good idea to reimplement
> this if openjdk already has a solid implementation.  That's why mocking it
> out is a solution, where people can run it without problem but if people
> want
> a better optimization, they can drop in the JOL library.
>
> Does that make sense?
>


We have verified mocking out JOL actually work well. That says users don't
require JOL to run presto. So does this approach work without any licensing
issue? Would like to have some conclusions here so we can move forward.

- Sijie


>
>
>>
>> Ralph
>>
>>

Re: Questions about GPL+CPE libraries

Posted by Sijie Guo <gu...@gmail.com>.
On Mon, Aug 27, 2018 at 7:45 AM Ralph Goers <ra...@dslextreme.com>
wrote:

>
>
> On Aug 26, 2018, at 11:10 PM, Sijie Guo <gu...@gmail.com> wrote:
>
>
>
> On Sun, Aug 26, 2018 at 11:05 PM Justin Mclean <ju...@classsoftware.com>
> wrote:
>
>> Hi,
>>
>> After bunch of investigations, one of the ideas that I have is following
>> what Flink is doing here:
>>
>> - Exclude the JOL library (
>> https://github.com/apache/flink/blob/7be07871c23b56547add4cd85e15b95c757f882b/flink-filesystems/flink-s3-fs-presto/pom.xml#L167
>> )
>> - Let user drop in JOL library if they want to use this feature. We can
>> provide the documentation for user to follow.
>>
>> Does this work? Is there any other licensing issues in this approach?
>>
>>
>> As long as it is truly an optional dependancy (which I don’t think has
>> been answered here) that sounds like a good solution.
>>
>
> Technically I don't think it is an "optional" dependency. Basically Presto
> is using one class from JOL for computing size of a class/object.
> The way how Flink does is that they mock out the implementation :
> https://github.com/apache/flink/blob/7be07871c23b56547add4cd85e15b95c757f882b/flink-filesystems/flink-s3-fs-presto/src/main/java/org/openjdk/jol/info/ClassLayout.java#L25
>
> Does this approach work without licensing issue?
>
>
> What happens when the mock implementation is used?
>

It is used for estimating the size of an object. so when a mock
implementation is used, it doesn't really affect the "correctness" of the
program.



> Does the application still work correctly or does it get an error. If the
> user is required to install the dependency for the application to work
> correctly it isn’t optional and isn’t allowed.
>

It won't get an error. so technically it isn't really required to install
the depencency, but user can install the dependency to get the best
estimation on size. So it is "optional".

If you only need one class that can compute the size of a class why not
> just reimplement it as part of your project?
>

technically yes. however I don't think it is a good idea to reimplement
this if openjdk already has a solid implementation.  That's why mocking it
out is a solution, where people can run it without problem but if people
want
a better optimization, they can drop in the JOL library.

Does that make sense?


>
> Ralph
>
>

Re: Questions about GPL+CPE libraries

Posted by Ralph Goers <ra...@dslextreme.com>.

> On Aug 26, 2018, at 11:10 PM, Sijie Guo <gu...@gmail.com> wrote:
> 
> 
> 
> On Sun, Aug 26, 2018 at 11:05 PM Justin Mclean <justin@classsoftware.com <ma...@classsoftware.com>> wrote:
> Hi,
> 
>> After bunch of investigations, one of the ideas that I have is following what Flink is doing here: 
>> 
>> - Exclude the JOL library ( https://github.com/apache/flink/blob/7be07871c23b56547add4cd85e15b95c757f882b/flink-filesystems/flink-s3-fs-presto/pom.xml#L167 <https://github.com/apache/flink/blob/7be07871c23b56547add4cd85e15b95c757f882b/flink-filesystems/flink-s3-fs-presto/pom.xml#L167>)
>> - Let user drop in JOL library if they want to use this feature. We can provide the documentation for user to follow.
>> 
>> Does this work? Is there any other licensing issues in this approach?
> 
> As long as it is truly an optional dependancy (which I don’t think has been answered here) that sounds like a good solution.
> 
> Technically I don't think it is an "optional" dependency. Basically Presto is using one class from JOL for computing size of a class/object.
> The way how Flink does is that they mock out the implementation : https://github.com/apache/flink/blob/7be07871c23b56547add4cd85e15b95c757f882b/flink-filesystems/flink-s3-fs-presto/src/main/java/org/openjdk/jol/info/ClassLayout.java#L25 <https://github.com/apache/flink/blob/7be07871c23b56547add4cd85e15b95c757f882b/flink-filesystems/flink-s3-fs-presto/src/main/java/org/openjdk/jol/info/ClassLayout.java#L25>
> 
> Does this approach work without licensing issue?

What happens when the mock implementation is used? Does the application still work correctly or does it get an error. If the user is required to install the dependency for the application to work correctly it isn’t optional and isn’t allowed. If you only need one class that can compute the size of a class why not just reimplement it as part of your project?

Ralph


Re: Questions about GPL+CPE libraries

Posted by Sijie Guo <gu...@gmail.com>.
On Sun, Aug 26, 2018 at 11:05 PM Justin Mclean <ju...@classsoftware.com>
wrote:

> Hi,
>
> After bunch of investigations, one of the ideas that I have is following
> what Flink is doing here:
>
> - Exclude the JOL library (
> https://github.com/apache/flink/blob/7be07871c23b56547add4cd85e15b95c757f882b/flink-filesystems/flink-s3-fs-presto/pom.xml#L167
> )
> - Let user drop in JOL library if they want to use this feature. We can
> provide the documentation for user to follow.
>
> Does this work? Is there any other licensing issues in this approach?
>
>
> As long as it is truly an optional dependancy (which I don’t think has
> been answered here) that sounds like a good solution.
>

Technically I don't think it is an "optional" dependency. Basically Presto
is using one class from JOL for computing size of a class/object.
The way how Flink does is that they mock out the implementation :
https://github.com/apache/flink/blob/7be07871c23b56547add4cd85e15b95c757f882b/flink-filesystems/flink-s3-fs-presto/src/main/java/org/openjdk/jol/info/ClassLayout.java#L25

Does this approach work without licensing issue?


> The question to ask is would most users want to use this feature or not? I
> assume Presto can work without it?
>
> Thanks,
> Justin
>

Re: Questions about GPL+CPE libraries

Posted by Justin Mclean <ju...@classsoftware.com>.
Hi,

> After bunch of investigations, one of the ideas that I have is following what Flink is doing here: 
> 
> - Exclude the JOL library ( https://github.com/apache/flink/blob/7be07871c23b56547add4cd85e15b95c757f882b/flink-filesystems/flink-s3-fs-presto/pom.xml#L167 <https://github.com/apache/flink/blob/7be07871c23b56547add4cd85e15b95c757f882b/flink-filesystems/flink-s3-fs-presto/pom.xml#L167>)
> - Let user drop in JOL library if they want to use this feature. We can provide the documentation for user to follow.
> 
> Does this work? Is there any other licensing issues in this approach?

As long as it is truly an optional dependancy (which I don’t think has been answered here) that sounds like a good solution. The question to ask is would most users want to use this feature or not? I assume Presto can work without it?

Thanks,
Justin

Re: Questions about GPL+CPE libraries

Posted by Sijie Guo <gu...@gmail.com>.
Thank you Dave, Ralph, Justin!

After bunch of investigations, one of the ideas that I have is following
what Flink is doing here:

- Exclude the JOL library (
https://github.com/apache/flink/blob/7be07871c23b56547add4cd85e15b95c757f882b/flink-filesystems/flink-s3-fs-presto/pom.xml#L167
)
- Let user drop in JOL library if they want to use this feature. We can
provide the documentation for user to follow.

Does this work? Is there any other licensing issues in this approach?

- Sijie

On Sat, Aug 25, 2018 at 9:16 AM Ralph Goers <ra...@dslextreme.com>
wrote:

> I have to agree with Justin here. From your description it sounds like
> Presto would be a required dependency and therefore so would JOL. If you
> want to provide support for this it MUST be an optional feature that the
> majority of your users will not likely use, or at least, you have another
> variant of the same thing that is supplied as the default.  For example,
> when a project uses JPA its users are free to use Hibernate, OpenJPA,
> EclipseLink or something else. The project would not use Hibernate as the
> default implementation but a lot of users are likely to use it.
>
> Ralph
>
> On Aug 24, 2018, at 3:44 PM, Sijie Guo <gu...@gmail.com> wrote:
>
> Thank you Justin.
>
> On Fri, Aug 24, 2018 at 3:00 PM Justin Mclean <ju...@classsoftware.com>
> wrote:
>
>> Hi,
>>
>> INAL but this may help.
>>
>> > - Can we include Presto as dependencies in Pulsar?
>>
>> No. GPL licensed code can’t be used or distributed. [1][2]
>>
>
> Presto is licensed under ALv2 but JOL is licensed under GPL+CPE.
>
> 1. Can we include Presto in the source code, but not distributed in
> binary? since Presto is under ALv2.
>
> 2. If we exclude JOL from Presto's dependency, can we include Presto in
> binary distribution?
>
>
>>
>> > - We are implementing a Pulsar Presto connector. Can this connector be
>> part of Pulsar?
>>
>> Possibly if it's considered optional ie not everyone would want to use
>> it. [2]
>>
>> > - We are thinking including Presto dependencies in the Pulsar binary
>> distribution, which it will also include JOL in the binary distribution.
>> JOL will be part of the classpath. Is that okay to do so?
>>
>> No again see [1].
>>
>> Thanks,
>> Justin
>>
>> 1. https://www.apache.org/legal/resolved.html#prohibited
>> 2. https://www.apache.org/legal/resolved.html#optional
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: legal-discuss-unsubscribe@apache.org
>> For additional commands, e-mail: legal-discuss-help@apache.org
>>
>>
>

Re: Questions about GPL+CPE libraries

Posted by Ralph Goers <ra...@dslextreme.com>.
I have to agree with Justin here. From your description it sounds like Presto would be a required dependency and therefore so would JOL. If you want to provide support for this it MUST be an optional feature that the majority of your users will not likely use, or at least, you have another variant of the same thing that is supplied as the default.  For example, when a project uses JPA its users are free to use Hibernate, OpenJPA, EclipseLink or something else. The project would not use Hibernate as the default implementation but a lot of users are likely to use it.

Ralph

> On Aug 24, 2018, at 3:44 PM, Sijie Guo <gu...@gmail.com> wrote:
> 
> Thank you Justin.
> 
> On Fri, Aug 24, 2018 at 3:00 PM Justin Mclean <justin@classsoftware.com <ma...@classsoftware.com>> wrote:
> Hi,
> 
> INAL but this may help.
> 
> > - Can we include Presto as dependencies in Pulsar?
> 
> No. GPL licensed code can’t be used or distributed. [1][2]
> 
> Presto is licensed under ALv2 but JOL is licensed under GPL+CPE. 
> 
> 1. Can we include Presto in the source code, but not distributed in binary? since Presto is under ALv2.
> 
> 2. If we exclude JOL from Presto's dependency, can we include Presto in binary distribution? 
>  
> 
> > - We are implementing a Pulsar Presto connector. Can this connector be part of Pulsar?
> 
> Possibly if it's considered optional ie not everyone would want to use it. [2]
> 
> > - We are thinking including Presto dependencies in the Pulsar binary distribution, which it will also include JOL in the binary distribution. JOL will be part of the classpath. Is that okay to do so?
> 
> No again see [1].
> 
> Thanks,
> Justin
> 
> 1. https://www.apache.org/legal/resolved.html#prohibited <https://www.apache.org/legal/resolved.html#prohibited>
> 2. https://www.apache.org/legal/resolved.html#optional <https://www.apache.org/legal/resolved.html#optional>
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: legal-discuss-unsubscribe@apache.org <ma...@apache.org>
> For additional commands, e-mail: legal-discuss-help@apache.org <ma...@apache.org>
> 


Re: Questions about GPL+CPE libraries

Posted by Justin Mclean <ju...@classsoftware.com>.
Hi,

> I’m unfamiliar with the project but there’s nothing stated (so far) that indicates JOL is an optional dependancy IMO that means Presto can’t be included.

For further information see [1] in particular:

This licensing incompatibility applies only when some Apache project software becomes a derivative work of some GPLv3 software.
We avoid GPLv3 software because merely linking to it is considered by the GPLv3 authors to create a derivative work. 
This is an identical issue for both GPLv2 and GPLv3.

Thanks,
Justin

1. https://www.apache.org/licenses/GPL-compatibility.html
---------------------------------------------------------------------
To unsubscribe, e-mail: legal-discuss-unsubscribe@apache.org
For additional commands, e-mail: legal-discuss-help@apache.org


Re: Questions about GPL+CPE libraries

Posted by Justin Mclean <ju...@classsoftware.com>.
Hi,

> Yes, Presto can be included in the binary with the correct version pointed to by the pom.xml

I’m unfamiliar with the project but there’s nothing stated (so far) that indicates JOL is an optional dependancy IMO that means Presto can’t be included.

Thanks,
Justin
---------------------------------------------------------------------
To unsubscribe, e-mail: legal-discuss-unsubscribe@apache.org
For additional commands, e-mail: legal-discuss-help@apache.org


Re: Questions about GPL+CPE libraries

Posted by Dave Fisher <da...@comcast.net>.
Hi -

Sent from my iPhone

> On Aug 24, 2018, at 3:44 PM, Sijie Guo <gu...@gmail.com> wrote:
> 
> Thank you Justin.
> 
>> On Fri, Aug 24, 2018 at 3:00 PM Justin Mclean <ju...@classsoftware.com> wrote:
>> Hi,
>> 
>> INAL but this may help.
>> 
>> > - Can we include Presto as dependencies in Pulsar?
>> 
>> No. GPL licensed code can’t be used or distributed. [1][2]
> 
> Presto is licensed under ALv2 but JOL is licensed under GPL+CPE. 
> 
> 1. Can we include Presto in the source code, but not distributed in binary? since Presto is under ALv2.

Yes, Presto can be included in the binary with the correct version pointed to by the pom.xml

> 
> 2. If we exclude JOL from Presto's dependency, can we include Presto in binary distribution? 

JOL cannot be in the binary. Instructions should be provided in how to install it in an installation.

We can certainly discuss this further on dev@pulsar. Just use the subject [MENTORS]

Regards,
Dave

>  
>> 
>> > - We are implementing a Pulsar Presto connector. Can this connector be part of Pulsar?
>> 
>> Possibly if it's considered optional ie not everyone would want to use it. [2]
>> 
>> > - We are thinking including Presto dependencies in the Pulsar binary distribution, which it will also include JOL in the binary distribution. JOL will be part of the classpath. Is that okay to do so?
>> 
>> No again see [1].
>> 
>> Thanks,
>> Justin
>> 
>> 1. https://www.apache.org/legal/resolved.html#prohibited
>> 2. https://www.apache.org/legal/resolved.html#optional
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: legal-discuss-unsubscribe@apache.org
>> For additional commands, e-mail: legal-discuss-help@apache.org
>> 

Re: Questions about GPL+CPE libraries

Posted by Sijie Guo <gu...@gmail.com>.
Thank you Justin.

On Fri, Aug 24, 2018 at 3:00 PM Justin Mclean <ju...@classsoftware.com>
wrote:

> Hi,
>
> INAL but this may help.
>
> > - Can we include Presto as dependencies in Pulsar?
>
> No. GPL licensed code can’t be used or distributed. [1][2]
>

Presto is licensed under ALv2 but JOL is licensed under GPL+CPE.

1. Can we include Presto in the source code, but not distributed in binary?
since Presto is under ALv2.

2. If we exclude JOL from Presto's dependency, can we include Presto in
binary distribution?


>
> > - We are implementing a Pulsar Presto connector. Can this connector be
> part of Pulsar?
>
> Possibly if it's considered optional ie not everyone would want to use it.
> [2]
>
> > - We are thinking including Presto dependencies in the Pulsar binary
> distribution, which it will also include JOL in the binary distribution.
> JOL will be part of the classpath. Is that okay to do so?
>
> No again see [1].
>
> Thanks,
> Justin
>
> 1. https://www.apache.org/legal/resolved.html#prohibited
> 2. https://www.apache.org/legal/resolved.html#optional
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: legal-discuss-unsubscribe@apache.org
> For additional commands, e-mail: legal-discuss-help@apache.org
>
>

Re: Questions about GPL+CPE libraries

Posted by Justin Mclean <ju...@classsoftware.com>.
Hi,

INAL but this may help.

> - Can we include Presto as dependencies in Pulsar?

No. GPL licensed code can’t be used or distributed. [1][2]

> - We are implementing a Pulsar Presto connector. Can this connector be part of Pulsar?

Possibly if it's considered optional ie not everyone would want to use it. [2]

> - We are thinking including Presto dependencies in the Pulsar binary distribution, which it will also include JOL in the binary distribution. JOL will be part of the classpath. Is that okay to do so?

No again see [1].

Thanks,
Justin

1. https://www.apache.org/legal/resolved.html#prohibited
2. https://www.apache.org/legal/resolved.html#optional


---------------------------------------------------------------------
To unsubscribe, e-mail: legal-discuss-unsubscribe@apache.org
For additional commands, e-mail: legal-discuss-help@apache.org