Re: GPL and command-line libraries

2004-11-27 Thread Lewis Jardine

Anthony DeRobertis wrote:

Nathanael Nerode wrote:
(The FSF's statements that linking with a library creates a derviative 
work of the library confuse people; it may help to remember that this 
only applies to the *binary image* created by the linkage, which contains 
elements of the library, not to the source code of the program using the 
library.)



A derivative work requires creative input. Neither a compiler nor a 
linker can provide that. There is no creative input in typing make, so 
the binary can't be a derivative work if the inputs were not.


What is the correct term for a work that combines two other works, 
created without creative input?


--
Lewis Jardine
IANAL, IANADD



Re: GPL and command-line libraries

2004-11-27 Thread Måns Rullgård
Lewis Jardine [EMAIL PROTECTED] writes:

 Anthony DeRobertis wrote:
 Nathanael Nerode wrote:
 (The FSF's statements that linking with a library creates a
 derviative work of the library confuse people; it may help to
 remember that this only applies to the *binary image* created by
 the linkage, which contains elements of the library, not to the
 source code of the program using the library.)
 A derivative work requires creative input. Neither a compiler nor a
 linker can provide that. There is no creative input in typing
 make, so the binary can't be a derivative work if the inputs were
 not.

 What is the correct term for a work that combines two other works,
 created without creative input?

An anthology, or a compilation, I think.

-- 
Måns Rullgård
[EMAIL PROTECTED]



Re: GPL and command-line libraries

2004-11-27 Thread Anthony DeRobertis

Måns Rullgård wrote:


Lewis Jardine [EMAIL PROTECTED] writes:



What is the correct term for a work that combines two other works,
created without creative input?



An anthology, or a compilation, I think.



From Title 17, Sec 101:
A ''collective work'' is a work, such as a periodical
issue, anthology, or encyclopedia, in which a number of
contributions, constituting separate and independent
works in themselves, are assembled into a collective whole.

A ''compilation'' is a work formed by the collection
and assembling of preexisting materials or of data
that are selected, coordinated, or arranged in such a
way that the resulting work as a whole constitutes an
original work of authorship. The term ''compilation''
includes collective works.

I don't think those are the appropriate terms; it would appear that a 
compilation (including collective works) need to be original works of 
authorship. That requires creative input.


If it isn't creative, it isn't a work under copyright law. See, e.g., 
Fesit v. Rural Telephone Service, holdings (a) and (b). 
http://caselaw.lp.findlaw.com/scripts/getcase.pl?navby=casecourt=USvol=499invol=340


AFAICT, the output of the compiler is treated under copyright law the 
same way the source code would be; I supect the best term we have for 
this situation is mere aggregation of two seperate works. IOW, 'ld' in 
this case is performing the same function 'tar' normally would.




Re: GPL and command-line libraries

2004-11-27 Thread Wesley W. Terpstra
I am concerned there might have been some confusion about terms here.
Code here can mean three things:
source code -- my copyrighted implementation of an:
error correcting code -- an algorithm I developed which operates on:
encoded data -- the data being transmitted in a special form

In this reply I try to use exactly those phrases and never 'code' alone.

On Fri, Nov 26, 2004 at 10:42:27PM -0500, Nathanael Nerode wrote:
 Wesley W. Terpstra [EMAIL PROTECTED] wrote:
 What I am concerned about is the following scenario:
 
 Mr. John Wontshare writes a streaming multicast client.
 To deal with packet loss, he uses my error-correcting library.
 Without my library, Mr. Wontshare's client can't work at all.
 
 That statement is probably incorrect!
 
 If your library has a well-specified API, anyone could make a library with
 the same API, and his client could use that.

I am perfectly fine with this.
If he uses someone else's source code to implement my API, so be it.

Of course, that new source code would have to be able to decode the same
encoded data, which I am also fine with. They could also reuse the same
algorithm since I don't find it ethical to patent algorithms.

 Under those circumstances, his client is not a derivative work of your
 library 

I don't see the difference here between a real library and a command-line
interface. Any library could have a command-line interface wrapped around 
it in order to avoid 'linking'. So how can the FSF talk about linked
applications being derivative works.

[I've moved your later paragraph to here]:
 (The FSF's statements that linking with a library creates a derviative
 work of the library confuse people; it may help to remember that this only
 applies to the *binary image* created by the linkage, which contains
 elements of the library, not to the source code of the program using the
 library.)

This is the case I care about.

Mr. Wontshare is shipping a binary version of his program which has hooks
via 'system' or whatever into my binary command-line library which he also
ships. 

What is a binary image? I think it makes most sense that it includes the
entire shipped product---both my executable and it's dependent: his.

Whether the library and binary form a single file seems irrelevant.
Otherwise, .dll's or .so's would also avoid this 'binary image' issue.
What is the difference between 'dlopen' and 'system'?

 The readline/editline situation is a good parallel here.  A program which
 can be linked to either library is not a derivative work of readline, and
 does not need to be under GPL.

I admit to being mostly clueless about legal issues, but it feels to me that
the difference here of 'can be linked' and 'requires to be linked' are two
different things. Are they or aren't they?

Regardless, this is not the main thrust of my argument. My main point is
that he is shipping a product including his compiled program and mine. His
compiled program is 'linked' via 'system' to my application. If you deleted
my application, his will stop working.

I am not taking away any of his rights; he is shipping my code!
Without a grant of licence from me, he can't do that.

 (Incidentally, if your error correcting code or your API spec is in fact
 copyrightable, you could put that under the GPL, which would achieve your
 goal.  If it's really quite simple, as you said, then it's probably not
 subject to copyright.)

The error-correcting code algorithm and implementing source code are not
themselves simple---only the API is simple. 

As I understood it, however, the algorithm and would be protected by a
patent, not a copyright. In what way can I protect this with the GPL?

What are you proposing I could copyright as 'error correcting code'?
I think confusion of terms is perhaps the problem here?

 He then distributes his client along with my library to end-users.
 These users don't get Mr. Wontshare's code, even though he uses my library.
 (but they do get your library's code).

 Even worse, he refuses to port his client to MacOS X for business reasons.
 (intentionally giving an unfair competitive advantage to another platform)
 To me anyways, this sounds like exactly the situation the GPL is supposed to
 protect against.
 
 It isn't.  You've misunderstood the GPL.  The GPL is supposed to protect
 against modified versions of your library being taken proprietary; that's
 the exact situation it's supposed to protect against.

As far as I can see, I haven't misunderstood it at all;
what you describe is what's happening here.

Mr. Wontshare has taken my work and integrated it as a critical component
into his project which he then ships together with my work. Yes, he supplies
my source code, but not the source code of the rest of the combined project.
He has taken a modified version of my library proprietary. His project is
a modified/enhanced version of my library and his own work.

 Is this _not_ a derivative work?
 That's a factual question.  It's most 

Re: GPL and command-line libraries

2004-11-27 Thread Raul Miller
On Sat, Nov 27, 2004 at 11:07:02AM -0500, Anthony DeRobertis wrote:
 If it isn't creative, it isn't a work under copyright law. See, e.g., 
 Fesit v. Rural Telephone Service, holdings (a) and (b). 
 http://caselaw.lp.findlaw.com/scripts/getcase.pl?navby=casecourt=USvol=499invol=340

A problem comes in determining what's creative and what's not.

While the rules for patents aren't quite the same as the rules for
copyrights, it's perhaps illustrative to consider what the government has
considered creative in the context of patents to see just how different
the legal context can vary from the views of experts in some field.
[Fortunately, most (unfortunately, not all) of those cases are so
egregious that they can be ignored.]

That said, in the U.S. at least, fair use would seem to cover most shell
scripts and such.

That said, if a shell script is so large that fair use wouldn't cover it
-- if it's doing things where there are significant sections which are
radically different from the obvious sorts of things that everyone else
is doing -- then we're probably out of the area where it isn't creative
adequately describes what's happening.

In other words: most of the time shell scripts aren't going to matter,
but it's not safe to make a general rule that that's always the case.

-- 
Raul



Re: GPL and command-line libraries

2004-11-27 Thread Måns Rullgård
Anthony DeRobertis [EMAIL PROTECTED] writes:

 Måns Rullgård wrote:

 Lewis Jardine [EMAIL PROTECTED] writes:
  
What is the correct term for a work that combines two other works,
created without creative input?
 An anthology, or a compilation, I think.


  From Title 17, Sec 101:
   A ''collective work'' is a work, such as a periodical
   issue, anthology, or encyclopedia, in which a number of
   contributions, constituting separate and independent
   works in themselves, are assembled into a collective whole.

   A ''compilation'' is a work formed by the collection
   and assembling of preexisting materials or of data
   that are selected, coordinated, or arranged in such a
   way that the resulting work as a whole constitutes an
   original work of authorship. The term ''compilation''
   includes collective works.

 I don't think those are the appropriate terms; it would appear that a
 compilation (including collective works) need to be original works of
 authorship. That requires creative input.

Was the question concerning the term for a work consisting of other
works, each in itself the product of creative work (and thus
copyrightable), combined into a single work without any additional
creative work, or was the question for combination of parts which are
not by themselves copyrightable, combined without creative effort, or
a combination of non-creative parts in a creative fashion?

Producing a compilation may or may not involve creative work.  For
instance, in the production of a literary anthology, there may be
significant amounts of work in the selection of parts to include, as
well as their order.  In this case, the compilation might be protected
by copyright law.  On the other end, a collection consisting of all
works published during some specific time interval, is not the result
of creative work.

 If it isn't creative, it isn't a work under copyright law. See, e.g.,
 Fesit v. Rural Telephone Service, holdings (a) and
 (b). 
 http://caselaw.lp.findlaw.com/scripts/getcase.pl?navby=casecourt=USvol=499invol=340

This case is about a telephone directory.  Quite obviously, each
individual entry cannot be considered a creative work (it is an
arbitrary number assigned to a name), and simply collecting all of
them is not considered to add any creative element.

 AFAICT, the output of the compiler is treated under copyright law the
 same way the source code would be; I supect the best term we have for
 this situation is mere aggregation of two seperate works. IOW, 'ld'
 in this case is performing the same function 'tar' normally would.

The compiler outputs a mechanical transformation of its input.  If the
input was covered by copyright, then the output will be as well,
otherwise it will not.  Mechanically transforming something does not
add any creative value, and hence does not alter the copyright status
of whatever is being transformed.  Mechanically combining two works
into one, as might be done by the linker, does not either add any
creative element.

-- 
Måns Rullgård
[EMAIL PROTECTED]



Re: GPL and command-line libraries

2004-11-27 Thread Andrew Suffield
On Sat, Nov 27, 2004 at 05:20:46PM +0100, Wesley W. Terpstra wrote:
 What is a binary image? I think it makes most sense that it includes the
 entire shipped product---both my executable and it's dependent: his.
 
 Whether the library and binary form a single file seems irrelevant.
 Otherwise, .dll's or .so's would also avoid this 'binary image' issue.
 What is the difference between 'dlopen' and 'system'?

You're almost right. The technical method by which derivation or
aggregation is accomplished is irrelevant. Varying the method will not
change the state from derivation to aggregation, or vice versa: ld is
not automatically derivation, nor is tar automatically aggregation.

The state of a work being derived is intrinsic to the work itself. It
doesn't become derived because you add a useless unnecessary -l
argument to the compiler, and it doesn't stop being derived because
you have a trained monkey copying the data around by hand between
processes.

When we talk about 'linking', we're really referencing the fact that
it's normally used in a certain way. It's not magic, it just happens
that linking to a library will normally occur in the cases where
you've got a derived work, because anything else is insane from a
technical perspective. Getting overly attached to the notion of
'linking' leads to navel-gazing exercises and not much else.

The exact determination of what is and is not derived is notoriously
fuzzy and ultimately a matter for the courts (yeah, copyright
sucks). I find a good rule of thumb to be: If your application will
only work in the presence of some specific other code, it's a derived
work, otherwise it's not, which leads neatly to the library API
thing.

In essence: playing games at the interface boundary cannot exempt you
from license requirements. Only a sufficiently expensive lawyer can do
that.

-- 
  .''`.  ** Debian GNU/Linux ** | Andrew Suffield
 : :' :  http://www.debian.org/ |
 `. `'  |
   `- --  |


signature.asc
Description: Digital signature


Re: GPL and command-line libraries

2004-11-27 Thread Henning Makholm
Scripsit Wesley W. Terpstra [EMAIL PROTECTED]

  If your library has a well-specified API, anyone could make a library with
  the same API, and his client could use that.

 I am perfectly fine with this.
 If he uses someone else's source code to implement my API, so be it.

 Of course, that new source code would have to be able to decode the same
 encoded data, which I am also fine with.

Not necessarily. It is quite possible that someone could find
mr. Wontshare's application useful when linked against a library that
encodes data in a different way from your library. It is not a given
that everybody will find interoperability with instances that use your
library important.

  Under those circumstances, his client is not a derivative work of your
  library 

 I don't see the difference here between a real library and a command-line
 interface.

Agreed.

 So how can the FSF talk about linked applications being derivative
 works.

They use a legal loophole known as freedom of speech, which enables
them to make claims that may not be actually be true as stated. If the
question of whether a given work is derived from a GPLed library ends
up in court (whit, ttbomk it yet never has), there is no guarantee
that the court will accept the FSF's claim as the natural basis for
making the judgement.

One can certainly imagine cases where any judge in his right mind (and
of sufficient technical understanding) would rule that this particular
program using that particular GPL'ed library is in fact a derived work
in a pro forma technical disguise, and should therefore be covered by
the library's licensing terms.

However, one can also imagine cases where any judge in his right mind
would rule differently. And there is a large grey area between those
two extremes. The only thing that is certain is that the matter is not
as clear-cut as the FSF would like to make people think.

 Whether the library and binary form a single file seems irrelevant.
 Otherwise, .dll's or .so's would also avoid this 'binary image' issue.
 What is the difference between 'dlopen' and 'system'?

Not very large, legally speaking. It is a common error for people with
a primarily technical viewpoint to think that the legal questions are
decided primarily by the tecnical nature of the connection between the
two works. In fact, the technical details make little difference once
we get past the opening question of does this directly contain some
of his bits or not?.

The important consideration is the high-level *intention* of the
connection, including what the different parts actually *do*.

If library L provides to program P an well-defined generic service
with a simple black-box interface, and it is provided in a way that is
essentially independent that the client is P rather than an unrelated
program Q, then I think it is very hard to argue that the source code
for P is derived from L (and similarly for compiled versions of P that
do not include a statically linked L).

On the other hand, if L exports a lot of hooks for P to inject its own
code into whatever L does, or P depends intensively on internals of L
that are not easily decribed as a generic service interface, then a
good case could be made that P is effectively derived from L.

Between these two extremes are, as always, a big scary grey area.

 I am not taking away any of his rights; he is shipping my code!
 Without a grant of licence from me, he can't do that.

It is of course completely true that you as an author have the power
to forbid him from distributing your code, and you can set any odd
conditions for giving a license that you want.

However, you can forbid this and still give your source code a license
that Debian would consider free is a more difficult question. Here I
am inclined to think that the answer is no.

 The error-correcting code algorithm and implementing source code are not
 themselves simple---only the API is simple.

But that does mean that your library provides a generic black-box
service, which makes is *unlikely* that you cound succesfully argue in
court that the source code for the application is derived from your
work.

  It isn't.  You've misunderstood the GPL.  The GPL is supposed to protect
  against modified versions of your library being taken proprietary; that's
  the exact situation it's supposed to protect against.

 As far as I can see, I haven't misunderstood it at all;
 what you describe is what's happening here.

No, there is no modified version of your library in your scenario.

 Mr. Wontshare has taken my work and integrated it as a critical component
 into his project which he then ships together with my work.

As far as you have described it, there is no real integration going on.

 He has taken a modified version of my library proprietary.

No, he hasn't. He hasn't even *created* a modified version of your library.

 In my case, it would be a 'black box'.

Exactly.

 I've never advocated preventing him from writing a compatible program.

What