If I create a new MIT-licensed OSS project and use other software with different licenses (MIT, GPLv3, no license), what is the best way to create a compliant repository?

We thought of adding a LICENSE.md with the MIT license and LICENSES.md with a collection of the used projects and links to their licenses or to the repo/gist if no license present.

Also, for the copyright, is it enough to include it in the included source files themselves?

This is a Ethereum project and therefore no binaries are declared as dependencies, but the source files have to be included themselves.

1 Answer 1


If a software system uses components under different licenses, then it must satisfy the requirements of all licenses. This can be impossible since some licenses contain contradictory terms. I recommend you read each license you use, though the GPL is admittedly rather long.

A few pointers:

  • No explicit license means “all rights reserved”. You cannot use unlicensed software unless you're the copyright holder yourself.

  • The GPL requires that any code using the GPL'ed code can only be published if it is also licensed under the GPL. Therefore, an MIT-licensed project that depends on GPL-licensed components cannot be published. The reverse (a GPL licensed project depending on MIT components) would be perfectly possible.

For your mentioned license combination (MIT depending on GPL and depending on unlicensed software) it is not possible to publish that project. To achieve compliance:

  • You would have to obtain a suitable license for the unlicensed software.
  • If you want to use GPL components, you have to publish your code under the GPL. If that is not possible, you need to find another library for that functionality.

I am not familiar with the Ethereum execution model. This may influence how you can use GPL software, which may add further complications.

You automatically have copyright for any creative work (incl. computer programs) that you create. You should state your your copyright at least in a LICENSE and/or README file. Many people recommend that you start each source file with a license header that includes a copyright statement, the project it belongs to, and indicates the license (in case of MIT, you can put the whole license in each file).

If you were to have a compliant system, a project with dependencies usually need not display the licenses of dependencies. However, most licenses require that you do display the license if you distribute the dependencies as well, e.g. when you compile your system to a binary or when you package your system as a self-contained source code bundle. Since the licenses of dependencies are part of your system's license, you could put all copyright and license information into a LICENSE file. Having both a LICENSE and LICENSES file would be confusing. If you store the licenses of dependencies separately, do note that in your LICENSE.

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.