There's a GPL sound library I'd like to provide as an option in a game which will be released under MIT license. My plan is to create a generic, abstract audio interface in the engine, which can dynamically link to any implementation of the user's choice.

One implementation could use an MIT-compatible audio backend, while another would use a backend based on the aforementioned GPL'd audio code.

These implementations would technically be separate projects, and are not included with the source code of, nor are a dependency of, the core software. My concern is about distribution with the binary.

Would I be allowed to distribute (source + dll) the audio interface implementation - that uses the GPL'd code as a backend - with my software binary distribution, and make it the default audio option?

1 Answer 1


When the main program is combined with the GPL-covered plugin, the software as a whole would be covered by the GPL. Since you're using the MIT license for your main program, this is perfectly possible: the MIT is a GPL-compatible license. However, you will also have to pay attention with other dependencies, e.g. Apache-2.0 is not compatible with GPL-2.0.

It is not the ability of your program to load a GPL module that brings the GPL into play. The GPL will only apply to your software if it is combined with the GPL module. I would argue that this occurs by distributing the two components together in a manner that will load the GPL component by default.

This answer is based on the FSF interpretation of the GPL, in particular the GPL FAQ entry Can I release a nonfree program that's designed to load a GPL-covered plug-in?. While your program is MIT-licensed (and therefore not nonfree) the same reasoning applies. Either the two components form a single program or they don't. If they don't, GPL is irrelevant. If they do, the program as a whole is subject to the GPL. The potential “loophole” is to keep the two components as clearly distinct programs, in particular by running the sound library as a separate server and only interacting with it e.g. over a socket.

Your Answer

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

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