On Jun 22, 2012, at 6:16 PM, Chris Douglas wrote:

> Kevan-

Hi Chris,
Thanks for elaborating. 

> 
> Please appreciate that there is universal agreement that (1) listing
> and maintaining all transitive dependencies and licenses is a sound
> service

It's more than "sound". We are required to meet the terms and conditions of the 
source/binary artifacts. IIRC, Marvin stated this pretty well...

> and (2) listing all dependencies distributed with source code
> carry legal requirements w.r.t. the LICENSE and NOTICE files. We
> disagree only on (3) the scope of legally required attribution extends
> to the transitive closure of dependencies.

I wasn't aware of a disagreement on transitive closure. I thought your position 
was that "source-only" releases did not need to document their 
build-time/distribution licensing. 

I'll attempt to elaborate, the case for Kafka:

1) Kafka source contains some ALv2 and non-AL v2 licensed stuff (let's avoid 
the question of binary vs. source)
2) Kafka source declares some dependencies on binary artifacts
3) These direct dependencies have additional transitive dependencies (in this 
case, declared via pom.xml, the precise mechanics don't matter)…

Kafka's LICENSE/NOTICE files document the licensing of the source code. Many 
projects document their source and binary dependencies in the LICENSE/NOTICE 
files in the root directory of their source. Some projects have separate source 
and binary licenses. There may be some room for interpretation, here, along 
with some old-school/new-school thinking.

Some transitive dependencies are compile/test-time only. We don't care about 
these. We care about the run-time dependencies. Moreover we only care about the 
run-time dependencies that we bundle.

If Kafka only produced individual jar files (and not a runtiime environment), 
things would be different. If you only produced jar files, you would need 
license/notice files in your source and to produce jar files with 
license/notice files in the META-INF directory. These jar files may have 
run-time dependencies and these dependencies may be encoded in some meta-data 
(e.g. pom.xml). We don't care about these dependencies. The META-INF/LICENSE 
(NOTICE) need only document the licensing of the source that produced the 
contents of the jar file. 

In the jar-only case, you aren't bundling the dependencies of your jars. 
Someone else will be. And IMO, they would be responsible for the licensing of 
whatever bundling they create. Just because a pom.xml file declares transitive 
dependencies, doesn't mean that the bundler has to use these dependencies. The 
bundler may replace with their own preferred artifacts with their own licensing 
(an behavior, of course). 

If Kafka was a jar-only project, we'd be basically done (though I've noted that 
you aren't producing jar files with META-INF/LICENSE and NOTICE). That's a 
"new" requirement, I wouldn't necessarily demand that in a 0.7.1 release. But 
would look for it in the future.

Kafka is more than a jar-only project. Kafka is designed to create a messaging 
server. Kafka builds kafka source into jar files, packages dependencies 
(direct/transitive), contains shell scripts to launch a Kafka messaging server, 
etc… If you or anyone else on the project disagrees with this, then let's 
discuss...

So, Kafka is required to create the LICENSE/NOTICE files for the the Kafka 
messaging server that your project is constructing. The LICENSE/NOTICE files 
must describe all artifacts contained within the Kafka messaging server. Direct 
or transitive dependencies don't matter. What matters is the contents of the 
Kafka messaging server.

> 
> Now, a group of us believe that we investigated this thoroughly in the
> Kafka 0.7.0 release and- based on its approval- we are exercising the
> same procedure to release 0.7.1. If you believe this is mistaken, you
> can either go to the trouble to obtain clarification from board@,
> legal@, or find a reference that supports your position. Presented
> with that evidence, I would reverse my vote. Alternatively, if you
> believe the work is important enough regardless of policy, then do it.
> The project would be grateful to receive that contribution. -C

Thanks. Though I'm interested in the Kafka project from several technical 
aspects, I just don't have time to participate. Plus, I'm also interested in 
seeing the project undertake their ASF responsibilities.

So, here's my attempt at documenting what's required of the project…

Apache releases are described here:
http://www.apache.org/dev/release.html#what

All PMCs must approve their releases as described here:
http://www.apache.org/dev/release.html#approving-a-release

As described in the above -- "Before voting +1 PMC members are required to 
download the signed source code package, compile it as provided, and test the 
resulting executable on their own platform, along with also verifying that the 
package contains the required contents."

Required contents is documented here:
http://www.apache.org/dev/release.html#what-must-every-release-contain

"Every ASF release must comply with ASF licensing policy. This requirement is 
of utmost importance and an audit should be performed before any full release 
is created. In particular, every artifact distributed must contain appropriate 
LICENSE and NOTICE files. More information can be found in the foundation 
website and in the release licensing FAQ."

IMO, the requirements are clear. Let me know if you are unconvinced, and I'll 
pursue clarification. An explanation of your position (or summary of your prior 
investigation) would be helpful.

--kevan
---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscr...@incubator.apache.org
For additional commands, e-mail: general-h...@incubator.apache.org

Reply via email to