Did ProQuake 3.00/3.10 violate the GPL?

Yes. The security code in ProQuake 3.00/3.10 was not made public in order to preserve the integrity of cheat-free quake, and according to the GPL anything that is distrbuted with the program is covered by the GPL, hence the source must be made available. However, the GPL is not all-encompassing. Section 2 states:

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.

Now the security code was written entirely by me and is not based on the Quake source code (it was developed and tested independently). So the GPL is not intended to apply to this code. The reason that it still does is because of the "separate distribution" clause:

These requirements apply to the modified work as a whole. 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. 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.

The purpose of this clause is to avoid any argument as to what constitutes separate work. By requiring programmers to distribute their own work separately, the GPL effectively forces them to prove that their work really and truly is separate before it can be considered exempt from the terms of the GPL.

When I started working on cheat-free ProQuake, I felt it was fairly obvious that my security code was a separate work, so I chose to take the shortcut of directly incorporating it into ProQuake in order to save time for both myself and those wishing to use ProQuake. I was following the spirit but not the letter of the GPL, which ended up causing some problems.

How did this all come up?

I received a series of increasingly threatening and condescending letters from Stan Allen. Shortly thereafter I received email from none other than John Carmack (!) asking me to comply with the terms of the GPL. For those that are interested, here are the correspondences in their entirety. The last one, my reply to John's second email, sums up my opinions in this matter.

Update (June 25, 2002): After the release of 3.20, I received more email from Stan.

Does ProQuake 3.20 comply with the GPL?

Fully. The security code has been packaged into separate modules which are distributed separately, thus complying with the specific terms of the GPL. The security modules are not quake-specific and are not in any way based on the Quake source. You can see a full list of exported functions in security.h from the ProQuake source. Finally, ProQuake is fully functional without the security modules; they are only required to start or connect to a cheat-free server.