While reviewing our libraries I stumbled over the zstd implementation (https://github.com/facebook/zstd/blob/dev/README.md). It (and some of its derivatives) is dual licenses under a BSD-3-Clause and GPLv2 license.

This is fine for me, however, I was wondering:

As a library author, what are the reasons to do this?

The BSD-3-Clause is already more relaxed and compatible with GPLv2. Why then would I dual-license my project with these two licenses?

(I chose the specific example above because it is "(c) Facebook" so I guess someone at that substantial company though this to be useful.)


1 Answer 1


It would appear that there is no point to it, apart from a formal "advantage" as noted in the comments above: "... it may be more convenient for a downstream GPL-licensed project to receive upstream code under the GPL proper to simplify licensing information ..."

The Zstd example in the question was answered on github and cites a legacy artifact:

terrelln commented May 28, 2024

Initially Zstd was licensed under BSD + PATENTS clause, which was not compatible with GPL. Zstd was then dual licensed under GPL in order to be merged into the Linux kernel. Later, the PATENTS clause was removed from the BSD license.

So if licenses change, one may end up with a dual licensed project where the current combination does not make much sense anymore - but removing one of the licenses outright might be too much hassle.

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.