3

The GPL3 defines correspond source as the following:

The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities.

What does it mean by "source code needed to ... run the object code"? Is this solely in reference to dynamically linked libraries, as mentioned later in the paragraph, or does this also include data files?

I should note that this is a practical issue since fonts and images are often licensed under free licenses incompatible with GPL (OFL, CC BY SA 3.0, etc.)

1
  • Update: I have since realized that the example later provided of shared objects is actually for the "run" part of the definition rather than the "compile" part, so maybe wondering about data was unwarranted in the first place.
    – Max Xiong
    Commented Oct 26, 2022 at 0:57

2 Answers 2

3

There is a way to license it together, and to keep the licenses separate, which is particularly useful when there is artwork or fonts with licenses incompatible to GPLv3.

The GPL FAQ includes this statement: "Keep in mind that some programs, particularly video games, can have artwork/audio that is licensed separately from the underlying GPLed game. In such cases, the license on the artwork/audio would dictate the terms under which video/streaming may occur." This means that it is recognized by FSF, that there may be content within software under GPL that has a different license and GPL does not extend to these parts.

The CC Wiki states: "When someone creates an adaptation of a BY-SA licensed work and includes it in a GPLv3-licensed project, both licenses apply and downstream users must comply with both licenses. However, Section 2(a)(5)(B) of BY-SA 4.0 allows anyone who receives the adapted material downstream to satisfy the conditions of both BY-SA and GPLv3 (i.e. attribution and ShareAlike) in the manner dictated by the GPLv3."

You may, however, also license the artwork and fonts under GPL. There is an opinion of FSF on this in Software Engineering Stack Exchange and what you can do to additionally cover trademark rights and other issues, however (unfortunately) they just don't touch the aspect of license-incompatibility.

2

Here's a test for deciding whether a data file is "needed":

  1. Delete (or move) the data file (so that it's no longer visible to the software).
  2. Without using or referring to the data file in any way, try to make a simple cosmetic change to the application.
  3. Try to recompile the application with the change (again without the data).
  4. Try to run the recompiled application (again without the data).

Possible outcomes:

  • If the compiler halts with an error, the application crashes on startup, or there's some other catastrophic failure that prevents you from completing this process successfully, then the file is probably needed.
  • If you can't figure out how to complete this process without referring to the file (e.g. because it's a build script or something like that), then the file is probably needed.
    • If you can figure it out, but it's significantly harder than it would otherwise be, then it probably also qualifies as needed (that's like obfuscating your code, but you're obfuscating the process instead of the code - and the GPL forbids this).
  • If the program starts up, but it can't do whatever it was designed to do, then it's more of a gray area. In most cases, this probably does not qualify as a "needed" file, because many programs are designed to operate on data files as input and output, and it's obvious that you do not need to provide e.g. image files with copies of Krita, or video files with copies of ffmpeg. On the other hand, if the file is something like a configuration file, which the program is incapable of automatically generating when it doesn't exist, then a case could be made that you have to provide some sort of default or baseline configuration so that the program can be used. The difference, I think, is that such a config file is expressly designed solely for use with the program, and serves no other useful purpose. It wouldn't make sense to think of the file as a separate work, independent of the program, so it gets included as part of the program. However, to my understanding, there is no clear case law on this point, so you may want to consult a copyright attorney for more specific advice tailored to your individual situation.
    • Another important consideration is whether the user could reasonably come up with their own data files to replace the one you failed to provide. If the file has a digital signature or some other cryptographic protection, then (in some circumstances) you may not only be required to provide the file, but also the cryptographic keys required to make similar files work correctly. This is particularly relevant if the program will be sold as part of a consumer product (e.g. a phone, a game console, etc.). On the other hand, the mere fact that a data file was expensive to create does not, by itself, matter - you don't become obligated to provide such files just because it would be difficult or costly for users to make their own.

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.