Does clause preventing exposure of PyQt in an application's script API close loophole in license? [closed]

StackOverflow https://stackoverflow.com/questions/1152777

Question

I am currently evaluating using PyQt in a commercial application, and I was surprised to learn that the PyQt Commercial License does not permit you to expose any of the PyQt library in the application's script API. From the PyQt site:

The right to distribute the required PyQt modules and QScintilla library with your applications so long as the users of those applications do not themselves have direct access to PyQt. Otherwise those users themselves become developers and require their own copies of the commercial versions of both PyQt and Qt.

Is this because if they were allowed access to PyQt you would effectively have a 'loophole' in the PyQt Commercial License? This clause closes that loophole, I assume. I was wondering if there must be a similar clause in the GPL and related licenses? Otherwise, surely, you would be able to release an application under an open-source license that was essentially nothing more than a 'shell' application which allowed people to 'script' its behaviour - said behaviour being the creation of a second, non-GPL application using the GPL PyQt bindings.

I have no doubt that this 'loophole' is addressed in the GPL, which must have had many talented lawyers examining it with fine-toothed combs. - Really, I'm trying to learn more about how law affects the life of a coder. The GPL and other open-source licenses seem a good place to start.


Furthermore, would the same system released under the LGPL have a similar problem? Or does that license's more permissive nature mean that there wouldn't be as much of a conflict allowing users access to the library via an application?

Was it helpful?

Solution

Will,

If you are coding a Qt application with Python scripting capabilities then you can:

1) Allow the use of Qt on the script via PyQt. This requires a PyQt license per user. Maybe you can offer it as an extra and move the cost to the user that requires it.

2) Expose (using sip or swig) parts of your application that are not PyQt related

3) Create your own interface for Qt (or, at least, the part that you are exposing).

4) Wait for a LGPL version. Unfortunately the current situation is "not for now": http://www.riverbankcomputing.com/pipermail/pyqt/2009-May/022931.html

OTHER TIPS

"commercial software" means a software you can sell, including a free GPL'd software. The way the pyqt guys use "commercial" is misleading.

You can use the library under the GPL and charge for it, as long as you provide the code of the program under a GPL compatible license. I don't know what they have that clause -or even a non-free optional license at all-, but it has nothing to do with the GPL. What the pyqt guys are doing is the exact opposite of the GPL: forbidding you to do what you want with the code you paid.

Note that the GPL is not an "Open Source" license but a "Free Software" one. They are two very different groups of people with different ideas. You can read about that at http://www.gnu.org/philosophy/free-software-for-freedom.html#relationship

First of all: Lawyers rule the world and never you forget it.

Secondly, IANAL.

GPL does just the same thing: If you write some code and publish it under the GPL, all derived work must be GPL, too. This is known as the "viral nature" of the GPL. R. Stallman specifically added this to protect the work of the GPL developers. You can sell GPL code but you must always include the source. You can change it and sell the result but again, you must include source both of the original code and your modifications.

In PyQt's case, this is exactly the same: I could create a small app which just calls QApplication._exec() and leave the "scripting" to a "user", thus paying only for a single license.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top