www-legal-discuss mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Hen <bay...@apache.org>
Subject Re: License for using 3rd-party code
Date Sun, 10 Feb 2019 20:48:54 GMT
On Fri, Feb 1, 2019 at 11:04 AM SHUANG SU <sushuang0322@gmail.com> wrote:

>
> Hi,
>
> Thanks a lot for the attention and checking.
>
> > > To be more specific, here are some types of files:
> > > 1. Some part of a file (maybe several lines, or a short function) is
> copied directly from a 3rd-party implementation, but others are implemented
> by ourselves.
> > > 2. The code is implemented by us, but the general idea or algorithm is
> inspired by 3rd-party.
>
> > ASF policy [1] states that you should not add the standard Apache
> License header to the top of third-party source files, and only if major
> modifications are done then the (P)PMC should decide what to do. IMO that
> decision would need to be documented on the mailing list. INAL but from
> what I’ve  seen previously option 2 is generally not enough change to
> change the 3rd party license.
>
> In my opinion, both the cases that a code snippet "copied from a
> 3rd-party" or "the idea/algorithm inspired by 3rd-party"
> need to follow the third-party license.
>
>
"inspired by" and "learned from" are both, iiuc, vague concepts in
copyright. There's no right given to learn from a piece of code or to be
inspired by a piece of code. So the 'need to follow license' statement
doesn't compile cleanly.

What's the right thing to do for the public good here? I'll go with:

* Be transparent when implementing an existing idea/algorithm.
* Reference where that idea/algorithm came from.
* Use standard language when doing so (we need to define standard language).
* If any copyrightable expression is copied from the existing
idea/algorithm, compare its licensing to our licensing policies and include
licensing accordingly.

In fact, in the current source code of Apache-echarts, there
> is no case that "a code snippet need to change the origin third-party
> license".
>
> But the key point we are confused and discussed here is:
> "how to arrange the presence of the license statement in the source code
> files
> when some code follows the Apache License and some follows the third-party
> license".
>
> To find a practicable way to solve this issue and guide the future coding,
> I think we need to go deep into these source files:
>
> These source files of the release candidate of Apache-echarts 4.2.1-rc.1
> ( https://dist.apache.org/repos/dist/dev/incubator/echarts/4.2.1-rc.1/ )
> are questioned about the embedded third-party license:
>
> <1> src/util/number.js
>

This file says this:

 * @see <https://github.com/mbostock/d3/blob/master/src/arrays/quantile.js>
 * @see <http://en.wikipedia.org/wiki/Quantile>

Assuming no code was copied, this seems fine. If code was copied from
either, then there is licensing to include (be that BSD for d3 or CC-BY-SA
for Quantile, the latter being a problem for us licensing wise).


> <2> src/chart/treemap/treemapLayout.js
>

This file says this:

/*
* The treemap layout implementation references to the treemap
* layout of d3.js (d3/src/layout/treemap.js in v3). The use of
* the source code of this file is also subject to the terms
* and consitions of its license (BSD-3Clause, see
* <echarts/src/licenses/LICENSE-d3>).
*/

and later:

 * Layout treemap with squarify algorithm.
 * @see
https://graphics.ethz.ch/teaching/scivis_common/Literature/squarifiedTreeMaps.pdf
 * The implementation references to the treemap layout of d3.js.
 * See the license statement at the head of this file.

The 'references to' is confusing, I don't know what that is supposed to
mean has happened. Assuming code has been copied from d3 into echarts here,
which is not what 'references to' means, the rest of this would look good
to me.


> <3> src/chart/tree/layoutHelper.js
>

This file says this:

/*
* The tree layout implementation references to d3.js
* (https://github.com/d3/d3-hierarchy). The use of the source
* code of this file is also subject to the terms and consitions
* of its license (BSD-3Clause, see <echarts/src/licenses/LICENSE-d3>).
*/

/**
 * @file The layout algorithm of node-link tree diagrams. Here we using
Reingold-Tilford algorithm to drawing
 *       the tree.
 * @see https://github.com/d3/d3-hierarchy
 */

My comments are the same as the previous item.


> <4> src/chart/graph/forceHelper.js
>

Same 'references to' language. Later on it also says '// From d3' followed
by a block of commented out code. It's not clear if that's meant to mean
code has been copied.


> <5> src/util/array/nest.js
>

Note that this was src/util.nest.js.  Same 'references to' issue.


> <6> src/scale/Time.js
>

Same 'references to' issue. Also says:

// Steps from d3, see the license statement at the top of this file.

which seems fine.


> <snip by bayard@>
>
> And about the file <5>, the whole file is modified from the previous
> version of d3 (the version is about 3 years ago,
> https://github.com/d3/d3/blob/9cc9a875e636a1dcf36cc1e07bdf77e1ad6e2c74/src/arrays/nest.js
> ). So this file
> probably should be under the d3 license, but not an Apache License, isn't?
> If so, the Apache License header of this file is needed to be removed.
>

If it's originally a 3rd party file, then I'd encourage doing:

<Original license>

<Modifications by Apache eCharts provided under Apache License 2.0>

Hen

Mime
View raw message