Thanks Leonard for the confirmation, I will update the related files based on the consensus.
Regards, -Ciyong -----Original Message----- From: Leonard Lausen <lau...@apache.org> Sent: Wednesday, June 24, 2020 2:24 AM To: d...@mxnet.incubator.apache.org; general@incubator.apache.org Subject: Re: [DISCUSS] When to add Apache Headers to Third Party Code [WAS] Re: [MENTORS] PPMC case-by-case decision for major modifications of third-party work guidance Hi Ciyong, the consensus passed, so we should proceed according to the consensus. Thank you Leonard On Tue, 2020-06-23 at 09:04 +0000, Chen, Ciyong wrote: > Hi all, > > I'm wondering if there's any further concerns for this "72 hours lazy > consensus"? > Shall we continue with the option of "I believe PPMC would prefer to > put the ASF header on top of the file (ie. 2 headers)" > > Thanks, > -Ciyong > > -----Original Message----- > From: Leonard Lausen <lau...@apache.org> > Sent: Tuesday, June 16, 2020 7:06 AM > To: d...@mxnet.incubator.apache.org; general@incubator.apache.org > Subject: Re: [DISCUSS] When to add Apache Headers to Third Party Code > [WAS] > Re: [MENTORS] PPMC case-by-case decision for major modifications of > third- party work guidance > > Thank you everyone for your valuable advice. > > > so if you did want to avoid including the license in your releases > > you would either need to rely on the file as an external dependency > > or completely reimplement the functionality not deriving it from > > this file. > > Including the BSD-3 style license in releases wouldn't be a problem, > as it's compatible with Apache License 2. As there are substantial > changes, I believe PPMC would prefer to put the ASF header on top of > the file (ie. 2 headers) [72 hours lazy consensus if there are no > concerns]. We still need to declare all the numpy einsum derived files > in the LICENSE and fix the inconsistency that ASF header was removed > in src/operator/numpy/np_einsum_op-inl.h but remains in > src/operator/numpy/np_einsum_path_op-inl.h > > Related: As PPMC strives to provide partial API compatibility with > NumPy in MXNet 2 based on the NumPy Array Function Protocol [1], could > you clarify if these MXNet operators should be considered derived from > NumPy (thus warranting the BSD-3 style license headers) solely based > on integrating with the NumPy API and providing compatible operators? > Or only (as in the einsum case above), if the actual implementation > was derived from NumPy's implementation. I believe it's the latter, but > please clarify if that's wrong. > > Should ASF update the "Do not add the standard Apache License header > to the top of third-party source files." at [2]? This sentence was the > motivation to open this discussion thread, and according to the > current consensus here is "incomplete". How about adding an "unless > the third-party source file contains major modifications by ASF" to clarify? > > Thank you > Leonard > > [1]: https://numpy.org/neps/nep-0018-array-function-protocol.html > [2]: https://www.apache.org/legal/src-headers.html#3party > > On Mon, 2020-06-15 at 09:36 -0400, John D. Ament wrote: > > On Sat, Jun 13, 2020 at 2:19 PM Bob Paulin <b...@bobpaulin.com> wrote: > > > > > Hi, > > > > > > I agree there does not appear to be consensus on when it's > > > appropriate to add Apache License Headers to Third Party code > > > across projects. Here is Justin's email that request the Apache > > > Headers removed [1] > > > > > > <snip> > > > > > > - file copyright NumPy Developers [6] this file look to > > > incorrectly have an ASF header on it .... > > > 6. ./src/operator/numpy/np_einsum_path_op-inl.h > > > </snip> > > > > > > We want to make the choice that will be most sustainable for the > > > project and most correct for the situation. > > > > > > Based on the emails I linked in the prior email it does seem like > > > the cases where dual headers are appropriate is when there are > > > Major Modifications. In the case of > > > > > > np_einsum_path_op-inl.h > > > > > > The file is derived from the implementation in Numpy [2]. If the > > > implementation in Numpy changes will this file change? If so then > > > the community will be tasked with continuing to re-port the > > > changes over that is always based on Numpy so it may be more > > > appropriate to just keep the Numpy license. > > > > > > Will MXNet likely evolve this file in a way that it's no longer > > > resembles the Numpy implementation (Major Modification)? If so it > > > may be better to keep the Apache Header as going forward the file > > > will represent the work of the MXNet community not that of Numpy. > > > > > > > Keeping the (what appears to be) BSD-3 style license is perfectly > > fine and is in fact what the NumPy license says to do. We would > > only change the license from the NumPy license to ALv2 if an SGA or > > ICLA is received from all contributors historically on this file. > > No matter how drastic of modifications the MxNet community makes to > > it, it would always be NumPy licensed; so if you did want to avoid > > including the license in your releases you would either need to rely > > on the file as an external dependency or completely reimplement the > > functionality not deriving it from this file. Whether or not the > > MxNet community imports upstream changes or not is up to them, but > > either way you have a derived work here. > > > > John > > > > > > > Hopefully the above helps clarify my perspective on how to > > > determine case by case. I don't see the dual license state as the > > > simpler case in all situations. I don't believe you would have to > > > get the original committer to relicense the file to you in order > > > to remove the additional license. I believe the PPMC has all the > > > authority it needs to change the file. I'd be interested to hear > > > if this is a position that the rest of the Mentors/Incubator agree > > > with. I know Hen has been involved in some of the conversations > > > in support of dual licenses. Has this ever required escalation to > > > an actual Lawyer in Legal? Or have these determinations been low > > > enough risk that we are comfortable with our PMC making best > > > effort decisions based on the ASF guidelines? > > > > > > > > > - Bob > > > > > > > > > [1] > > > https://lists.apache.org/thread.html/rb83ff64bdac464df2f0cf2fe8fb4 > > > c6 b9d3b8fa62b645763dc606045f%40%3Cgeneral.incubator.apache.org%3E > > > > > > [2] > > > https://github.com/numpy/numpy/blob/master/numpy/core/einsumfunc.p > > > y On 6/12/2020 7:20 PM, Leonard Lausen wrote: > > > > > > Thank you Bob for the elaboration. PPMC would like to minimize > > > complexity, that's why we ask for your recommendation. > > > > > > If it's easiest to just keep the original license header, we can > > > do that. Do we need the contributor to re-license their > > > contribution, or is the contribution already available under both > > > licenses as both license headers were included by the contributor > > > and the ASF header can simply be deleted? > > > > > > Reading through the threads you referenced, there does not seem to > > > be a strong consensus in the ASF about how to handle this situation. > > > For example, quoting Roman Shaposhnik [2] in support of just > > > putting > > > 2 License Headers for > > > simplicity: > > > > > > > > > Hm. This is tricky, now that I re-read the language of the ASF > > > license header I'm not sure anymore. I *think* the language there > > > should allow you to slap said header on a compatible license code. > > > > > > Besides, the alternative is much messier: every time somebody > > > touches that file he/she needs to decide whether it is time for an > > > ASF header or not. > > > > > > I *think* (but I'd love for old-timers to chime in and correct me) > > > that #3-5 were written from though-shall-not-fork-communities perspective. > > > > > > Can we follow this approach (keep 2 License headers) for > > > simplicity (assuming removal of ASF header will require extra steps)? > > > > > > > > > With respect to einsumfunc.py [5] vs np_einsum_op.cc [6] if this > > > is in fact a port where the behavior was copied/derived directly > > > from numpy I could see that as supporting Justin's case that the > > > Apache header should be removed. However that is just my opinion. > > > > > > Which email of Justin are you referring to? > > > > > > Best regards > > > Leonard > > > > > > > > > [1]: http://www.apache.org/legal/src-headers.html#purpose > > > [2]: > > > https://lists.apache.org/thread.html/ef46b1d0a3dd865d27a33c290430d > > > 89 > > > 2d3373d4bc5e27b5f06c7bcda%401451951295%40%3Cgeneral.incubator.apac > > > he > > > .org%3E > > > > > > > > > On Wed, 2020-06-10 at 21:39 -0500, Bob Paulin wrote: > > > > > > First general disclaimer: I am not a lawyer. > > > > > > Second Disclaimer with an engineer hat on we want to avoid copying > > > third party code into the project since it increases the amount of > > > maintenance in a sense from a code standpoint and from a licensing > > > standpoint. If at all possible it is preferable to either link or > > > try to find a way to integrate your tweaks back into the other > > > projects before taking on the burden of housing the code in MXNet. > > > I do hope these options were considered or are being looked at for > > > refactoring in the project since it will help the long term > > > viability of the project. > > > > > > Now to your question. Similar situations have been discussed both > > > on legal [1] and on incubator [2][3]. It may be useful to review > > > some of these threads to understand how other projects made this > > > determination. > > > There are instances where other members have stated it is > > > appropriate and the dual headers have been used [4]. It seems in > > > some of these cases the PMC has reached out to the other projects > > > to ask for permission to apply the Apache license. > > > > > > With respect to einsumfunc.py [5] vs np_einsum_op.cc [6] if this > > > is in fact a port where the behavior was copied/derived directly > > > from numpy I could see that as supporting Justin's case that the > > > Apache header should be removed. However that is just my opinion. > > > If the PMC feels strongly > > > it would make sense to escalate to legal-discuss. These are case by > > > case decisions and the more third party code that gets copied in > > > the more drag there will be on the community to deal with these issues. > > > I would also encourage discussion of each case to remain on list > > > so that the incubator PMC can see how the PPMC is making these > > > determinations. > > > > > > - Bob > > > > > > [1] > > > https://lists.apache.org/thread.html/0fc4c0e95ee0c489553373e378125 > > > a0 > > > d163bc511da2555caa68bfa87%401455903168%40%3Clegal-discuss.apache.o > > > rg > > > %3E > > > > > > [2] > > > https://lists.apache.org/thread.html/d00f72c4aa0b56927dac87b116e2e > > > 92 > > > fa32b7dcf447016726683cc4f@1455210877@%3Cgeneral.incubator.apache.o > > > rg > > > %3E > > > > > > [3] > > > https://lists.apache.org/thread.html/e743b1b1cfda2c4775c3fe509f3ad > > > c8 > > > f69d64fd2b6eb253ade311fe7%401451947855%40%3Cgeneral.incubator.apac > > > he > > > .org%3E > > > > > > [4] > > > https://github.com/apache/trafodion/blob/master/core/sql/parser/ul > > > ex > > > er.h > > > > > > [5] > > > https://github.com/numpy/numpy/blob/master/numpy/core/einsumfunc.p > > > y > > > > > > [6] > > > https://github.com/apache/incubator-mxnet/blob/master/src/operator > > > /n > > > umpy/np_einsum_op.cc > > > > > > > > > On 6/10/2020 5:29 PM, Leonard Lausen wrote: > > > > > > Hi Bob, > > > > > > yes, your understanding is correct. To further give an example I'd > > > like to quote Haozheng who added two of the files in question: > > > > > > > > > The two files originate from > > > > > > > https://github.com/numpy/numpy/blob/master/numpy/core/einsumfunc.py . > > > > > > I translated them from python to cpp. The original files are > > > subject to the the following license: > > > https://github.com/numpy/numpy/blob/master/LICENSE.txt > > > > > > https://github.com/apache/incubator-mxnet/issues/17329#issuecommen > > > t- > > > 640043814 > > > > > > Thank you > > > Leonard > > > > > > On Wed, 2020-06-10 at 07:42 -0500, Bob Paulin wrote: > > > > > > Hi, > > > > > > Let me restate to make sure I understand what's being asked. > > > > > > 1) There is third party code in the project that has Major > > > Modifications to the original third party source. > > > > > > 2) The original third party code does not currently have two > > > license headers > > > > > > (ex Third Party Code has MIT license only. Apache License header > > > was added when it was checked into MXNet repo with modifications) > > > > > > 3) You are asking if the files can remain in the MXNet repository > > > with both license headers. > > > > > > - Bob > > > > > > On 6/9/2020 5:07 PM, Leonard Lausen wrote: > > > > > > Hi Mentors, > > > https://www.apache.org/legal/src-headers.html#3party states the 5 > > > rules for handling third-party code included in the project [1]. > > > In particular PPMC shall handle major modifications on a > > > case-by-case basis. > > > > > > But the other rules state > > > > > > > > > 1. Do not modify or remove any copyright notices or licenses > > > within > > > third- > > > > > > party works. > > > > > > and > > > > > > > > > 2. Do not add the standard Apache License header to the top of > > > third- party > > > > > > source files. > > > > > > The major modifications in question [2] are currently licensed > > > under Apache License but the files originate from a third-party > > > and there are thus two license headers in the files. This is in > > > conflict with rule 2. > > > > > > Could you clarify if rule 2 is not a rule but only a guideline > > > that can be overruled in PPMC's case-by-case decision? What's your > > > recommendation? > > > Ie. > > > can > > > we keep the 2 headers in place? > > > > > > Best regards > > > Leonard > > > > > > > > > [1]: > > > > > > > > > 0. The term "third-party work" refers to a work not submitted > > > directly to the ASF by the copyright owner or owner's agent. This > > > includes parts of a work submitted directly to the ASF for which > > > the submitter is not the copyright owner or owner's agent. > > > 1. Do not modify or remove any copyright notices or licenses > > > within > > > third- > > > party works. > > > 2. Do ensure that every third-party work includes its associated > > > license, even if that requires adding a copy of the license from > > > the third-party download site into the distribution. > > > 3. Do not add the standard Apache License header to the top of > > > third- party source files. > > > 4. Minor modifications/additions to third-party source files > > > should typically be licensed under the same terms as the rest of > > > the rest of the third- party source for convenience. > > > 5. Major modifications/additions to third-party should be dealt > > > with on a case-by-case basis by the PMC. > > > > > > [2]: > > > https://github.com/apache/incubator-mxnet/issues/17329#issuecommen > > > t- > > > 641311199 > > > > > >