Is there a chart of which OSS License is compatible with which?

Michael Stum picture Michael Stum · Dec 30, 2009 · Viewed 14.2k times · Source

I have a fairly good understanding of individual OSS licenses, but I always have trouble when I want to use code under different licenses. BSD vs. Ms-PL, Apache 2 vs. GPLv3 etc.

Is there some sort of "mating chart" that lists which licenses are compatible with which ones?

Answer

Brian Campbell picture Brian Campbell · Dec 30, 2009

The Free Software Foundation maintains a list of licenses, categorized as GPL compatible, GPL incompatible, and non-free. This can help answer the most common question, which is whether a license is GPL compatible. Since there aren't many other free software licenses which require that the entire derived work be distributed under the same license like the GPL does, compatibility issues are usually lower between other licenses as long as the code stays in distinct libraries or source files.

As far as the Ms-PL goes, you can probably use the FSF list to determine compatibility for that as well. The Ms-PL is a (very) weak-copyleft license (the Ms-RL is slightly stronger, but is still categorized as weak-copyleft). This means that code distributed under it must remain under it, thus making it GPL incompatible, but that you can generally link it to code under permissive or other weak copyleft licenses, as long as you follow the terms of each license and the separately licensed code reside in separate libraries. The only licenses it is likely to be incompatible with are strong copyleft licenses, like the GPL and AGPL. (Standard disclaimer: I am not a lawyer, and this is not legal advice. If you need legal advice, you should talk to a qualified attorney).

For a more limited set of licenses, you can check out this Free-Libre / Open Source Software (FLOSS) License Slide by David Wheeler (reproduced below). Arrows indicate that two licenses may be combined, and that the combined work can effectively be treated as having the license at the end of the arrow, possibly with some additional restrictions taken from the license at the start of the arrow.

License compatibility chart

the following paragraph is a generic rant on this topic, related but not directly relevant to your question

The difficulty of determining license compatibility, and simply in understanding the ramifications of various licensing terms, is why license proliferation is such a bad thing. Please, please try to use a common, well understood license, such as the GPL, LGPL, BSD 2-clause or 3-clause, MIT/X consortium license, or public domain dedication, if at all possible. Whatever you do, don't invent your own license. If you must, use the license that is common for the project you are contributing to, to maintain compatibility with the rest of the code in that project. If you follow these rules, you will help reduce confusion, and improve license compatibility.