First of all you need to know, that I've made a research on Internet and I've read dozens of topics. Moreover I asked another programmers about this issue. I still don't know what to do.

The problem has occurred when I decided to publish my software written in Python. I would like to publish it on GitHub. I know that one of the most popular license on this website is the MIT license. My program uses the SciPy library. I checked its license and it looks like the BSD (3-clause). Moreover I know that the MIT and BSD licenses are compatible which means more or less that one of them doesn't limit the second.

How the program uses the SciPy? My script only imports different modules from the library and calls functions that I need. That's all. Moreover, I don't want to distribute source code nor binary file of the SciPy library. Ok, but the license tells us:

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: (...)

Thus, as I understand it means that I have to add this license to my project because:

(...) use in source (...) without modification (...) = import module or call functions

Even the FAQ on Python Wiki recommends to rely on licenses. Unfortunately this implies some doubts:

  1. License multiplication
  2. Thousands of one-license software
  3. Where are previous license?

Ad.1 If we follow the above quotation, it means that license compatibility doesn't make sense, because we always have to add a license of the next generation, even if both are the same level.

Ad.2 I saw many projects on GitHub which were only licensed under the MIT license. In particularly there were Python programs and some of them used numpy and similar libraries. I didn't see additional licenses. Some of projects are very popular. It means that their authors should add licenses to own software?

Ad.3 According to this topic:

NumPy is mostly written in C.

I checked one of the most basic library of C stdio.h which contains:

Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, advertising materials, and other materials related to such distribution (...)

But I can't find this text in the SciPy documentation. Ok, maybe SciPy developers didn't use stdio.h but I expect that not only this file contains a such license.

Maybe I'm wrong, I hope so. I hesitated to start this thread, because perhaps I don't have a basic knowledge, but this topic confirms that my doubts can be reasonable.


If your MIT-licensed code calls a BSD-licensed library but you do not redistribute this BSD-licensed library yourself, there is no specific need to attribute nor reference this library beside mentioning it as a dependency (typically for a Python package this would be in your setup.py).

So you do not have to include the SciPy license nor the numpy license in your project proper.

In contrast if you were to redistribute as part of your project any of SciPy or numpy then and only would you need to include their license for attribution.

See also this thread for more details on dependencies.

On the topic of includes in C/C++, the same applies with a twist: a source redistribution of numpy does not contain these includes. They are part of the standard C library and will be only "included" at build time. Technically redistributed binaries (assuming they are dynamically linked for now) do include effectively these includes. But the community approach is that in this case for standard libraries attribution for the license of an infrastructure-like "System Libraries" is not required and this is even spelled out explicitly in some licenses (such as L/GPL family).

If binaries were to be redistributed and statically linked with the C library then attribution would be required, for instance if a pre-built static numpy binary was redistributed.

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.