Subject: Re: For Approval: Microsoft Permissive License
From: "Chris Travers" <chris.travers@gmail.com>
Date: Wed, 22 Aug 2007 12:35:18 -0700
Wed, 22 Aug 2007 12:35:18 -0700
IANAL....

I suppose that nothing precludes a copyright license from effectively
enforcing what people here say the GPL does.  The exact specifics (who is
liable to whom under copyright law) appear to be moot however, because the
GPL does *not* make such a requirement relating to original components in
derived works.

On 8/22/07, Nils Labugt <elabu@online.no> wrote:
>
> ons, 22.08.2007 kl. 09.53 -0700, skrev Chris Travers:
> ...
> > Neither the GPL nor the BSDL is a set of restrictions, but rather a
> > permissive grant to do something that otherwise would be restricted by
> > law.
> They are sets of *conditional* permissions.


In other words, they are permissions to do something in a certain way that
would otherwise be restricted.  We seem to be in agreement.


> >
> > But it requires copyright transfer rather than license.  Therefore it
> > is still forbidden because copyrights are not effectively transferred.
> > I could be wrong.  IANAL, but I thought that only copyright owners
> > (not mere licensees) could dictate such terms.  If I am wrong on this
> > point, please educate me by pointing me in the direction of resources
> > which prove it.
> >
>
> When you modify a work to create a derivative work, you become a
> copyright holder in that work.


Again we agree.   Note the term "modify."  Mere "inclusion" !=
"modification."

Actions regulated by copyright law
> requires permission from you as well as the other copyright holders.



Copyright holders of derivative portions fo the code in question.
Derivation however is neither commutative nor is it transitive.  For
example, just because the work as a whole is derived from its components,
the components are not necessarily derived from the work as a whole.
Similarly, just because work A is derived from work B and work B is derived
from work C, one cannot simply say that work A is necessarily derived from
work C.  I.e. original components of work C must be present in work A (these
might not be literal, for example).

In short, this does not mean that additional permissions (such as linking
exceptions) need to be granted by every library author that is indirectly
used by some other library though the entire dependency tree.  But if I
issue a linking exception, it only applied to my original components.

Of course the GPL *could* require that copyright owners give no additional
permissions for derivative works derivative, but it doesnt do this.  In fact
the GPL v2 explicitly states that it doesn't do this.

The wording of the license extension clause is:
    "b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License."

Note that unlike what people say here the word "only" does not appear in
this.  Therefore additional permissions eem to be OK for original components
of the derivative work. This is borne out in the paragraph following the
list of permissions:

From the GPL v2:
"These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it."

If this were not the correct interpretation, then nVidia's closed source
Linux drivers could be a violation of every Linux kernel developer's
copyrights.  Given the criticism that many people level against closed
source drivers wrt Linux, I am genuinely surprised that if this was such an
open question, that lawsuits wouldn't have already occurred.

If
> all copyright owners in the derivative work grants a certain permission,
> but set different sets of conditions on that permission, then the
> license becomes that permission together with the sum of all conditions.



For derivative elements in the work.  This does not necessarily equal all
dependencies unless the license specifically *requires* the extension of
conditions and *precludes* additional permissions to derivative works in a
transitive way which the GPL v2 explicitly avoids.

The GPL v2 also states:
"Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program."

This is then followed by the "mere aggregation" clause.

If you modify BSD code and places the result under the GPL, then you
> grant the same permissions for the derivative work, but adds additional
> conditions.



Maybe but not necessarily.  Certainly you have to meet  the following
requirements (by my reading of the cited paragraphs):

The "work as a whole" must grant permissions exactly equal to the GPL.  No
objection here from anyone I hope.

Derivative portions of the work must grant permissions equal to the GPL.
I.e. these would be expressive elements owned by others and used with
permission under the GPL.

Original elements in a derived portion would require the GPL or a superset
thereof so as not to preclude following the conditions of the GPL exactly
for the work derived work as a whole.  When distributed separately from the
derivative portions, they could have any conditions whatsoever.

Original elements of the work which already grant rights equal to a superset
of those granted by the GPL would not have their reduced by mere inclusion
in the absence of modifying the element in question.

Modification of an element licensed under a GPL superset (such as the BSD)
would only trigger the GPL requirements if:
1)  The modification itself contained derivative elements of code otherwise
under the GPL and owned by someone other than the modifier.
0r
2)  The license on the file stated that any original components were
licensed under the GPL.  One option would be to add a copyright notice like:

"Copyright [date] [author].  Licensed under the GPL v2 .....
This file is based on other work.  The original copyright notice was:
[original BSD License]"

I could be wrong, but the MS-PL does not prevent this either (though it is
otherwise not compatible with the GPL v3) provided that original sections of
code be identified as still being under that license.  It does seem harder
and more dangerous to try, however.

Again, I could be wrong, but it seems like we are arguing with both of us
based on partial understandings.


IANAL....

I suppose that nothing precludes a copyright license from effectively enforcing what people here say the GPL does.  The exact specifics (who is liable to whom under copyright law) appear to be moot however, because the GPL does *not* make such a requirement relating to original components in derived works.

On 8/22/07, Nils Labugt <elabu@online.no> wrote:
ons, 22.08.2007 kl. 09.53 -0700, skrev Chris Travers:
...
> Neither the GPL nor the BSDL is a set of restrictions, but rather a
> permissive grant to do something that otherwise would be restricted by
> law.
They are sets of *conditional* permissions.

In other words, they are permissions to do something in a certain way that would otherwise be restricted.  We seem to be in agreement.


>
> But it requires copyright transfer rather than license.  Therefore it
> is still forbidden because copyrights are not effectively transferred.
> I could be wrong.  IANAL, but I thought that only copyright owners
> (not mere licensees) could dictate such terms.  If I am wrong on this
> point, please educate me by pointing me in the direction of resources
> which prove it.
>

When you modify a work to create a derivative work, you become a
copyright holder in that work.

Again we agree.   Note the term "modify."  Mere "inclusion" != "modification."

Actions regulated by copyright law
requires permission from you as well as the other copyright holders.


Copyright holders of derivative portions fo the code in question.  Derivation however is neither commutative nor is it transitive.  For example, just because the work as a whole is derived from its components, the components are not necessarily derived from the work as a whole.    Similarly, just because work A is derived from work B and work B is derived from work C, one cannot simply say that work A is necessarily derived from work C.  I.e. original components of work C must be present in work A (these might not be literal, for example).

In short, this does not mean that additional permissions (such as linking exceptions) need to be granted by every library author that is indirectly used by some other library though the entire dependency tree.  But if I issue a linking exception, it only applied to my original components.
 
Of course the GPL *could* require that copyright owners give no additional permissions for derivative works derivative, but it doesnt do this.  In fact the GPL v2 explicitly states that it doesn't do this.

The wording of the license extension clause is:
    "b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License."

Note that unlike what people say here the word "only" does not appear in this.  Therefore additional permissions eem to be OK for original components of the derivative work. This is borne out in the paragraph following the list of permissions:

From the GPL v2:
"These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it."

If this were not the correct interpretation, then nVidia's closed source Linux drivers could be a violation of every Linux kernel developer's copyrights.  Given the criticism that many people level against closed source drivers wrt Linux, I am genuinely surprised that if this was such an open question, that lawsuits wouldn't have already occurred.

If
all copyright owners in the derivative work grants a certain permission,
but set different sets of conditions on that permission, then the
license becomes that permission together with the sum of all conditions.


For derivative elements in the work.  This does not necessarily equal all dependencies unless the license specifically *requires* the extension of conditions and *precludes* additional permissions to derivative works in a transitive way which the GPL v2 explicitly avoids.

The GPL v2 also states:
"Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program."

This is then followed by the "mere aggregation" clause.

If you modify BSD code and places the result under the GPL, then you
grant the same permissions for the derivative work, but adds additional
conditions.


Maybe but not necessarily.  Certainly you have to meet  the following requirements (by my reading of the cited paragraphs):

The "work as a whole" must grant permissions exactly equal to the GPL.  No objection here from anyone I hope.

Derivative portions of the work must grant permissions equal to the GPL.  I.e. these would be expressive elements owned by others and used with permission under the GPL.

Original elements in a derived portion would require the GPL or a superset thereof so as not to preclude following the conditions of the GPL exactly for the work derived work as a whole.  When distributed separately from the derivative portions, they could have any conditions whatsoever.

Original elements of the work which already grant rights equal to a superset of those granted by the GPL would not have their reduced by mere inclusion in the absence of modifying the element in question.

Modification of an element licensed under a GPL superset (such as the BSD) would only trigger the GPL requirements if:
1)  The modification itself contained derivative elements of code otherwise under the GPL and owned by someone other than the modifier.
0r
2)  The license on the file stated that any original components were licensed under the GPL.  One option would be to add a copyright notice like:

"Copyright [date] [author].  Licensed under the GPL v2 .....
This file is based on other work.  The original copyright notice was:
[original BSD License]"

I could be wrong, but the MS-PL does not prevent this either (though it is otherwise not compatible with the GPL v3) provided that original sections of code be identified as still being under that license.  It does seem harder and more dangerous to try, however.

Again, I could be wrong, but it seems like we are arguing with both of us based on partial understandings.