I have an MIT licensed project and I want to use a BSD-3 library as a package. The BSD-3 library will only be used for implementation purposes, so the users of the MIT project will not be able to use it directly. No files will be copied from the BSD-3 library, just the package used via a build tool (e.g. Gradle) that will be hosted on maven central, so the compile can pass. Furthermore, I will be publishing the MIT project on maven central as a package, and from there on, people can do whatever they want with it.

Is that possible? Or I must change the MIT to BSD-3? I know that if something is licensed under BSD-3 it can't be re-licensed into MIT (although the opposite is true), but does the same apply with linking too?

Suppose I open up a .txt file in the MIT project and start writting code. In that code I make calls to functions that exist in the BSD-3 library, but there are no implementations, no packages and definitely no function copy pasting from the BSD-3 libary to the MIT project, just characters in a .txt file. Of course, it will not pass the compile because of missing function definitions. The question here is: Am I really using the BSD-3 library? Am I obligated to its license?

If the anwser is: Yes you are using the BSD-3 library and therefore you are obligated by its license, then the anwser to the main question is that I can't link a BSD-3 library to an MIT project. But, if the answer here is No, then there just might be hope, so let me demonstrate the next case.

Having a file that does not compile is useless, so you add a non-transitive depedency on the BSD-3 library, so the compiler can actually understand all those function calls. Does that depedency addition make it impossible for the project to be MIT licensed? Isn't a depedency like saying: "Hey, this is code with some symbols in it that make no sense. But, you can make sense of them using that library, here's the link to it.". I guess, declearing a depedency does not count as redistributing the libary, right?


If your MIT project makes calls to a BSD-3 library, then you are using that library.

But the MIT and BSD-3 licenses are both permissive licenses that don't put any restriction on how code that is covered by them can be used. There certainly isn't any requirement that library code can only be used by code under the same license.

And calling a function from a library does not change it's license in any way. The license covers under what conditions you may create copies and make changes to the code, but calling a function is something else than making a change to the function's implementation.

  • Also, the wikipedia page on BSD-3 states that linking from code with a different licence is a Yes. Is that basically the answer to my question? MIT and Apache 2.0 are the same here. What exactly linking means here? Is that what I described above? – user20241 Nov 27 '20 at 12:06
  • 1
    @Finite, Yes, that corresponds to what you described. – Bart van Ingen Schenau Nov 27 '20 at 12:49

Your Answer

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