Why does Mono for Android cost money if the mono project is opensource and therefore everything based on it must be opensource?
There are two "free" aspects to open-source software:
- Free as in speech,
- Free as in beer.
Free as in beer means you don't have to pay for it. Free as in speech means that you have the freedom to examine the source code, make derived works, etc.
Mono is based on four open source licenses, as described here:
- The C# compiler is dual-licensed under the MIT/X11 license and the GNU General Public License (GPL).
- The tools are released under the terms of the GNU General Public License (GPL).
- The runtime libraries are under the GNU Library GPL 2.0 (LGPL 2.0).
- The class libraries are released under the terms of the MIT X11 license.
- ASP.NET MVC, the Managed Extensibility Framework (MEF), the Dynamic Language Runtime (DLR), System.Data.Services.Client, parts of System.Numerics and ASP.NET AJAX client software are released by Microsoft under the open source Microsoft Permissive License, some of them are dual licensed also as Apache2.
The most important aspect of these licenses is the "copyleft" provision in the GPL. The copyleft provision essentially prevents you from using those libraries and code in a proprietary application, and then distributing it to users or customers. Distribution is what triggers the copyleft provision. Licenses such as MIT and Apache that do not have the copyleft provision in them do not prevent you from using the code in closed-source, commercial applications.
Because the class libraries are licensed under MIT, you are not required to obtain a commercial license to write and distribute your own commercial applications, if you can otherwise abide by the terms of the Lesser/Library GPL, which only requires that you provide any source code changes that you make to the GPL libraries in Mono back to the community.
Contributors who contribute code to the Mono project must assign copyright of their code to the Mono project, so that Xamarin can redistribute the code under a different license. This is how they are able to make certain components of Xamarin proprietary, so that they can charge for it. Because Xamarin is the copyright holder for the entire Mono project, they can redistribute their code in any way they see fit.
Mono is LICENSED to OTHERS as Open Source. That does not imply that the owners of the copyright have the same restrictions -- they can do whatever they like, including all forms of closed-source use, even if that seems to go against their founding principles. To prevent that, you would AT LEAST need the company's official, registered aims to clearly state that all products would be open source, and probably for CEOs / other executives to be employed on a contract stating that they would always only create open source products. Even then, the definition of "product" could undo that safeguard.