www-legal-discuss mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Harui <aha...@adobe.com>
Subject Re: Is Spark Kinesis (non-assembly) module distributable via Maven?
Date Thu, 15 Sep 2016 15:08:59 GMT
Again, I am not an official answer person and not a Maven expert at all, but IMO, there is
a hierarchy of project/products/artifacts.  For example, Apache Flex is a project and ships
more than one product.  One is called Apache FlexJS, another is Apache Flex BlazeDS, and there
are more.  Our products which get distributed via maven each contain multiple maven artifacts.
 Our products are pretty independent of each other.  You can be a customer of one product,
but not the others.  Some projects have only one product.

Our project PMC votes on and releases the source for a product, not on each artifact individually.
  I think each product has a top-level pom that points to the various artifact poms in that
product's sources.

I believe that projects are supposed to use that product boundary in determining if something
is optional.  Will the majority of your customers who use the non-Kinesis artifacts that derive
from the source package you vote on and release end up bringing down the Spark-Kinesis artifact
(and thus Kinesis artifacts as well)?

This might mean that you should not have a separate vote and release cycle just on Spark-Kinesis
sources, although it also means you can't pack it in with completely unrelated stuff just
to get away with calling it optional either.  Really, the uber goal is that using Apache distributions
should not result in lots of people having to download CategoryX stuff.  IMO, if you can say
that sentence and still sleep at night you are good to go.

Of course, I could be wrong.

From: Sean Owen <srowen@apache.org<mailto:srowen@apache.org>>
Reply-To: "legal-discuss@apache.org<mailto:legal-discuss@apache.org>" <legal-discuss@apache.org<mailto:legal-discuss@apache.org>>
Date: Thursday, September 15, 2016 at 1:45 AM
To: "legal-discuss@apache.org<mailto:legal-discuss@apache.org>" <legal-discuss@apache.org<mailto:legal-discuss@apache.org>>
Cc: "private@spark.apache.org<mailto:private@spark.apache.org>" <private@spark.apache.org<mailto:private@spark.apache.org>>
Subject: Re: Is Spark Kinesis (non-assembly) module distributable via Maven?

If "product" is "Apache Spark", then the answer is 'yes, most users won't want the optional
component'. Then the Spark-Kinesis integration module is construed as a convenience, a set
of 'instructions' for obtaining and using the optional component with the product Apache Spark.

If "product" is "Apache Spark's Kinesis integration module", then "no, all users would have
to use the optional component with it". I'm not sure if this is the intent or not.

I think our default interpretation is the former, but wanted to raise the question as it's
non-obvious to me.

On Wed, Sep 14, 2016 at 9:48 PM Alex Harui <aharui@adobe.com<mailto:aharui@adobe.com>>
I'm not an official answer person, but IMO, the key question in your post from the document
you quoted:

  "Will the majority of users want to use my product without adding the optional components?"


From: Sean Owen <srowen@apache.org<mailto:srowen@apache.org>>
Reply-To: "legal-discuss@apache.org<mailto:legal-discuss@apache.org>" <legal-discuss@apache.org<mailto:legal-discuss@apache.org>>
Date: Wednesday, September 14, 2016 at 2:21 AM
To: "legal-discuss@apache.org<mailto:legal-discuss@apache.org>" <legal-discuss@apache.org<mailto:legal-discuss@apache.org>>
Cc: "private@spark.apache.org<mailto:private@spark.apache.org>" <private@spark.apache.org<mailto:private@spark.apache.org>>
Subject: Is Spark Kinesis (non-assembly) module distributable via Maven?

Hello legal-discuss@,

On behalf of Spark I'm writing to ask for opinions on the additional question raised at https://issues.apache.org/jira/browse/LEGAL-198?focusedCommentId=15471529&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15471529

In brief, Spark has several optional modules that are not distributed as part of the main
binary release. One of them is "Spark Kinesis", which contains integration code for Amazon's
Kinesis. (Note: here we are not talking about the Kinesis _assembly_ module.) This module
is built and distributed as a binary artifact in Maven, however.

It does not itself contain any source or binary code from the Amazon Kinesis client. However,
this optional Spark Kinesis module requires the Kinesis client of course. And, the Kinesis
client is licensed under the Amazon Software License, which is Category X.

http://www.apache.org/legal/resolved.html#prohibited says:
Apache projects cannot distribute any such components. As with the previous question on platforms,
the component can be relied on if the component's licence terms do not affect the Apache product's
licensing. For example, using a GPL'ed tool during the build is OK.

Apache projects cannot distribute any such components. However, if the component is only needed
for optional features, a project can provide the user with instructions on how to obtain and
install the non-included work. Optional means that the component is not required for standard
use of the product or for the product to achieve a desirable level of quality. The question
to ask yourself in this situation is:

"Will the majority of users want to use my product without adding the optional components?"

https://issues.apache.org/jira/browse/LEGAL-198 discusses closely-related but not identical
scenarios. For example, there the question is whether ASF projects can distribute the recompiled
binary code of a Category X component, and that's not allowed.

Here, the licensing does affect the product (it is not just a build dependency).

I see an argument for and against allowing publishing of Spark Kinesis in Maven.


Spark Kinesis is optional with respect to Spark, and thus so is Kinesis client. Publishing
it via Maven constitutes providing "instructions on how to obtain and install the non-included
work", Kinesis client.


Spark Kinesis is a software product from the ASF in and of itself. If it relies non-optionally
on a Category X component, it may not be distributed.

Is there any view on which is more accurate in this context?
If the latter, does this forbid releasing Spark Kinesis in source form too?


View raw message