[DB-SIG] Re: [Psycopg] GPL or LGPL

Magnus Lycka magnus@thinkware.se
Wed, 02 Oct 2002 11:10:34 +0200

At 09:15 2002-10-02 +0200, Federico Di Gregorio wrote:
>i think there are *big* doubts. python bytecode and the (possibly
>dynamically linked) python executable are on different domains. nobody
>really thinks a single, proprietary bash script breaks bash license.
>now, tell me *where* python is different from bash. your program
>bytecode *uses* psycopg, it does not link with it. not even on "import",
>import just instructs the python interpreter to link itself agains some

I understand your position. The GPL claims that it covers
any program that is a modified version of a GPLed program.
One can certiainly claim that importing psycopg is not the
same as modifying it, that the python program in question
_uses_ psycopg, not that it is a modified version of it.

But this is what the GPL FAQ says at:

What is the difference between "mere aggregation" and
"combining two modules into one program"?

Mere aggregation of two programs means putting them side by
side on the same CD-ROM or hard disk. We use this term in
the case where they are separate programs, not parts of a
single program. In this case, if one of the programs is
covered by the GPL, it has no effect on the other program.

Combining two modules means connecting them together so that
they form a single larger program. If either part is covered
by the GPL, the whole combination must also be released under
the GPL--if you can't, or won't, do that, you may not combine

What constitutes combining two parts into one program? This is
a legal question, which ultimately judges will decide. We believe
that a proper criterion depends both on the mechanism of
communication (exec, pipes, rpc, function calls within a shared
address space, etc.) and the semantics of the communication
(what kinds of information are interchanged).

If the modules are included in the same executable file, they
are definitely combined in one program. If modules are
designed to run linked together in a shared address space,
that almost surely means combining them into one program.

By contrast, pipes, sockets and command-line arguments are
communication mechanisms normally used between two separate
programs. So when they are used for communication, the modules
normally are separate programs. But if the semantics of the
communication are intimate enough, exchanging complex internal
data structures, that too could be a basis to consider the two
parts as combined into a larger program."

My suggestion for people who wants to use a GPL product like
psycopg or cherrpy in proprietary software to ask the
copyright holder for permission, and be careful if they don't
get one. You might end up in a situation where the copyright
holder of the GPL program claims that you violate his license
and that you must stop using his software. I'm not suggesting
that any specific person would do so. But you don't know for
sure who owns a certain copyright a year from now...

I guess an ammendment to the psycopg licence text could clean
up things, Something like:

"Importing and using the psycopg module from a python program
is not considered to imply combining psycopg with the importing
program. In other words, python programs using psycopg may use
other licences than GPL."

Magnus Lycka, Thinkware AB
Alvans vag 99, SE-907 50 UMEA, SWEDEN
phone: int+46 70 582 80 65, fax: int+46 70 612 80 65
http://www.thinkware.se/  mailto:magnus@thinkware.se