Alice and Bob write a piece of source code (call it Source1) and publish it under the BSD 3-clause license. Later, Bob and Charlie are working on a software project, licensed under AL2 (Apache License v2). Bob wants to add Source1 to the new project's source (with/without modifications).

So far, this is possible and easy - Source1 be introduced and distributed under 3-BSD while the project as a whole and the non-Source1 part of the code in particular are distributed under AL2; no problem.

However, for various reasons which we shall not go into, all code in the new project must be distributed under AL2. Every file, every function, everything.

What can Bob do so as to be able to meet this condition (other than not use Source1)?

Bonus question: Same scenario, except Source1 has not actually been published; it has just been decided and set in writing that it may be published under the terms of the 3-BSD license. Does this change things?

  • 1
    If it is only Alice and Bob that contributed to Souce1, then the most straightforward option is to ask Alice for a dual license (BSD3 + Apache) for her contributions to Source1. – Bart van Ingen Schenau Mar 22 at 16:23
  • @BartvanIngenSchenau: I am actually thinking about that, but it would be essentially circumventing the issue. – einpoklum Mar 22 at 16:45

This may be possible. For the purpose of this answer I'll assume that the BSD-3 covered software was written by third parties and does not share any copyright holders.

The 3-clause BSD license makes three requirements:

  1. for source code: license and copyright notices must be kept intact
  2. for binaries: the notices must be provided in the documentation or other material that is provided with the software
  3. that the names of copyright holders or contributors are not used to endorse or promote products

The first item is essentially automatic: just don't remove any legal notices. That would likely be illegal anyway. The Apache license contains the same requirement in section 4(c).

The second item is easy to comply with. You can distribute the software under the Apache license, but you must still keep the BSD license notice around. The Apache 2.0 license offers the NOTICE file mechanism in section 4(d) for such purposes.

The third item with its non-endorsement clause is tricky. The Apache license does not allow you to add extra terms to the license via the NOTICE mechanism (4(d)), and contains no comparable non-endorsement clause itself (but see section 6 for trademarks).

However, I would argue that the non-endorsement clause can be effectively ignored: it neither grants rights that the recipients would not otherwise have, nor does it restrict the rights that the recipient would otherwise have. It is just a reminder that the recipient may not claim endorsement anyway. This has also been discussed in How is the BSD GPL-compatible?

I would therefore argue that it is perfectly possible to include originally BSD-3 licensed code into a 100% Apache 2.0 licensed project, under the condition that the original license and copyright notices are added to the NOTICE file.

Counterargument: the BSD license does not give explicit or implied permission to distribute the software under a different license. While the BSD-3 clause license is compatible with Apache 2 (see above discussion), a relicensing is not actually possible without the consent of all copyright holders.

For a user of the entire project, the two alternatives are indistinguishable.

However, a user that extracts the originally BSD-covered part from the Apache-covered software encounters the question which license they would have to comply with. I would say:

  • they can always choose to comply with the Apache license
  • if the part was modified since its inclusion in the Apache-covered project, it contains Apache-covered code and the Apache license must be used
  • if the originally BSD-covered part was not modified, the user has the option to choose the BSD license as well: the code cannot be relicensed and the BSD license did not cease on this copy, it just received an additional layer of Apache-licensing on top

Bonus question: what if the original project has yet to be published? Copyright is automatic as soon as the work has been created, but the time of publication may be relevant for calculating the copyright term. Only the copyright holders can decide whether and when the work shall be published. In this case, the work would have a valid license that allows its publication by a third party.

Aside: the year in a copyright notice should be the year of publication, not the year of creation. The publisher may want to ensure that all copyright notices are accurate at the time of publication, especially if the software was created in one year but only published in a later calendar year.

At the beginning of this answer I ignored that the downstream project and upstream code shared a copyright holder. This makes a difference if the upstream code was a joint work by multiple authors, in which case every author may independently have full rights to the code. However, legal theories in this direction are generally ignored in the Open Source context, have unclear international implications, and are best left for lawyers in your jurisdiction.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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