Suppose I have some open source project which makes use of both GPL and MIT licensed components. The source code of my project is also MIT licensed (not copyleft).

What is the right way to indicate this and comply with all licenses in the final (binary) distribution of the software?

Many projects just include a single LICENSE.txt or COPYING.txt file, but due to the multiple licenses I'm not sure how to apply that here without creating confusion. The requirements are the following:

  • Due to the GPL component the binary distribution must be distributed under the GPL. This has to be made clear.

  • But I don't want to create the misconception that the project's source code is GPL licensed, as it is not (and has substantial reusable parts that do not depend on GPL'd libraries).

  • The license of all utilized libraries needs to be indicated, with attribution (i.e. from the MIT license: "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.")

What is the usual way to achieve this? What text should go where in the final package, to make sure I comply with all requirements and do not create confusion? This is not a GUI program.

  • 2
    @Martijn - I read the first line of the currently first answer and discovered a mistake: If you use the GPL, you of course do not need to put the whole project under the GPL as the influence of the GPL ends at work level. If you create a collective work that includes a GPLd work, the GPL only applies to the work that actually is under GPL. For the whole project, the accumulated restrictions of all used licenses apply.
    – schily
    Commented Sep 15, 2015 at 10:13
  • 1
    @schily Yes, so I can still license the code I write under a more permissive license than the GPL, though the final binary product must be distributed according the the GPL. However, people can still take parts of my own code and re-use it without the GPL's restrictions. Of course such licensing only makes sense if some of my code is sufficiently independent of any GPL'd libraries to make it useful on its own.
    – Szabolcs
    Commented Sep 15, 2015 at 10:25
  • 1
    That question is about combining source from different licensed sources into a single file, which will almost certainly have mutual depencies. This is a much tighter coupling than the static linking that the FSF and most others consider sufficient for the GPL to require covering the entire work under the GPL. Since that question is a non-gpl question, it's only touched upon briefly (and the comment above indicates that it's a partial answer to this question, not a full one)
    – Martijn
    Commented Sep 15, 2015 at 10:28
  • 1
    The exact way to go depends on whether you created a derivative work or a collective work. See my answer. For a better advise, I would need to know more of the project and license structure and where different single identifiable works end.
    – schily
    Commented Sep 15, 2015 at 10:31
  • 1
    OK, then back to my original issue: A project and a work is not always the same. Licensing is a hard to catch thing and you need to be very careful in your wording unless you like to be mistaken just because you did not use the right terms to describe something.
    – schily
    Commented Sep 15, 2015 at 10:53

2 Answers 2


Without knowing more internals of the project, it is hard to give an advise. It depends on the way the different licenses are used together.

  • If you create a work based on a GPLd work, you need to make the whole work use the GPL. Such a work is called a derivative work in the legal speech. It is created when you take a GPLd work and modify it or if you develop a work that calls code from GPLd code. The latter case is even disputed amongst lawyers.

  • If you however create a collective work where the GPL is just the license used by one of the works, only the restrictions from the GPL sum up to the restrictions for the whole collective work. Given that the GPL has no restrictions on the licenses used for code in libraries that is called by a GPLd work, a collective work is typically created if a GPLd work calls code from a library written by a different code owner and this library may have any possible license.

If you create a collective work you should describe work limits in an unambiguous way.

Note that an OS distribution is typically a collective work of the parts rather than a mere aggregationas the creation of the distribution is a task that requires a certain level of creation that makes a work which causes the Copyright law to apply.

  • 2
    All good points, but my question was not what license to apply, but how to indicate the licensing in the distribution. The second answer to the question Martijn linked to gives a possible answer when it mentions the NOTICE file.
    – Szabolcs
    Commented Sep 15, 2015 at 10:43
  • 2
    Offer a file that lists and names all separate works and the licenses that are used by identifiable works.
    – schily
    Commented Sep 15, 2015 at 10:45
  • @Szabolcs, yeah, you can just list it in a file, like this, bxr.su/n/distrib/notes/common/legal.common, or this, bxr.su/o/lib/libssl/src/LICENSE, or this, bxr.su/o/usr.bin/ssh/LICENCE.
    – cnst
    Commented Nov 18, 2015 at 23:32

Check what each license asks for, and comply with each. Probably a file saying "Piece A is from AAA, under Apache License; Piece B you'll find on github at B&B, under GPLv2; Piece C is Gplv2+, from FTP CXY; ..."

In any case, common courtesy (to contributors of the pieces, to people who want to extend/adapt your software) would say to do the above, even if the license doesn't ask to do so.

  • This does not answer the question.
    – Szabolcs
    Commented Feb 13, 2020 at 7:38

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.