Question

I'm exploring in the idea of porting an existing software package to another language. It's released under the Apache License 2.0, and is distributed for free; but there's a big different between using a library versus creating a copy of it. I would of course give full credit and be honest about where it came from, and I certainly don't plan to make any money from the port, just use it in other projects.

I've read the license of course, which says:

  1. 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.

[...]

  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:

    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, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file [...]

    You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.

Which sounds very much like a port (as a "Derivative Work") is entirely permitted with or without the author's permission provided I diligently retain copies of the license, existing copyright notices, attribution etc.

But that doesn't mean I understand all the implications of it. For example, would the port necessarily have to share the same license as the original?

I haven't started any of the work, nor have I contacted the authors of the package yet (though I will). I want to establish whether there's any risk of a lot of work being wasted. I also need to know whether I'd need to make a clean room implementation based only on the API, or whether I could base my work on the existing source code (which I haven't looked at yet).

Was it helpful?

Solution

Translations (both to a different natural language and to a different programming language) are considered to be Derived Works.

When creating a derived work that is so radically different from the original as a translation to a different (not closely related) programming language results in, it is actually quite hard to understand how the requirements from the Apache license should be applied. I would very strongly advise you to discuss with the maintainers of the original package how they would like to see the copyrights handled and you might want to discuss it with a lawyer as well.

The troublesome part is clause 4c:

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

The problem here is that with such a radical change, it is next to impossible to tell which (copyright and attribution) notices from the original work legally also pertain to the translated version and thus which notices must be kept and which must be removed.

OTHER TIPS

A copyright applies to the original source code only. I cannot provide legal advice (legally :) ) in my country, but when you use a different language, it is a different body of source code. Ethical considerations are a different matter. I would attempt to use a license that is agreeable to the original authors, to preserve the spirit of the original open source contribution to the community. Additionally, the original authors should be credited.

Licensed under: CC-BY-SA with attribution
scroll top