TVM Distribute Questions about Apache 2.0 License

If I distribute the TVM which I modified in object format, then what should I to do about the 4(b) of Apache 2.0 License.

  1. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

    (b) You must cause any modified files to carry prominent notices stating that You changed the files; and

For example, I change the C++ source file “src/target/”, and then compile and distribute my modified TVM in object format, what should I do for the 4(b), because there isn’t file “src/target/” in my distribution.

LLVM add below exceptions to their Apache 2.0 License for this question.

---- LLVM Exceptions to the Apache 2.0 License ----

As an exception, if, as a result of your compiling your source code, portions of this Software are embedded into an Object form of such source code, you may redistribute such embedded portions in such Object form without complying with the conditions of Sections 4(a), 4(b) and 4(d) of the License.

Will we add something like this exception in our License?

@tqchen, @masahi, @zhiics, @ziheng, @comaniac, anybody can help? This is very important to AI chip company like us.

I am not a lawyer so it is my personal interpretation.

Given it is source modification and the compiled object is considerred as derived from(, I believe ALv2 applies to your particular case. I also don’t think the LLVM exception will apply to this case.

This being said, you can certainly distribute your derived work, as well as the artifact (as original license permit you to do so) via ALv2 or any license that does not conflict with the original terms in ALv2. Note this is not a hard requirement, and only means you need to keep a copy of TVM’s license as well as the NOTICE file.

See also for the formal trademark policy. From a trademark perspective, given it is a thirdparty product.

  • It is important not to name the artifact 'AwesomeChipX TVM"
  • Instead “AwesomeChipXCompilerSDK powered by Apache TVM” is allowed and encouraged.

Note that it is pretty common(and encouraged) for projects to bundle and modify code from other projects. This is explicitly encouraged by OSS licenses. See how tvm handles such case:

Essentially, clearly list the folders that the specific license applies. This is mainly to make sure your consumer won’t be surprised, as all licenses are clearly listed.

Also just digged a bit through the legal discuss thread in ASF. See which might be helpful

Thank you for your detailed replies, the comments of this JIRA issue inspired me, and after reading more materials, my current comprehension is something below.

  1. The 4(b) of ALv2 is vague, it only require me add a change statement for each of my modified file, but it don’t restrict the format of the change statement, so, for example, I can just add one line “Modified by company XXX.” in each of my modified file to comply 4(b) of ALv2.
  2. Just like the comments of this JIRA issue said, ALv2 don’t requires me to provide a list of modifications, so I needn’t to put my changes of the file “src/target/” in my object format distribution package.
  3. ALv2 require me to put a copy of TVM’s license and the NOTICE file in my object format distribution package, certainly I have my own license file in the package, I will describe the license that TVM use and point out the TVM license file path in my own license file.
  4. Rademark policy of ALv2 require me to avoid using “TVM” in my distribution name, I can refer what TLCPack does.

Useful Materials

Like above link shown, we know Huawei AKG use and modify TVM, each of their modified file have a change statement.