views:

172

answers:

3

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?

A: 

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.

Aaron Digulla
Ahh.. That makes sense. And hence the need for the special clause in the PyQt Commercial license - it specifically doesn't have that 'viral' thing so they need a special case.
Will Baker
(IANAL, too.) Incorrect: derived works of GPL code must be *GPL-compatible*, which means it can't have restrictions incompatible with the GPL. You can release your modifications under the X11 license, for example; if they're separable from the GPL code later on, your code is still X11, not GPL. Secondly, it only restricts distribution: you can make proprietary changes to a GPL code, if you choose not to distribute them. (This is tangental, and I'm not even a GPL fan, but too many people are confused about what the GPL does.)
Glenn Maynard
A: 

"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

Both Richard Stallman and Eric Raymond agree that free software and open source are the same thing in practice.“Nonetheless, [the definition of open source] is fairly close to our definition in practice.” http://www.gnu.org/philosophy/open-source-misses-the-point.html“As to whether “open source” and “free software” are synonymous: If you’re talking about software, the answer is “yes, for all practical purposes”; ever since Apple revised the APSL ten years ago, the exceptions have been minor and technical, involving licenses that are very little used.” http://esr.ibiblio.org/?p=904
Bastien Léonard
A: 

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

Das
Hey thanks. That is more or less what I have ended up doing - exposing a subset of Qt using Boost.Python. It wasn't just the licensing issue in the end - it also is less than practical to use more than one binding framework when exposing C++ code; I wanted to use Boost.Python for the main data model so this really means I need to use it for exposing Qt as well. If only there were already one out there.
Will Baker
Since yesterday you have another option, new Python bindins sponsored by Nokia: http://www.pyside.org/ (LGPL by the way)
Das