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. 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 <2> src/chart/treemap/treemapLayout.js <3> src/chart/tree/layoutHelper.js <4> src/chart/graph/forceHelper.js <5> src/util/array/nest.js <6> src/scale/Time.js ASF policy [1] states that you should not add the standard Apache License header to the top of third-party source files. But in the questioned source files listed above, file <1><2><3><4><6> are not from the third-party. They are made up by the code of Apache-echarts itself, but including some "code snippet" copied from or algorithm learned from the third-party library "d3", which is under BSD 3-Clause. So these files have the Apache License header and embed d3 license next to the corresponding "code snippet". And for standing out for the users, there is also a statement such as "the implementation references to d3 and follows d3 license ..." on the top of the file, next to the Apache License header. So in my opinion <1><2><3><4><6> does not break the ASF policy [1], because they are not the third-party source file, but an Apache-licensed source file with third-party license embedded. Let's take the file "src/chart/treemap/treemapLayout.js" as an example: The code snippet "squarify" ( https://github.com/apache/incubator-echarts/blob/9234f0309137250a2561212e8ecd1639551119b1/src/chart/treemap/treemapLayout.js#L166 ) is learned from d3 ( https://github.com/d3/d3/blob/28acd11a242245b8bd32cfcdaaa8d7d382c6272f/src/layout/treemap.js#L30 ) on the skeleton of the algorithm. But the entire file is the implementation of the echarts treemap, including not only the learned part but also lots of other logic related to each other and not appropriate to be separated. So I think the file "src/chart/treemap/treemapLayout.js" should be under the Apache License header, and have d3 license embedded in some of the code. 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. In the past years of the coding practice of echarts, most of the cases that need to learn from third-party is follow the case like <1><2><3><4><6>. So if the solution I described above is reasonable/acceptable, that would be good to be followed in future development. If not, we need to find some other practicable solution about this and guide the development. 1. https://www.apache.org/legal/src-headers.html#3party Thanks, Su Shuang
