The Mono project used to have LGPLed libraries. In fact mbundle still says when you run it

Note that statically linking the LGPL Mono runtime has more licensing restrictions than dynamically linking. See http://www.mono-project.com/Licensing for details on licensing.

As of March 2016 they re-licensed them under MIT. Given the project is many years old and probably has contributions by many outside contributors and those contributions were only provided as LGPLed contributions how were the able to change the license? Wouldn't they have had to get permission from every contributor for the last 12 years? Maybe those contributors had to sign some agreement?

2 Answers 2


If you take a look at Mono on GitHub, specifically the CONTRIBUTING.md file prior to its update after Microsoft bought Xamarin (and thus Mono), it states:

The runtime (mono/...) is a special case. The code is dual-licensed by Xamarin under both the GNU LGPL v2 license and is also available under commercial terms. For the runtime, you should either sign an agreement that grants Xamarin the rights to relicense your code under other licenses other than the LGPL v2 or your contribution must be made as an MIT/X11 license which grants us the same rights, but involves no paperwork. For the latter case, please specify on your commit(s) that you are licensing the changes under MIT/X11.

In other words, all contributions to Mono by 3rd party devs were either already covered by the MIT licence, or those contributors granted Xamarin rights to relicense. Thus when Microsoft bought up Xamarin, they acquired the rights to relicense everything as MIT.


Code contributions to Mono require that the contributor submit them under the terms of the .NET Foundation CLA (PDF link).

I'm not a lawyer, but this bit:

a. Copyright License. You grant .NET Foundation, and those who receive the Submission directly or indirectly from .NET Foundation, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license in the Submission to reproduce, prepare derivative works of, publicly display, publicly perform, and distribute the Submission and such derivative works, and to sublicense any or all of the foregoing rights to third parties.

seems to suggest that they can re-license as they wish. However, the Wayback Machine suggests that previously each license for contributions was evaluated individually:

I would like to contribute code to Mono under a particular license. What licenses will you accept?

We will have to evaluate the licenses for compatibility first, but as a general rule, we will accept the code under the same terms of the “container” module.

The contributing page for Mono also has this:

Contributing to the Mono runtime: If you are submitting changes to the runtime, you must make sure to release your change under the MIT license before it is integrated.

According to the Wayback Machine, that has been the case for a while.

  • 1
    Checking the wayback machine it doesn't appear the libraries I'm referencing were covered by that CLA
    – gman
    Commented May 27, 2016 at 18:45
  • @gman The Mono project seems to have some conflicting pages. See my additions.
    – 8bittree
    Commented May 27, 2016 at 18:59
  • The project started in 2004. That wayback machine page is dated 2014 :(
    – gman
    Commented May 27, 2016 at 19:43
  • The .NET Foundation was founded by Microsoft in 2014. But I assume, Xamarin (and Novell before that) had their own CLA before that. Commented May 27, 2016 at 22:48

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.