[sword-devel] Still more about licencing

Chris Little sword-devel@crosswire.org
Wed, 10 Dec 2003 15:10:02 -0700 (MST)


On Wed, 10 Dec 2003, Eeli Kaikkonen wrote:

> After posting the previous post I read the other thread which also covered 
> licencing issues. I want to make some things clear.
> 
> I think Chris made some statements which are wrong or at least too strong.

Sorry Eeli, you are completely and utterly wrong.  Have you even read the
GPL?  Let me explain some of your errors, but if you don't believe me, I
invite you to email gnu-legal, who will tell you exactly the same things.

> A program which uses sword libraries doesn't have to be under GPL.

Absolutely wrong.  GPL Section 2 part 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."

In other words, if you use GPL code in a derivative work, the derivative 
must also be GPL.

> It only must be under a GPL-compatible licence. You said sword uses a
> library which is under BSD. That works other way also. A program under
> BSD may use sword.  "GPL-compatible" means that the original licence
> allows changing the licence to GPL. LGPL allows it explicitly, BSD
> allows almost any use and does not prohibit changing the licence. GPL
> uses some kind of trick. When a program and a library are separate (in
> binary form in e.g. a hard drive of an end user) they have their own
> licences. But when they are linked at run time, GPL has the viral effect
> and changes the other part's licence to GPL. Also when they are
> distributed in a same medium GPL has that effect.

Absolutely wrong.  See above.

You're thinking of code incorporation in the wrong direction.  Nowhere
does the GPL contain a notion of "GPL-compatible".  License compatability
stems from two different licenses with different levels of restrictions.  
If license A has more restrictions than license B and none of their
restrictions conflict, then license B is compatible with license A.  This 
is the situation with GPL (more restrictions) and BSD or LGPL (fewer 
restrictions).  BSD and LGPL are both "GPL compatible".  However, GPL is 
NOT compatible with BSD or LGPL because it places additional restrictions 
on code.  What you describe would make the GPL completely meaningless 
since a person could simply re-license GPL code as BSD.

Sword and other GPLed software may incorporate BSD works, as you state.  
But the reverse is absolutely not true.

Your assertions about relicensing are "at runtime" are incorrect.  For two 
programs to link at runtime requires header incorporation at compile time 
anyway, so the linking program is already required to be GPL licensed if 
it links (even dynamically) to a GPLed library.  GPL has no "viral effect" 
at run time.  The author of a derivative work already had to make his 
decision to license under the GPL at design time.

When they are "distributed in the same medium" is called mere aggregation 
by the GPL.  It is explicitly addressed by the GPL thus (from the end of 
section 2):

"mere aggregation of another work not based on the Program with the
Program (or with a work based on the Program) on a volume of a storage or
distribution medium does not bring the other work under the scope of this
License."

In other words, mere aggregation has no "viral effect".

> And what's more, any personal use is allowed. You are allowed to write code 
> which uses GPL'ed library. You are allowed to compile and use it with that 
> library.

Right.  This is all personal, PRIVATE use.  You are allowed to do pretty 
much anything you want, in terms of copying and modification.  It would be 
pretty impossible for anyone to know what you're doing with their code in 
the privacy of your own home.

> You are allowed to distribute your program's source code even if it 
> is under non-GPL-compatible licence (in US this may be also about freedom of 
> speech).

Wrong on so many levels.  I'm curious to know what purpose you think the 
GPL serves.  Apparently none, to your thinking.

You are allowed to do whatever you want PRIVATELY.  If you so much as give 
one copy to one friend, you are bound by the terms of the GPL to 
distribute source code, to license your own modifications under the GPL, 
and to ensure that all other incorporated works are GPL-compatible.  See 
the first paragraph of section 2 in the GPL.

In the US, this is not covered under freedom of speech.  It does qualify 
as copyright infringement, with possible consequences of fines, jail time, 
civil suits seeking recompense for damages, and the voiding of your 
license to modify the GPLed code entirely.  Just so you know: arson is not 
a protected form of free expression in the US, nor is shooting people in 
the streets protected by the second amendment.

> Someone else is allowed to download your code, compile it and use 
> the binaries with the GPL'ed library which he has obtained somewhere else. 
> That all is personal use, except for distributing the source code, and GPL is 
> not meant to deal with any personal use.

I think you're confusing "personal use", which generally means private use 
(i.e. not involving any distribution), with "non-commercial use".  But 
your intent here is fairly unclear to me.  GPL does deal with personal, 
private use by allowing you to modify copyrighted works.  That is not a 
right you normally have under existing copyright laws, since it 
constitutes creation of an unauthorized derivative work (even if you don't 
distribute).

> Distributing the source is possible because of Section 2: "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".

Right.  If you have a completely separable section of code, you may
distribute that code separately and under any license you want.  If that
code requires any GPLed code to run (via any form of linking), you are
obligated to license your own work under the GPL as well.
 
> These are interpretations, not explicit wordings of GPL (except the last 
> part). I have read these things somewhere and they represent some common 
> interpretations. GPL is very problematic licence and it's legal status at 
> least in some points is unclear.

I would find a different source of information.  I've never read an 
interpretation of the GPL that was so completely different from the actual 
meaning of the GPL--and that includes the intentional misreadings stemming 
from the SCO Group.  gnu-legal will, I'm sure, corroborate my statements 
here, if you care to consult them.
 
> Remember also that it is legal to make an API comptatible library for any API 
> (I don't know why, but I have never seen anyone question that). There are 
> GPL'ed libraries with "proprietary" APIs and it would also be possible to 
> make a proprietary library which has the same API that sword has. Would it be 
> illegal to make a proprietary program using that proprietary library? No.

I don't know, for sure, whether this is true or not, but I suspect you are 
correct.  If you can work from specifications, you are permitted to create 
a compatible API.  You can also do some forms of reverse-engineering 
legally (even in the US) to create compatible APIs.

The situation becomes a little murkier when you identify the Sword Project 
specifically.  Our documentation is actually part of the code and is 
covered by GPL.  It would probably be legal to use this as a basis of a 
similar library, but I'm uncertain.

> Therefore distributing a proprietary program which uses sword API must also 
> be legal.

If, by "uses sword API" you mean uses the Sword library itself, you're 
wrong.  The flow of logic that lead to using the word "Therefore" is 
completely illogical.  It's akin to saying "There are apples and apples 
taste good.  Therefore, oranges must taste good."  My response is: huh?

If, by "uses sword API" you mean uses the same set of interfaces, the
answer is dubious.  Actually creating a binary-compatible
re-implementation of the Sword Project would not realistically be possible
without consultation of our source code itself (distinct from the
documentation).  Re-implementation constitutes creation of a derivative
work.  It's akin to adapting a novel to a play or a song.  You might not
use the same words even, but it's a derivative work.  In this case it 
would be an illegal, unauthorized derivative work, meaning possibly fines, 
jail, civil lawsuits, revokation of license, etc.

> But it is illegal to distribute a proprietary program which uses 
> some API with a GPL'ed library which has that API. The previous sentence is a 
> common interpretation of GPL, see Section 2 of GPL.

Right.  That's correct.

> Therefore e.g. Linux distributions cannot have a GPL'ed library AND an
> Open Source program which uses that library but is under a
> non-GPL-compatible licence.

Linux distributions, just to be clear, constitute mere aggregations.  They 
can legally include anything that the distributor has permission from its 
copyright holder to distribute.  (And presumably they include the Linux 
kernel also, since they would be poorly named otherwise.)

Your statement really has nothing to do with Linux distributions, however.  
In the situation you describe, whoever gave the distributor the program 
that violates the GPL (by linking to GPL libraries despite not being GPL 
itself) is in violation of copyright.

> So, if you want to make a program and distribute sword libraries with it, the 
> program must be under a GPL-compatible licence. 

Wrong. (Addressed above, but the license of you program must be GPL, 
exclusively.)

> If you want to modify the sword library or incorporate some code from it
> to your own work, then the new program or library must be under GPL.

Absolutely correct.
 
--Chris