Why I believe QWLives 2.51 is in violation of the GPL

by Kevin Pulo,
6th January 2000.

This essay outlines my reasons for believing the QuakeLives QW 2.51 release is in violation of the GPL. This essay was born after a long and quite heated debate on #console on Gamesnet with the qwlives people.

Abbreviations I use in this essay:

The problem stems from the fact that it's not an external library or proxy. It's built into QW. When I download the qwlives 2.51 qwsv binary, I get just a single binary, one file. This means that it does not use external software, it is an integral part of qw. Therefore, it should be entirely covered by the GPL, with all source code available. This includes the so-called "security" part, which has been withheld from the current release.

I'll now go through the pertinant parts of the GPL, and show where and why I think qwlives is in violation.

NB. This contains the same section referenced by Dalroth at http://www.gamersx.com/messages/view.asp?id=ubuzn He raises some good points, but ultimately I think he misses the most important point.

Text in typewriter font is from the GPL, all highlighting and bolding is my own.


  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

Okay, all of this is basically fine. Dalroth highlights point 2.b. which actually appears to agree that qwlives is breaking the GPL. However, Dalroth also bolds the section below, trying to show that there is a "but" clause to 2.b. Well, there is a "but" clause, where part of the program may be distributed under a license other than the GPL, but it is my opinion that qwlives does not meet the criteria. Here's the main bit.


These requirements apply to the modified work as a whole.

At first glance, this appears to favour the case that qwlives is in violation. But there's more...


If identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections WHEN YOU DISTRIBUTE THEM AS SEPARATE WORKS.

Now, at first glance, this appears to support the case that qwlives can have a non-GPL portion. The identifiable section is clearly the "security" bit, the bit being withheld, and it is possible that it could be reasonably considered independant (though this is debatable).

However, when you look closer, you see the highlighted text. Here is the violation: the non-GPL section of qwlives IS NOT BEING DISTRIBUTED SEPARATELY. It is being distributed together, in the single qwlives qwsv binary. Thus, the exception does not apply, and the non-GPL section of qwlives is in violation of this clause of the GPL. To continue:


But when you
distribute the SAME SECTIONS AS PART OF A WHOLE WHICH IS A WORK BASED
ON THE PROGRAM, the distribution of the WHOLE must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and THUS TO EACH AND EVERY PART REGARDLESS OF WHO WROTE
IT.

These same sections are being distributed as part of a whole which is a work based on the program. The "whole which is a work based on the program" is qwlives 2.51; it's clearly a derivative of qw 2.3 as released by iD under the GPL. The "same sections" are the non-GPL, closed security sections mentioned above. They're being distributed as part of the whole because when I download the qwlives 2.51 qwsv binary, I get a single whole. This single whole contains both the non-GPLed security part and the GPLed part from qw 2.3 from iD.

Thus, the GPL clearly states that the entire whole, security section and all, must be covered by the GPL, regardless of the fact that the qwlives team wrote the security section.


Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

What this section means is that if you combine your own original work with a GPLed piece of work, yours must also be GPLed. The "combine with" here is subtle, but very important. As shown above, if you distribute your non-GPL stuff seperately to the GPL stuff, then that is fine. But if you distribute your non-GPL stuff together with the GPL stuff, then your non-GPL stuff is in violation, and must be GPLed. The single qwlives 2.51 qwsv binary constitutes distribution of the non-GPLed closed sections of qwlives with the GPLed open sections of qw (as obtained from iD). As such, these closed non-GPLed sections are in violation of the GPL.


  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, PLUS ANY
ASSOCIATED INTERFACE DEFINITION FILES, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

At least two files, sv_def.h and cl_def.h are missing from the qwlives 2.51 source. I'd say that both of these fall under the category of "associated interface definition files". Since they're not included, this is a violation.

This is also interesting for the DirectX case, as pointed out in Dalroth's message. It implies that the DirectX header files would need to be distributed. Would Microsoft stand for that?


  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

So don't try to say "We don't accept the GPL, we never signed any agreement". :)


As a closing, I'd like to urge everyone to take up the cause, and request that qwlives ceases violating the GPL. I especially urge iD to do this - you own the copyright to this game, and it is your reputation on the line if your product is butchered or raped.

We at the QuakeWorld Forever (QWF) team believe that a secured version of QuakeWorld can be developed which is completely free, covered by the GPL. We expect to be able to do this by using a Netrek style system of blessed binaries.

We don't yet have a website, however we will have one soon. Our current HQ is in the #qwforever channel on Gamesnet. At the moment we have a server which is mostly speedcheat free (needs some more tweaking), and are working on the encryption required for blessing binaries. If I get time, I might write another essay explaining the blessed binary system, and how it will apply to QWF.

Of course, the opinions expressed in this essay are entirely my own. I'm speaking for myself here, not the QWF team or anyone else.

I might also clean up and post a log of my original conversation in #console, to show the mindset of some of the qwlives people.


Kevin Pulo.
6th January 2000.

Polite, constructive comments will probably get replies, flames won't.