Ioquake3 GPL license issues

Hello,

I wanted to bring your attention to the following text under the “Standalone Game Licensing” section of the readme for this project:

Please be aware that as soon as you start distributing your game with an engine based on our sources we expect you to fully comply with the requirements as stated in the GPL. That includes making sources and modifications you made to the ioquake3 engine as well as the game-code used to compile the .qvm files for the game logic freely available to everyone.

While the game engine its self and its related libraries are licensed under GPL v2, any game code compiled to .qvm files does not fall under the GPL license as I understand it.

Here is the relevant part of the GPL v2 license under section 2:

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.

In this case, the .qvm files are:

  • Not derived from the program (they are independently coded and compiled)
  • Are an independent work
  • If downloaded separately are not distributed as a part of the ioquake3 engine

Another similar example to the relationship between the ioquake3 engine and the qvm files is that of software running on the linux kernel. The linux kernel is required to run the software and thus the software is useless without the kernel. However the software is not a derivative work of the kernel, and is an independent work from the kernel, and so software installed on linux does not have to be GPL licensed. It does, however, need to be distributed separately from the kernel.

In the case of qvm game files, the distribution is an important point. If a standalone game uses two installers, one for the game assets and one for the engine, then it can be reasonably stated that the game assets including the .qvm files do not need to be licensed under the GPL.

I also want to bring your attention to the fact that your github repo includes the q3lcc compiler which is not licensed under GPL and should be removed from the ioquake3 repo as it violates the GPL license. Hosting it on its own and providing instructions to download and use it are permissible, and even including a .bat or .sh script that downloads it separately and then uses its functions when compiling is totally allowable under the GPL, however including its source in the ioquake3 repo is against the GPL.

I also want to point out that the anti-cheat guy you bullied out of the forum last year was well within the GPL as his anti-cheat code was a separate exe that was run by the engine. As long as he provided the modified source for the ioquake3 engine that executed his anti-cheat binary, he was well within the rights of the GPL.

The GPL violator, Philip Duch, did not comply with the GPL, he did not provide source to his modifications to ioquake3. He also wasn’t bullied, he was given ample time to decide what he wanted to do. Duch chose to continue offering and charging people money for his closed-source, GPL violating, software and service.

The game-code included with the original quake3-1.32b GPL source code and ioquake3 is licensed under the GPLv2 or later. The only other license the quake3 game-code is available under is the Q3 SDK license which is not appropriate for standalone games.

There is probably a decent argument that completely rewritten from scratch game-code could be under a different license. My personal view is that the engine and game-code form a single combined program[1] and thus the game-code would have to be under a GPL compatible license and the source code available.

The GPL and LCC licenses do not forbid distributing source code with source code under other incompatible licenses.

The anti-cheat was not a separate executable. It was a dll/so that the engine binary was modified to load. The engine binary was modified directly so there was no modified engine source code. I’m unclear what type of relation it has to the engine. Does it just run a main function and run entirely independent or does it hook into functions and variables in the engine? It would be fine if the engine was modified to run a separate independent executable as @KroniK907 suggests. Though, if it has special knowledge of the engine process memory I’m not sure if/how that is affected by the GPL.

2 Likes

I should explain the moderation issue here. If someone shows up to a forum and the first post they make is to start trolling about the GPL then I don’t think their intention is to be a good member of the community. That is why your account has been suspended. Please feel free to e-mail me directly, my e-mail is zachary@ioquake.org, if you would like to discuss the suspension or any other ioquake3-related issues.