2

I am currently writing a game. Leaving aside all the game development things, I want to create a library implementation for its API, basically so I give some random guy on the internet the ability to modify the game without writing source code for it. Currently, the entire game is licensed under the GPLv3 (or later), however, I want the library to use the MIT or another permissive license, so not everybody has to comply with the GPL license to write a simple plugin for it. There are three questions I have:

  • Is that even doable under the same project?
  • If not, can I write the library seperately, and then make the game link into it always? If yes, does it need to be on a seperate repository, folder or not associated at all with the game?
  • Assuming 2 is a yes, are there any catches?

Keep in mind this library is pretty much mandatory for the game to work.

3
  • 1
    How will the library/plugin and the game communicate with each other? Will they run as part of the same executable and make function calls? Will the library/plugin communicate over the internet with the game running on a server somewhere? Some other way? This mechanism is key in determining the reach of the GPL license. Aug 11, 2022 at 12:59
  • 3
    How free are you in choosing a different license for the game itself? Is it GPLv3+ by your choice, or because you use code from others with that license? Aug 11, 2022 at 13:01
  • @Bart van Ingen Schenau the app does not have any access to the internet, the communication handling is done by basically passing symbols around, eg. The plugin asks to access the next frame and modify it, or requests the game's version etc. About the license, yes, I don't have anything that ties me to the GPL so I made the choice myself, mainly because I want a guarantee that the code won't become proprietary or something worse. I do consider about a different license but it's a last resort.
    – AggelosT
    Aug 11, 2022 at 15:20

1 Answer 1

3

From your comments I understand that the game and the plugin(s) will run in the same process. In that case, the GPL license of the game also exerts its influence on the plugins, regardless of how permissive you make the license on the interfacing library.

To achieve your goal of keeping the game open-source, while allowing closed-source plugins, you can add a special permission to the license of your game. Something along the lines of

As an additional permission, plugins that link to through its plugin interface are not required to comply with the requirements that the GPL license would otherwise put on them.

Having a separate license on the interfacing library is technically possible, but I would advise against it when the rest of the project is under a strong copyleft license, like the GPL. The reason is because the separate license only really becomes effective when the code gets copied to another, independent, project.

3
  • First, if I add this license text, will the FSF still help in the case of a license violation? Second, does this text go in every souce file. or just the LICENSE file put in the top directory? Third, if I use fork(), will this still be considered a 'single process'?
    – AggelosT
    Aug 12, 2022 at 8:27
  • The additional permission goes into the LICENSE file together with the full text of the GPL. The GPL allows you to add such permissions (the LGPLv3 uses the exact same mechanism), so that should not be a reason why the FSF would decline to help you. Aug 12, 2022 at 8:38
  • If you use fork/exec, then it starts to depend on how intimate the communications are. For example, if you would need to have knowledge of data structures coming from the GPL part. Aug 12, 2022 at 8:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.