python and gpl

John Hunter jdhunter at
Sun Jan 30 23:25:10 EST 2005

I have a question about what it takes to trigger GPL restrictions in
python code which conditionally uses a GPL library.

Here is the context of my question.  matplotlib, which I develop, is a
plotting module which is distributed under a PSF compatible license,
and hence we avoid using GPLd code so as to not trigger the GPL
requirements.  matplotlib has rigid segregation between the front end
(plotting commands, figure objects, etc) and backends (gtk, wx, ps,
svg, etc).  The backend is chosen dynamically at runtime -- eg the
same python script could trigger the import gtk, wx, or ps, depending
an some rc settings or command line opts.

The question is: does shipping a backend which imports a module that
links with GPL code make some or all of the library GPL.  This
question is complicated, in my mind at least, by several factors.

Here are some sub-questions:

  * If a backend module somebackend does

     import somelib

    where somelib is a python wrapper of GPL code, is somebackend

  * Assuming the answer to the above question is yes, is matplotlib
    GPLd if it distributes somebackend?  I think this is a nuanced
    situation because matplotlib would work just fine w/o somemodule,
    and only uses somemodule's code if it is selected at runtime by
    the user.  Ie, no other part of the code depends on it since it is
    one of many interchangeable backends.

  * To further complicate the question, the backend in question is qt,
    which is dual licensed, commercial and GPL.  The qt backend code
    just needs to 'import qt', and neither the backend writer nor the
    matplotlib frontend knows whether the deployed qt on the system is
    commercial or GPLd.  To date, the only GPL-like backend is GTK,
    which is LGPL.  Since we're only linking and not using the src,
    we're protected from the GPL requirements.  With QT, which has a
    pure (non L) GPL variant, the situation is less clear to me.

Thoughts, links, etc, appreciated...


More information about the Python-list mailing list