I'm going to write a C library that contains the major and most useful functions from Apache Commons IO's Java package. I will rewrite in C a lot of functions contained in Apache Commons. What do I need to do when licensing my library? Do I have to write something about intellectual property? I'd like to use a BSD 2-Clause license for my project.
The Apache license is "sublicenseable":
- Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
I can therefore create a derivative work of Apache-licensed code under any license I please BUT I still must abide by the terms of the Apache license itself, including keeping notices, license texts, change tracking, etc and both license terms will apply.
Therefore, sublicensing using a BSD is a rather moot point and I would rather instead keep thing under the Apache 2.0 license.
So I have to include in my source directory the NOTICE and the LICENSE of Apache Commons and I have to write in my NOTICE file that my work is a derivative from another Apache licensed project?
Yes, and a little more: the section 4 of the Apache license is clear and explicit:
a You must give any other recipients of the Work or Derivative Works a copy of this License; and
b You must cause any modified files to carry prominent notices stating that You changed the files; and
c You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
d If the Work includes a "NOTICE" text file as part of its distribution [...]