Subject: Re: For Approval: Microsoft Permissive License
From: Donovan Hawkins <hawkins@cephira.com>
Date: Sun, 19 Aug 2007 14:41:01 -0700 (Pacific Daylight Time)

On Sun, 19 Aug 2007, Chris Travers wrote:

> "This product contains code by .... " on a Help/About screen seems like a 
> reasonable requirement by section 7b standards if required in other licenses. 
> "This product is in part based on code by ..." seems seimilarly allowed. 
> Where would the line be drawn?

That is a very good question. I'm afraid "reasonable" is generally one of 
those things that is left to the courts to decide. Common usage within the 
industry is probably going to weigh heavily on their decision though.

It's pretty trivial to have an option on a menu somewhere to display a 
long scroll of attributions and legal notices, so I don't think this is a 
big issue for most people. You just cut-paste to the end of the big list 
and move on. The user only sees the big list if they select it.


> This doesn't seem to preclude the sort of advertising clauses that Internet 
> Explorer must display regarding code from Mosaic.  Or am I missing something?

GPL v3 allows requirements to retain notices on your source files and on 
the interfaces. I don't see anything that allows requiring notices on 
advertisements (in, say, a magazine). That sort of requirement is a 
"further restriction" as defined in GPL v3 section 7:

"All other non-permissive additional terms are considered "further 
restrictions" within the meaning of section 10.  If the Program as you 
received it, or any part of it, contains a notice stating that it is 
governed by this License along with a term that is a further restriction, 
you may remove that term."

So you can put the advertising term in, but it can just be ignored. If the 
term came as a result of your using code under a license that contained an 
advertising clause, then it is not possible to convey the combination 
under section 5c. If this is your original work, then you created 
something no one can make use of. If you used other GPL v3 code, then you 
violated GPL v3 with respect to that code.


> Are the BSD licenses incompatible with the GPL v3 simply because they have 
> weaker copleft than GPL v3?

I'm being very loose with the word "compatible" I'm afraid, but then so 
are most people.

BSDL code (without the advertising clause) can be used in a project which 
is released under GPL v3. GPL v3 code cannot be used in a project which is 
released under BSDL.

<bad analogy alert>
GPL v3 is like having type AB blood: you can get transfusions from almost 
anyone but only other AB blood people can get a transfusion from you. BSDL 
is like having type O blood: almost everyone can get a transfusion from 
you, but you can't accept transfusions from anyone who doesn't also have 
type O blood.
</bad analogy alert>


> My argument that optional dependencies might be excluded is that only 
> required dependencies are mentioned in the GPL v3 corresponding source 
> definition, and optional dependencies do not appear to fall inside the four 
> corners of that definition.  Did I miss something in the definition of 
> "corresponding source?"

Excluding linking for a moment:

If you only convey your derived work in source code form, with an optional 
dependency available via conditional compilation, I would agree with you. 
Your work compiles (without the optional component), but has bindings to 
allow someone to easily enable support for the optional component. I don't 
see a problem there.

If you convey in executable form, then your "optional component" isn't 
optional anymore. You either compiled it in or you didn't, and the answer 
to that question determines whether you have to provide the component 
source under GPL or not.


Linking is another matter, and I'll defer to others on that since I think 
some people disagree with the FSF on that point.


> Also "corresponding source" includes a number of loopholes which could be 
> used to exclude arbitrary components.  For example, I *could* make a Linux 
> device which used closed source libraries as part of an authentication 
> system, create a GPL'd application for that device which used those same 
> libraries, and exclude them as "system libraries" (because they interface 
> with the authentication system which is arguably a "Major Component").  If 
> you want to use the application on a different Linux device, you have to pay 
> for the required libraries.

GPL v3 says:

"A "Major Component", in this context, means a major essential component 
(kernel, window system, and so on) of the specific operating system (if 
any) on which the executable work runs, or a compiler used to produce the 
work, or an object code interpreter used to run it."

So your authentication system is not a "Major Component"...it is not a 
component of the OS, nor is it a compiler or object code interpreter.

All this exception is saying is that you don't have to give people a copy 
of the source code to gcc and linux just because you use printf() and 
fork(). Or worse, give everyone a GPL-licensed copy of the source code to 
MS Visual C++ and MS Windows because you use CString and CreateFile().


> Does the MS-PL place any specific requirements on the code that the GPL does 
> not allow?  If so, what are they exactly?

From MS-PL:

"If you distribute any portion of the software in source code form, you 
may do so only under this license by including a complete copy of this 
license with your distribution."

From GPL v3 section 5c:

"You must license the entire work, as a whole, under this License to 
anyone who comes into possession of a copy.  This License will therefore 
apply, along with any applicable section 7 additional terms, to the whole 
of the work, and all its parts, regardless of how they are packaged."


>> Your interpretation of the word "by" seems to be equivalent to "which is 
>> accomplished by".
> No actually I don't.  I see it as requiring that MS-PL licensed areas to the 
> extent that they are identifiable must be licensed under the terms of that 
> license.  This means including the license and (probably, so as not to run 
> amok with GPL code copyright owners) identifying the portions of the code 
> with reasonable legal notices such as:
>
> /* The block of code including the below function is licensed under the MS-PL 
> license.  Please see accompanying ms-pl.txt for details, copyright (c) [yyyy] 
> [author_name] */

But is this licensed only under MS-PL, as required by MS-PL, or is it also 
licensed under GPL v3, as required by GPL v3?


> Is the license itself a reasonable legal notice?  If so, then it meets 7b 
> options and one could force the inclusion of the license.

The problem isn't keeping the legal notice. The problem is simultaneously 
having the code licensed only under MS-PL and having it licensed under GPL 
v3. That equation is only solvable if MS-PL == GPL, which I think we all 
agree is not likley. ^^

---------------------------------------------------------------------------
Donovan Hawkins, PhD                 "The study of physics will always be
Software Engineer                     safer than biology, for while the
hawkins@cephira.com                   hazards of physics drop off as 1/r^2,
http://www.cephira.com                biological ones grow exponentially."
---------------------------------------------------------------------------