I'm interested in borrowing functions from a file in a project dual-licensed as MIT-or-UNLICENSE in my package that I intend to also be dual-licensed as Apache-or-MIT. Is this possible? How should I properly cite the borrowed source?

My first thought is to add a disclaimer to the top of the derivative file saying it was taken under the terms of UNLICENSE (i.e. public domain), but unsure if that would be sufficient. Would including this mean my project won't actually be under the terms of the Apache-or-MIT license?

1 Answer 1


I don't really like the UNLICENSE, because I am not 100% convinced that that license does exactly what was intended in jurisdictions that don't allow you to dedicate your work into the public domain1.

The MIT license explicitly allow sublicensing of the work, so my recommendation would be to go that route. Then you can, in the file that you borrowed from the other archive, add a note below the existing license text that you sublicense that file under the Apache-or-MIT dual license.

1: One example of such a jurisdiction is Germany. There works only become public domain when the copyright term on the work expires 70 years after the death of the author.

  • Would something like this be sufficient at the top of the file? "// Taken from the XXX repository under the MIT license", "// [EXISTING MIT LICENSE TEXT]", "// This file has been sublicensed under the Apache-or-MIT license."
    – Radish
    Dec 4, 2019 at 16:06
  • 1
    The comment about the sublicensing would have to be a bit more explicit. More along the lines of "// This file has been sublicensed by @Michael under a dual license of the MIT license (see above) and the Apache 2.0 license // [LICENSE BLOCK FOR APACHE 2.0 LICENSE]". Dec 4, 2019 at 16:33
  • Thanks! Just to clarify, I believe it should be "MIT OR Apache" (not and), since "and" suggests a superset - see en.wikipedia.org/wiki/….
    – Radish
    Dec 4, 2019 at 20:16
  • @Michael, the phrase "dual license" indicates that there is a choice for the recipient. The things you can choose between are usually joined with "and". Dec 5, 2019 at 7:49
  • This is not true according to the SPDX spec: 'Disjunctive "OR" Operator: If presented with a choice between two or more licenses, use the disjunctive binary "OR" operator to construct a new lincense expression, where both the left and right operands are valid license expression values.', 'Conjunctive "AND" Operator: If required to simultaneously comply with two or more licenses, use the conjunctive binary "AND" operator to construct a new license expression, where both the left and right operands are a valid license expression values. '
    – Radish
    Dec 5, 2019 at 22:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.