I figured it's time to add a license to a project I've been working on for some time. I'm interested in a copy-left license. The project is a web application that can be built and self-hosted on a "home server", etc. I assume that due to the fact that it is a kind of service, the ,,distribution'' is equivalent to a ,,service on a server'', the AGPL will be an adequate license. However, my doubts concern external dependencies. All external libraries are used as dynamic libraries (DLL) downloaded from the Nuget platform when building the application, all these libraries use permissive licenses (eg. MIT, ISC, BCD-2, Apache 2.0). One of the libraries, on the other hand, uses several licenses, it is the Apache 2.0 license and the Microsoft Public License (MS-PL). My question is, in this case, is it possible to apply the AGPL license on my code, also taking into account that the distribution of the code looks such that anyone can clone the project from the repository and build it on their own server/computer? How do I specify that I would like to use the library with these two licenses as Apache 2.0?

It seems to me that it is also worth noting that I do not change the source code of the dependencies in any way because i use it them in the form of compiled DLL files.

Here is a link to the file where I have listed all the third party libraries used: Notices

  • MS-PL is (A)GPL-incompatible so whether or not you can use it depends on whether your use of the library forms a derivative work of the library. (If your AGPL-licensed work is in the same copyrightable work with the MS-PL work, downstream distribution cannot satisfy the requirements of both licenses simultaneously.) The conditions under which libraries form derivatives is a largely unknown legal question, unfortunately.
    – apsillers
    Commented Mar 1, 2022 at 15:26
  • I request that you provide exact details about the library with MS-PL license. @apsillers already provided a link to the compatibility list, which I recommend you to check for all your libraries' licenses. But for the case with the MS-PL and Apache license it depends on the exact situation. It might be a dual-license situation where you can pick the one you like. In that case you could state "In the case of Library_X, which is dual-licensed (MS-PL or Apache 2.0) I elect to use it under the Apache 2.0 license". Commented Mar 1, 2022 at 16:03
  • Oh, yes, if you have an option between MS-PL and Apache 2.0, then you may choose Apache and disregard my first comment. In that case, you have no GPL or AGPL conflicts whatsoever, as Bart's answer below already explains.
    – apsillers
    Commented Mar 1, 2022 at 16:56

1 Answer 1


My question is, in this case, is it possible to apply the AGPL license on my code [...]?

Yes, it is possible to apply the AGPL license to your code. All of your dependencies allow you to use them under a (A)GPL-compatible license.

The fact that one dependency is also available under a (A)GPL-incompatible license (Ms-PL) is of no consequence because it is dual-licensed and you get to choose which license terms you want to comply with.

How do I specify that I would like to use the library with these two licenses as Apache 2.0?

As you mentioned each library and its license(s) separately in your NOTICES file, you could just mention CsvHelper as

https://github.com/JoshClose/CsvHelper (Apache 2.0 / MS-PL)
Dual licensing under MS-PL and Apache 2.0
Used under the Apache 2.0 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.