Licence Question

You must include the text of the license and copyright notice. This is the only restriction the MIT license places on copying/distributing of covered software:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

Read the license for details.

Disclaimer: This is only what I mean when I use the MIT license for my work.


First, let's only consider shared (dynamic) linking to an MIT-licensed library in a language like C. In this simple case, the term "The Software" refers to the source or any of its compiled forms.

  • Suppose you distribute your own source code. There are no obligations on you to convey that your code uses the library. However, you probably do want to mention it anyways (along with a minimum required version), because it is impossible for people to use your code without building that library.
    • In rust, Cargo.toml does this for you
  • Suppose you convey a compiled form of your code. In UNIX, it is common to only convey that one file, and require the library to already be on the user's library path. In that case, there are no requirements.
  • On Windows, it is common to include DLLs of libraries with your binary. In that case, the MIT License and copyright notice must accompany that DLL.

For trickier cases like static linking, header-only libraries, and generic monomorphization, I define "The Software" to mean whatever produces the same obligations as above:

  • If you convey a static compiled form of the MIT library itself (libthelib.a or thelib.lib), you must include the license and copyright notice.
  • If you only convey your own binary, it may incidentally contain compiled forms of the library's source, but they are only there to be used by your software. This does not count as "The Software" and thus there are no obligations.

Now, earlier, I made claims about "the spirit of the license." Allow me to qualify these claims.

Whenever I chose the MIT license for any of my work, I chose it because it was short and simple. It doesn't drown you in text like some other permissive licenses. I chose it because I want my code to be useful to anyone that it can be useful to, and I don't want legal business to get in the way.

Header-only libraries and static linking feel to me like "gotchas," and I find it hard to see why anybody using this license would agree with me on the straightforward case of dynamic linking, yet expect more stringent obligations in those edge cases.

That said, this discussion has made me realize that the text of the MIT license is very imprecise, and that it fails to accurately convey the terms under which I wish to license my own code.

1 Like

Ah okay i understand the difference between @mbrubeck and @ExpHP ist the definition of the term "The Software".

When i follow @mbrubeck then i must deliver an copy of the mit-licence (MIT.TXT or so) and and copyright notice above all mit-licenced librarys that i have used and that for instances (sourcecode, binary, sourcecode/binary).

When i follow @ExpHP then is this only necessary when i give others for download the complete sourcecode package. The complete static executable that have all mit-libs completly static linked in one executable, then not.

I'm still a bit confused because there are sourcecode crate/libs that have an unlicence based entirely on mit/apache2 and someone who uses this unlicence Crate/Lib has no obligations whatsoever.

The Unlicence Lib/crate can be unlicence why the mit/apache2 says that this can be, but the two licences says that the Unlicence must copyright notice be have but an project that uses the unlicence library must have an copyright notice.

A little bit confusing i say :slight_smile:.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.