OpenWrt Forum Archive

Topic: OpenWrt and GPL requirements

The content of this topic has been archived on 28 Apr 2018. There are no obvious gaps in this topic, but there may still be some posts missing at the end.

I thought I would take the time to remind forum members about the requirements and obligations of the GPL. I'm doing this since over the last few months I have seen people posting binary images (in some cases heavily customized) without source code or build scripts and also making reference to selling routers without supplying the source code.

OpenWrt buildroot and the OpenWrt scripts are licensed under the GPL. When you distribute a binary image, OpenWrt's GPLv2 License compells you to release the "scripts used to control compilation and installation of the executable".

If you have not modified the actual source code, providing a link to the github source is fine, but you should still release your scripts used to control the compilation and installation. At minimum, this would be the config file if everything else remains standard.

The exact text of the relevant section of the license follows

  3. 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:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

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.  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.

If you are including custom source code of your own, you may or may not need to release your source code. If, for example, you have shell scripts which source or use OpenWrt shell functions, then these would be classed as derivative works and you're required to release your source code.

In many cases, binary code compiled from C source would also need to be accompanied by source code, since you're linking to libraries which are GPL and therefore the work constitutes a derivative work (unless the only library you link to uses the LGPL or uses a more permissive license).

A concrete example of a case where you do not need to release your C source code would be if you link only to the musl (MIT license) or the uclibc (LGPL) or glibc (LGPL) library. If your application links to another library that is GPL, then you would need to release the source.

If your shell scripts do not include any OpenWrt shell code (/etc/rc.common, /lib/functions.sh etc.) then you don't need to release your code.

If you are releasing a binary and if in doubt, post a question and I'm sure many would be prepared to help.

dl12345 wrote:

If you have not modified the actual source code, providing a link to the github source is fine, but you should still release your scripts used to control the compilation and installation. At minimum, this would be the config file if everything else remains standard.

Even if your own scripts that are not GPLed should be released? That does not make sense at all.

dl12345 wrote:

I thought I would take the time to remind forum members about the requirements and obligations of the GPL.

If the shell script is bundled with OpenWrt/LEDE, doesn't publishing an image constitute publishing the code?

stangri wrote:
dl12345 wrote:

I thought I would take the time to remind forum members about the requirements and obligations of the GPL.

If the shell script is bundled with OpenWrt/LEDE, doesn't publishing an image constitute publishing the code?

Anything comes with OpenWRT, including the shell scripts, is GPLed, AFAICT. I was talking about own shell scripts.

mazilo wrote:
dl12345 wrote:

If you have not modified the actual source code, providing a link to the github source is fine, but you should still release your scripts used to control the compilation and installation. At minimum, this would be the config file if everything else remains standard.

Even if your own scripts that are not GPLed should be released? That does not make sense at all.

If your scripts are used to control the compilation and installation, then yes they should be released. For example, a Makefile would use the buildroot includes (kernel-defaults.mk etc.), which is GPL.

stangri wrote:
dl12345 wrote:

I thought I would take the time to remind forum members about the requirements and obligations of the GPL.

If the shell script is bundled with OpenWrt/LEDE, doesn't publishing an image constitute publishing the code?

Yes, if it's a shell script that is bundled, then the code source code is by definition included in the image

The discussion might have continued from here.