[MonoDevelop] Licensing concerns.

Bernhard Spuida bernhard@icsharpcode.net
Wed, 14 Jul 2004 11:30:32 +0200

Hi everybody,

it is somewhat saddening to see this kind of bickering going on. 
First of all, I'd suggest 

a) reading the GPL - not just skimming, but reading it. In my (sad) 
experience most people tend to only look at the short text. 

b) reading the GPL FAQ. <http://www.fsf.org/licenses/gpl-faq.html>

This way I am sure we will all form a common base for constructive 
Some points I personally find pertinent to the issue at hand are:

1) The definition of what is compatible licensing:


"In order to combine two programs (or substantial parts of them) into 
larger work, you need to have permission to use both programs in this 
If the two programs' licenses permit this, they are compatible. If 
is no way to satisfy both licenses at once, they are incompatible."
    For some licenses, the way in which the combination is made may 
affect whether they are compatible--for instance, they may allow 
linking two modules together, but not allow merging their code into 
one module. 

What does it mean to say a license is "compatible with the GPL".

    It means that the other license and the GNU GPL are compatible; 
you can combine code released under the other license with code 
released under the GNU GPL in one larger program.

    The GPL permits such a combination provided it is released under 
GNU GPL. The other license is compatible with the GPL if it permits 

Regarding this it might also be worth reading this 

A list of licenses compatible and incompatible with the GPL can be 
found here:
Please note that there seems to be quite a bit of confusion regarding
X-licenses. It is imperative that you set down *exactly* which one 
refer to and then clear up with the FSF whether this would be 
or not.

2) The licensing status of the monodevelop code as to date:

Monodevelop is derived from a GPL'd work. Therefore *all* code in 
monodevelop is GPL'd by default.


Even though the term proprietary is used, this applies to all other 
licenses (if not compatible in the sense of the definition above).

3) Licensing of future contributions:

"If I add a module to a GPL-covered program, do I have to use the GPL 
the  license for my module?
    The GPL says that the whole combined program has to be released 
under the GPL. So your module has to be available for use under the 

    But you can give additional permission for the use of your code. 
can, if you wish, release your program under a license which is more 
than the GPL but compatible with the GPL. The license list page gives 
partial list of GPL-compatible licenses. "

This means in a nutshell that in monodevelop, the code would be GPL, 
may be used *without* linking to the GPL'd code in other, independent
products under a different license. Or to state this in a different
manner: if your code *does not in any way implement or depend upon 
of the GPL'd code (even if they are 'only' data structures, 
interfaces or
function calls)*, it may be dual-licensed. For a definition of 
linking in
the GPL sense, refer to 5) below.

4) Tainting clauses in the GPL:

There are no 'tainting' clauses in the GPL. The LGPL was created 
expressly to allow linking against code under different licenses.

And to adress a specific example given in this discussion:

>The 'Tainting' of non-GPL licensed code only happens when you ship 
>code as a linked binary. As source, different files can retain their
>different licenses.

The same code cannot be licensed differently in binary or source 
form. The code as such is identical, only the expression varies in 

5) Plug-in licensing:

"If the program dynamically links plug-ins, and they make function 
calls to each other and share data structures, we believe they form a
single program, so plug-ins must be treated as extensions to the main
program. This means they must be released under the GPL or a GPL-
compatible free software license, and that the terms of the GPL must 
followed when those plug-ins are distributed."


This is the case with the #develop/monodevelop plug-in architecture.

This hopefully contributes to a clearer understanding of the issues 
at hand.

             Bernhard Spuida
             #develop senior word wrangler

This email is confidential, and now that you have read it you are legally obliged to 
shoot yourself. Or shoot a lawyer, if you prefer. If you have received this email in 
error, place it in its original wrapping and return for a full refund. By opening this 
email, you accept that Elvis lives.