Re: Bug #189164: libdbd-mysql-perl uses GPL lib, may be used byGPL-incompatible apps

2003-05-26 Thread Anthony DeRobertis


On Saturday, May 24, 2003, at 03:51 PM, Nathanael Nerode wrote:


Anthony DeRobertis then said:


At some point, we've got to draw a line where it's de-clawed. After
all, I think we all agree that if a shell script calls GNU grep[0], it
isn't required to be under the GPL.


This does not affect legal issue beyond programming to the interface.
If, for example, including header files is required to program to the
interface, the header files must be public domain or X11/BSD-style
licensed (since they're included in the program code when compiled) to
allow inclusion in proprietary software.


I'm not sure if you're thinking of this when mentioning public 
domain, but many header files (for example, ones giving simple structs 
and numeric defines) probably have no copyrightable work in them, and 
thus would be essentially in the public domain. So, using those is 
fine, no matter what the copyright notice says.



Writing a script specifically for
undocumented features of bash would impose bash's GPL requirements,
at least on the  distribution of the combination of the script and 
bash.


I must disagree with you here, and apparently even the FSF would! The 
FSF considers shell scripts as just data to an interpreter, though 
warns against linking external modules to the script.


I point out Lotus v. Borland[0] and note that the commands used by the 
shell script are the same as used by a human, and thus are a method of 
operation, not protected by copyright.



Using a secret interface is effectively
making use of the original program's source code to make a derived 
work,


Except if it is a human interface, which under Lotus v. Borland can't 
be copyrighted. Note that Lotus v. Borland even included arguments 
about a macro interpreter.



So in regards to declawing, this makes a *non-arbitrary* distinction,


Not really. You essentially said that if I, as the author of a non-GPL 
program that wants to use a GPL'd work says I need a program doing 
foo, bar, and baz to work, such as GNU frob instead of saying I need 
GNU frob to work I'm fine. That's a rather pointless distinction, 
methinks.



It's a matter of whether the linkage is integral to the
program, or not.  Admittedly the distinction must be applied carefully
on a case-by-case basis, but that's often what makes good law.


I'd say its a matter of if the linkage causes program B to rely on 
copyrighted elements of program A, then there could be infringement. 
But I can at least agree that the border cases require careful 
case-by-case analysis.



[0] See [EMAIL PROTECTED] for full 
details




Re: Bug #189164: libdbd-mysql-perl uses GPL lib, may be used byGPL-incompatible apps

2003-05-24 Thread Nathanael Nerode
On Tue, 2003-05-20 at 05:15, Branden Robinson wrote:

 I am uncomfortable with some of the ramifications but I am also
 uncomfortable with totally declawing the GNU GPL by adopting and
 interpretation of it that would let people wrapper and language-bind
 their way out of the copyleft commons.

Anthony DeRobertis then said:

At some point, we've got to draw a line where it's de-clawed. After 
all, I think we all agree that if a shell script calls GNU grep[0], it 
isn't required to be under the GPL.

This is the way I usually see it. :-)  Beware that this is not the FSF's 
position, or anyone else's as far as I know.  The rest of this message 
is simply *my* position.

Programming to a public, totally open interface puts no license 
requirements on the programmer.  By this, I mean an interface which is 
fully documented so that many programs could implement it, and so that 
there are no legal impediments to implementing it.  This is because the 
subsequent use of the program (via execve, shell script, or dynamic 
linking) constitutes normal, expected use of the program, rather than 
creation of a derived work.

This does not affect legal issue beyond programming to the interface.
If, for example, including header files is required to program to the 
interface, the header files must be public domain or X11/BSD-style 
licensed (since they're included in the program code when compiled) to 
allow inclusion in proprietary software.

Writing scripts for a publicly documented, freely implementable 
language like Bourne shell script is fine, and imposes no 
requirements.  (Bash is for running shell scripts, so running one 
with bash is normal everyday use.)  Writing a script specifically for 
undocumented features of bash would impose bash's GPL requirements, 
at least on the  distribution of the combination of the script and bash.  
(It can't be considered a mere aggregation or collection because the 
script absolutely *depends* on bash, so the combination is a derived 
work.)

Calling POSIX grep is therefore fine.  Calling GNU grep with 
GNU-grep-specific options (supposing there were any; I suspect there 
aren't) is fine only if the options are publicly documented so that they
could be implemented in other versions of 'grep'.  Preferably documented 
by the creator of the new program.  So for instance, if someone creates 
a program which uses a special GNU grep option, and says This program
requires GNU grep to work, the program should go under the GPL.  If 
instead they say This program requires a version of grep supporting the 
-xxx option, meaning precisely blah blah blah.  For example, GNU grep, then 
the program can be under any license.

(If there are grep-specific options, they may not be freely 
implementable.  If the only descriptions of them are under GPL or more
restrictive copyrights, they probably aren't, until someone 
reverse-engineers them using a Chinese Wall process.)

No doubt this isn't the interpretation of most people who look at this, 
but I believe it is the closest to the concept intended by the GPL.  
Using a published interface is ordinary and expected use of the original 
program, which is unrestricted.  Using a secret interface is effectively
making use of the original program's source code to make a derived work,
since the new program is intrinsicly tied up with the original program and 
useless without it.

So in regards to declawing, this makes a *non-arbitrary* distinction, 
unlike the distinction between dynamic linking and execve() calls.  
Certain execve() calls create a combined, derived work.  Certain dynamic 
links don't.  It's a matter of whether the linkage is integral to the 
program, or not.  Admittedly the distinction must be applied carefully 
on a case-by-case basis, but that's often what makes good law.

So there's my two cents; make of it what you will.

--Nathanael