PanoTools mailing list archive

Mailinglist:PanoTools
Sender:Valient
Date/Time:2004-Sep-12 21:30:10
Subject:Re: copyright violation?

Thread:


PanoTools: Re: copyright violation? Valient 2004-Sep-12 21:30:10
On Sun, 2004-09-12 at 19:29, Fulvio Senore wrote: 

> ----- Original Message ----- 
> From: "Valient Gough" <#removed#>
> > When the GUI builder included a thousand lines of code from
> > panorama-tools into his program, that causes the linker to build
> > those into their executable.  That in itself is not a problem,
> > however when they then go on to *distribute* that executable which
> > in part comprises of copyrighted code, then there is a problem.
> >
> 
> This is not true. Header files (*.h) only tell the compiler how to correctly
> use fuctions but do not cause the linker to include anything. In order to
> include something you need to compile the C source code and send it to the
> linker: it does not happen for panorama tools GUI, of course.
> The header file is to a compiler what a manual is to a man: it shows how to
> use something.
> You could avoid including .h files and the program would still compile. You
> would need to activate this behaviour because it is an easy way to have
> crashing programs, but the first C compilers worked this way.


There are two problems with this view, the technical problem and the
legal problem.

But before I launch into them, let me say that I mean no ill will.  I've
seen some angry responses and even been called a liar by someone who
didn't read the links I provided.  Had not worked for years on my own
open-source programs and libraries (both GPL and LGPL licensed), then I
probably would not have bothered to spend time debating this issue
here!  But I would not want my own code to be used against the terms of
the license, and so I'd rather that people see the issues and choose
their course of action based on some understanding of why people like me
choose the GPL license, rather then mistakenly think that GPL == public
domain (or think that GPL == LGPL for that matter!).

#1. the technical problem.  I think this is an interesting issue because
some languages don't even use header files, like Java, C#, Perl, etc --
so can anyone include all the GPL modules they want from these
languages? Part of the answer for these languages will lie with part
#2..

But back to C and C++ for now.

Lets take an example, foo.c: 

        int main() { return 0; }


I'm certain that nobody will argue that the code above is a derivative
work of any part of panorama-tools.
But lets just add another line: 

        #include "filter.h"
        int main() { return 0; }

When this is compiled, the compiler takes nearly every line of filter.h
(about 900 lines) and merges it with my file (the 1 line) before
compiling it (you can see the result by using gcc's -E option to see the
intermediate file if you want, other compilers may require other
switches).  Now just before the compiler actually compiles it, I have a
temporary file which contains about 900 lines from filter.h and 1 line
that I typed (actually its worse because filter.h includes other parts
of panorama-tools).  

If you did not have a license to use the author's work, then allowing
the compiler to copy these files into your own would be a copyright
violation by any definition I know (even though you didn't do it by hand
- you asked the compiler to do it, and even though you quickly
transformed the intermediate files into another form -- I don't believe
that the international copyright convention says anything about getting
rid of copied work fast being a defense).   Some people might argue that
header files cannot have copyright protection, but I don't think that
road leads very far.

So that means you need the author's permission to use this code, which
means you are relying on what the license says, because unless you have
a note from the author, that is the only thing giving you permission to
use their code.

So, did you create a derived work?  My opinion (which is just as
worthless as any other non-author in this case) is YES.  This is also
the view of Free Software Foundation, who created the GPL.  No matter
what the contents of filter.h (which does in fact contain code, not just
a list of function names and arguments), you would have taken hundreds
of lines of someone's work and merged it with your own code in order to
compile it -- that is a derivative work.

Ok, so some people will simply shake their heads 'no', because then they
won't feel guilty for using a GPL library in a commercial or
closed-source program...  Which leads us to:

#2 the legal issue with your view:

In legalese, when someone explicitly chooses one thing, that also means
they have explicitly NOT chosen the alternatives.  When someone chooses
to license their code under the "GPL License", then unless they state
otherwise it is assumed they have chosen NOT to license it under the
BSD, the ASL, the OSL, the X11, or the LGPL license (etc).

For example with my software -- if you used my header files to link
against my GPL licensed library, I would protest.  If you said that you
don't agree with my interpretation of the license I've given you (the
GPL), then the court would look at how to interpret the intent of the
license.  Well, I'd point out the the GPL FAQ is explicit about how this
works and that the GPL was drafted by a distinguished law school
professor to cover exactly this case, so it wasn't by accident.  Then
I'd point out that I did NOT choose to license the code under the LGPL
(as many Linux libraries are).  The only difference between the LGPL and
the GPL is that the LGPL explicitly allows the library to be linking
against a closed-source program.

So, since I had a choice between the GPL and LGPL (and others), and I
chose the GPL which only differs by not allowing linkage to
closed-source programs, then I can be said to have explicitly chosen not
to allow such linkage in the license I provided.  The license I provide
is the only thing that gives people permission to copy my work, because
copyright law gives me the exclusive right to authorize people to copy
my work...


Now tell me how you can use my GPL licensed library without adhering to
the license?  Attempting technical ways to circumvent a license are not
looked upon kindly by the courts, from what I hear..

I think in people's haste to find a way around the GPL, they've lost
sight of why people use the GPL.  I can only speak for myself here.  I
release code under the GPL because I believe that everybody gains from
free software.  By using the GPL, I state that anyone is free to use my
library as long as they are also willing to contribute to the collective
knowledge by sharing their code as well.  If someone doesn't want to
accept my license, then that is completely up to them -- there are
undoubtedly other libraries available (for a fee probably) that will let
them keep everything a secret.

For libraries that I'm happy to see used in commercial or closed-source
programs, I use the LGPL.  And there is a difference.

regards,
Valient



[Non-text portions of this message have been removed]




------------------------ Yahoo! Groups Sponsor --------------------~--> 
Make a clean sweep of pop-up ads. Yahoo! Companion Toolbar.
Now with Pop-Up Blocker. Get it for free!
http://us.click.yahoo.com/L5YrjA/eSIIAA/yQLSAA/.Cr1lB/TM
--------------------------------------------------------------------~-> 

 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/PanoTools/

<*> To unsubscribe from this group, send an email to:
    #removed#

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 





Next thread:

Previous thread:

back to search page