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.
6th January 2000.
Polite, constructive comments will probably get replies, flames won't.