• Home
  • Blog
  • Top 10 Microsoft Public License (Ms-PL) Questions Answered

Top 10 Microsoft Public License (Ms-PL) Questions Answered

Microsoft Public License (Ms-PL) Questions Answered
Microsoft Public License (Ms-PL) Questions Answered

Continuing with our Open Source Software License FAQ series, today, we’ve compiled a list of your top 10 questions about the Microsoft Public License. The earlier two posts discussed the most popular questions about the GPL and the Apache 2.0 licenses respectively.

The Microsoft Public License is a free and open source software license released by Microsoft, which wrote it for its projects that were released as open source. You’ll see Ms-PL a lot if you’re into .NET coding. Microsoft’s free open source project hosting site, CodePlex, also has a lot of Ms-PL’ed projects.

1. What are the Microsoft Public License (Ms-PL) terms and conditions?

You are free to reproduce and distribute original or derivative works of any software licensed under the Ms-PL license. However, you may not use any contributors’ name, logo, or trademarks when you do so. The Ms-PL protects the authors by explicitly not offering any express warranties or guarantees for using your code. So the author is not liable if the code doesn’t work well in some usage.

When you distribute software (or its portion) under the Ms-PL, you’re not required to distribute its source code. You may do so if you want to, but you’re not obliged. However, you’re required to:

  • Retain all copyright, patent, trademark, and attribution notices that are originally present in the software.
  • Additionally, if you distribute any portion of the software in its source code form, you may do so only under the Ms-PL by including a complete copy of this license with your distribution. If you distribute any portion of the software in its compiled or object code form, you may only do so under any other license that complies with the Ms-PL.

It is important to note that the Ms-PL terms and conditions document is very short, concise and written in a very coherent language. Microsoft wanted to be very clear and direct with the open source community, which also helps adoption rate (as we know from the BSD license).

2. Is Microsoft Public License (Ms-PL) considered copyleft?

A Copyleft license offers the right to distribute modified and derivative versions of a program, provided that the same rights and freedoms are preserved for downstream recipients of those modifications and derivatives. When you distribute Ms-PL’d software or its portion in its source code form, you may only do so under the Ms-PL license. When you distribute the Ms-PL’d software in compiled or object code form, the Ms-PL license lets you do so only under “a license that complies with the Ms-PL”.

Hence, the Copyleft effect of Ms-PL is clear when choosing to distribute source-code version of the modified or derivative Ms-PL software. It seems that when distributing compiled or object code versions of modified or derivative Ms-PL software, the same rights and freedoms need not be passed through to downstream recipients, even though the Ms-PL text is not entirely clear on this point. This interpretation is supported by Microsoft, the steward of Ms-PL, who maintains that one may distribute compiled or object code versions of Ms-PL’d software under terms of his or her choosing, which must not grant downstream recipients more rights (but can grant them less rights) to the Ms-PL’d software than are granted to that person.

3. What is the difference between Microsoft Public License (Ms-PL) and Microsoft Reciprocal License (Ms-RL)?

The Ms-RL license is a copyleft license that is more restrictive than the Ms-PL. It allows you to modify and distribute any Ms-RL’ed component as long as the modified source files are included and licensed under the Ms-RL.

However, you can license the other files of the software, which are entirely your own work, under any other compatible license you may choose.

4. Is Microsoft Public Licenses allowed in commercial products?

Yes. You can use both Ms-PL and Ms-RL licensed components in commercial products as long as you meet the terms and conditions of these licenses.

5. How can you use a component licensed under the Microsoft Public Licenses in your commercial project?

If you are using Ms-PL’ed components and decided to release the source code of your product, then you will be able to distribute your software only under the Ms-PL. If you choose to release the compiled or object code, you can release it under any other Ms-PL’ed compatible license.

If you are using Ms-RL’ed components, you will need to distribute the modified source files, which can be problematic for many commercial products. However, you may license other files that are entirely your own work under any terms you choose.

6. Is Microsoft Public License compatible with GNU GPL?

No. The Microsoft Public License is not compatible with the GNU GPL. The incompatibility between GPL and Ms-PL stems from the fact that GPL is much more restrictive than the Ms-PL, for example, GPL’s requirement to distribute the source code does not correspond with the Ms-PL clause that enables to compile the program without distributing the source code.

Even the Ms-RL, which is a copyleft license, is not compatible with GPL. It is believed that Microsoft deliberately crafted it open source licenses to be incompatible with the GPL, since as many other commercial companies, it dislikes the fact that if you submit a code under this license, your code can then be taken into a proprietary black hole by someone else.

7. What is the difference between Microsoft Public License and GPL (and LGPL)?

Microsoft Public Licenses were created from a more commercial perspective as you can expect from a commercial company, like Microsoft.

The main difference between the Ms-PL and the GPL, is that the Ms-PL requires you to release your source code only if you’re distributing a Ms-PL licensed software (or its derivative) in its source code form while the GPL requires you to always release your entire source code if you’re using any GPL-licensed component in your software.  The GPL license also does not make any distinctions between the original or modified GPL licensed files and your proprietary code, once you have combined it with a GPL component.

The LGPL is a weaker copyleft version of the GPL that allows proprietary software to use or link to LGPL’ed components without having to subject their proprietary files to the LGPL (i.e., only modifications to the LGPL original files needs to be open sourced). The Ms-RL is somewhat closer to the LGPL. When you license your software under the Ms-RL, you have to release all the Ms-RL’ed components in your software under the Ms-RL license. Also, you can choose to use different licenses for the components used in your software that were not originally licensed under the Ms-RL.

The Complete Guide to

Open Source Licenses 2022

8. What is the difference between the Microsoft Public License and the MIT/BSD licenses?

MIT is one of the most permissive free software licenses. Basically, you can do whatever you want with a software licensed under the MIT license – just make sure that you add a copy of the original MIT license and copyright notice to it.

The BSD license is another highly permissible license that allows you to modify and redistribute software licensed under the BSD license as you like just as long as you attach a copy of the original BSD License to it.

The MIT and BSD licenses, both, don’t require you to release the source code of your software, nor do they have any conditions about mixing the code licensed under them with codes released under other licenses.

However, in the case of the Microsoft Public License, if you do choose to release the source code of your product, you can do so only under the Microsoft Public License.

9. What is the difference between Microsoft Public License and Apache 2.0?

The Apache License 2.0 is a permissive open source software license — so you can release your modified version of the Apache licensed product under any license of your choice (with the unmodified Apache licensed components always retaining the Apache License).

With Ms-PL, however, if you choose to distribute the source code of your product, you can only do so under the Ms-PL license. In case you choose to distribute the object code of your product, you can do so under any license compatible with the Ms-PL.

10. Can you sell Microsoft Public Licensed open source software/code?

Yes. You can sell any Microsoft Public Licensed open source software. However, while you do, make sure that you don’t infringe anyone’s trademarks.

So these are ten of your top Microsoft Public License questions answered. Do you have any more? I would be happy to find the answers for you.

The author of this blog is not a lawyer, and you should not interpret this as legal advice of any kind. Information is provided on an as-is basis. For a legal consultation, please contact your legal advisor.

Learn more about Open Source Licenses with our complete guide.

Meet The Author

Rami Sass

Rami Sass is co-founder and CEO of Mend.io, a company that enables organizations to accelerate‌ the development of secure software at ‌scale‌ with automated tools that help bridge the security knowledge gap. Since the company’s founding in 2011, Rami has grown Mend.io from a small Israeli startup to a global business with over 300 employees across several countries and hundreds of enterprise customers including Microsoft and IBM. 

Subscribe to Our Blog