Currently I'm going to publish my project on GitHub.

It is initialized by some template in Visual Studio and developed with additional nuget packages, but I don't really understand what I did "use" and what should be considered as the derivative of other open source softwares.

For example, a nuget package that my project depends on has the 3-clause BSD license, so is it necessary to explicitly describe that my project uses the package somewhere in the repository, even if my code doesn't have any code taken from the library itself and just calling some functions of it?

Also, how about the template which is provided by Microsoft and given MICROSOFT SOFTWARE LICENSE TERMS?

Eventually, are these licenses for software developers who modify, edit or extend the original software, or for everyone who write some codes depend on it?

  • 1
    A license is only required to redistribute software. But in practical terms, anything that you "use" via a package manager like nuget will eventually become a redistributable. For example, if I download your software and build it, then the produced executable contains those third-party packages, so I must comply with the third-party license. In theory, if you are only distributing source code and not yourself distributing any third-party libraries yourself, you could defer the responsiblity to me (the packager), so that I have to ensure that any distribution I do complies with all licenses. – Brandin Nov 22 '18 at 7:38
  • The 3-clause BSD license is Open Source. For a question about "MICROSOFT SOFTWARE LICENSE TERMS" you should identify the specific package or license in question and ask about that. Some of them may be open source, and others may not be. – Brandin Nov 22 '18 at 7:42
  • "Are these licenses for software developers who modify ... the original software, or for everyone who write some codes depend on it?" -- What do you mean by this question? From a copyright and licensing perspective, modifying and extending software is the same sort of activity (copying and producing derivative works) as "writing code which depends on some other code" (copying and producing derivative works). Please clarify what the you think distinction would be. For example, some licenses (e.g. LGPL) give you specific permissions in specific situations (e.g. dynamic linking). – Brandin Nov 22 '18 at 7:46
  • 2
    @K.Makino the short answer to one of your questions is that you never have to include a license text in your repository for code that is not in our repository. – Bart van Ingen Schenau Nov 22 '18 at 18:01
  • 1
    @K.Makino "[I] will need to show all the license texts when I deploy it as a web app or distribute as .exe file, right?" -- Those are different situations than what you described here; they can probably be answered by searching the site or posting a new specific question. For example, a Web app may require different things or say different things about what counts as "distribution", depending on the license (e.g. AGPL). An .exe file may require different things depending on the license of the components (e.g. LGPL). When you give an .exe file to someone that is clearly distribution. – Brandin Nov 23 '18 at 6:05

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged or ask your own question.