3

I have a project that is currently licensed under the BSD 3-clause license, and I would prefer, going forward, to switch to the Apache 2.0 license. I plan on contacting the original contributors to see if they are willing to relicense their old code, but I am not counting on the majority of users doing so. However, this is not a major problem, since BSD and Apache 2.0 are compatible, so long as I retain the original copyright notice.

My question is, what's the best way to include the original copyright notice? Currently I have a single LICENSE file that includes the BSD 3-clause license. I'm planning on adding an AUTHORS file that will list all the contributors and which license their contributions are under (though this can also be inferred from the git history, if they haven't relicensed). The three obvious options are:

  1. Two LICENSE files - LICENSE and LICENSE_OLD (or something like this)
  2. A single LICENSE file containing both the Apache 2.0 and BSD license with a notice about which applies to which parts.
  3. A LICENSE file containing the Apache 2.0 license, plus an included_licenses/ folder (or equivalent) that contains the BSD license (plus any other copyright notices necessary if I include code from other permissively licensed projects).

My preference would be #2, but my main worry there is that when you use standard boilerplate, it's easier for GitHub or other programs to automatically categorize your project, and I fear that combining two licenses may cause problems down the line. #3 is fine but it does add a bit of clutter to the repo.

Are any of these approaches more standard than others? Are there any known tricky legal issues with any of them?

  • Good question! Have you looked at using SPDX identifiers too? – Philippe Ombredanne Nov 8 '17 at 19:46
  • I'm not sure how SPDX identifiers would help in this situation. Just so github picks it up properly? Where would I put it? – Paul Nov 8 '17 at 20:19
  • Will the time and effort you put into changing the license be worth the benefits of using the Apache license? Going from closed to open source offers clear advantages, going from GPL to BSD or Apache can also offer clear advantages, but from BSD to Apache, is it really that big a change that you will benefit from the effort it will take? Maybe make a count of files you can easily change and see if it represents a large enough portion for the project to be considered as an apache licensed project. – sambler Nov 9 '17 at 3:51
  • Github would unlikely pick it up as the Licensee gem they use for detecting licenses is very limited in what it can detect... SPDX ids would help remove boilerplate – Philippe Ombredanne Nov 10 '17 at 16:49
3

If you really needed to change your license terms, I would say have your LICENSE file contain the Apache license. Make it a definite cut - this version is BSD - this version is Apache - the change is just a part of history. Present the project as an Apache licensed project, while the necessary files contain varying license info as needed.

If you look at the blender project, it is presented as a GPL project. You will also find 6 license files in the repo, while other licenses, such as zlib and BSD are also in effect for certain files throughout the repo. A few years ago a portion of it was re-licensed under the Apache license, but as a whole, it is still considered and promoted as a GPL project.

As for your file changes, alter the license header in the files you can and leave files you can't with the BSD license, then in the readme or the license section of your docs, state that the project is released under the Apache license and contains portions that are copyright xxx and available under the BSD license and that previous versions were released under a BSD license.

At the end, I would suggest that if it is just for your preference, don't bother changing the license. If you have a legal reason, then go and change the license on as many files as you can. You may want to consider splitting some of your files that are in dispute, foo/file_a.c is BSD code while foo/file_b.c is Apache code.

  • None of the files have license headers, it's all just under the LICENSE file. I don't see much problem switching the license, though. – Paul Nov 9 '17 at 4:14
  • @Paul Using an SPDX-License-Identifer might a way to have a minimalist license header without mucho boilerplate then – Philippe Ombredanne Nov 10 '17 at 16:51

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.