[ Services ] [ Documentation ] [ Community ] [ About ] [ Contact ]
This FAQ contains some information on the requirements and best practice when providing source code for GPL licensed executable code. It was compiled as a result of the numerous shortcomings and mistakes of more than sixty successful gpl enforcements.
Before releasing source code as required by the GPL we recommend reading through this FAQ.
This is not legal advice. If you have doubts consult a legal advisor.
The GNU GPL requires that if you distribute GPL licensed software in executable format you also make available the "complete corresponding source code". That is defined as follows: "The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable."
This is quite a precise definition. For a typical C program, this translates into all the source code (.c files) plus header files (.h files) plus the scripts used to control compilation and installation.
Always keep in mind that the purpose of the GPL is to enable a user to exercise his freedoms. These freedoms include the ability to make and run modified versions of the program.
Generally, any sophisticated program is split into many different source code files. During the process of compilation, each of these files is compiled into executable code, after which they are linked together. This process of compiling and linking individual source code files is generally controlled by scripts. Most often the "make" program is used, whose scripts are generally referred to as "Makefiles".
Some programs such as the Linux kernel tend to have compile-time configuration (in case of the Linux kernel the .config file). This controls the process of compilation and would need to be included too.
After having translated software from source code into executable code, the program may need to be installed onto a system. The process of installation is often automatized by installation scripts. These are the scripts referred to in the GPL.
Please note that this is of special importance in the case of embedded devices as the executable program(s) need to be installed onto the device. If the user is not given a way to install his own (modified) versions of the program, he has no way of exercising his freedom to run modified versions of the program.
The GPL states: "However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable."
It's a good idea to release the toolchain because it might include things not normally distributed with the operating system on which the executable runs. It also helps encourage third parties to contribute to your development effort.
For each and every version of the executable program, you have to release the corresponding version of the source code.
So if you have distributed ten different versions of firmware for an embedded product, and this firmware contains GPL licensed software, then you need to release ten different source code packages, each one corresponding to the individual executable versions.
If you chose GPL Option 3b (rather than 3a), then the obligation only lasts for three years. This means that you do not have to provide source code for any executable code that was last distributed more than three years ago.
Keep in mind that distribution on physical storage media and via data networks such as the Internet is covered by the GPL licence.
If you use source code provided in specific software release, and you can use this source code to produce a working form of the executable code, then the source code release seems complete.
If the build process fails, or you end up with a non-working executable, or you have no way to install the resulting executable, then something is missing.
Copyright (c) 2004-2006 The gpl-violations.org webmaster
Copyright (c) 2006-2007 FSFE e.V.