Suppose that I am writing the firmware F for the device D, and that I am using the library L which is licenses under GPLv2. The library L is a "source code library" that means that it is not compiled, but is composed of source code files that need to be compiled and linked with the main application.

The device D is a custom device for the customer C, so it is not meant to be sold to everybody, but only to customer C.

What am I obliged to do in this case?
Do I have to provide customer C with all of the source code of firmware F?
How am I supposed to provide this source code?


2 Answers 2


Try reading the license. It's surprisingly readable for a legal document.

Also see http://gnu.org/licenses/gpl-faq.html


  • you must provide a copy of the GPL

  • you must provide source code, or a written offer for source code. But the written offer has other obligations, so it's probably easiest to just provide the source with the product.

  • The source code for a work means the preferred form of the work for making modifications to it. It must be provided on a "medium customarily used for software interchange." You must include the code, headers, and build scripts.

  • I have problems in understanding this part: "You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following". What is comprised in "distribute"? I do not distribute the executable, I distribute the device B that contains it. Does this make any difference?
    – Robbo
    Commented Feb 12, 2015 at 2:37
  • 4
    Both are distribution. Distributing a microcontroller with the binary programmed on it is the same as distributing a flash drive with the binary on it.
    – markrages
    Commented Feb 12, 2015 at 2:48

The GPL requires that any time you distribute the software, you must either include the source code or make it available for download with clear instructions on how to do so (e.g. provide a URL to your public repository or download page).

You are only obligated to provide the source code to whomever you are distributing binaries. For the vast majority of GPL projects, the software is available to the public so the source must be as well. In your case, the binaries are only available to specific customers, so only those customers must receive source code (or have it available).

As far as "when," you must make the source code available no later than the instant the binaries are available.

  • 1
    In this case it is a moot point because the asker is redistributing a third-party library. Regardless, the GPL FAQ backs up what I am saying: "But if you release the modified version to the public in some way, the GPL requires you to make the modified source code available to the program's users, under the GPL." In other words, the author is not required to make the source publicly available, but the customer might if they distribute the devices in the question.
    – user22815
    Commented Feb 12, 2015 at 5:08
  • To whom it may concern: I was replying to another comment which was deleted by its author. I promise I am not having a conversation with myself.
    – user22815
    Commented Feb 12, 2015 at 19:34

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