GPL fine print

It being a Friday night, I’ve been rereading version 2 of the GPL, and noticed some things that I’d forgotten about. Perhaps you’ve forgotten too.

For example, did you know that if you distribute a modified copy of a GPLv2′d program, then:

you must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.

Surprised? Me too. I’m willing to bet at least one person reading this has unknowingly violated this part of the license.

Here’s another one:

If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)

And finally, if you distribute a GPL’d program in binary form, then you have to make the source code available too. But for how long? The GPL has an answer:

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 [...] on a medium customarily used for software interchange;

Posted on 31 October 2009

9 comments

  1. Peter’s avatar

    The second item is not usually a major concern, as few programs normally print or display the described notice. This appears mostly to ensure that such a notice is not removed in a modified copy of the program.

    Reply

  2. Joe Buck’s avatar

    I don’t recall where I heard it, but it’s been claimed that the clause requiring notification that files have been changed might be necessary to make GPLv2 valid in countries with “moral rights” language in their copyright laws (so changes that break a program aren’t mistakenly attributed to the original programmer, damaging his/her reputation).

    Reply

  3. Joe Buck’s avatar

    I think that the most common violation of the license is people putting up a binary-only tarball with the intent of providing source later, without realizing that either the written offer or the source has to there immediately when the binary is made available for distribution, and the penalty is revocation of the license. GPLv3 is actually a lot more lenient about accidental violations.

    Reply

  4. Russ’s avatar

    Your (3) is only required if you distribute binaries without source. The binaries must be accompanied with that written offer. If you distribute source with your binaries, you are already covered.

    Reply

    1. Nat Friedman’s avatar

      True. I will clarify that in my post. Thanks.

      Reply

  5. Anonymous’s avatar

    Others have already addressed the second and third oddities. Regarding the first, the FSF has explicitly stated that they consider any form of changelog-style information sufficient, regardless of whether such information appears *in* the changed files. The GPLv2 pre-dates the widespread use of version control.

    Reply

    1. Nat Friedman’s avatar

      It’s not up to the FSF to interpret the license; that’s up to the courts. Whatever the FSF says, the license says something else. The FSF’s opinions do not have force of law.

      Also, not everyone keeps changelogs.

      Reply

      1. ben’s avatar

        Yes, but a court might look at how both parties to the license agreement could reasonably have interpreted it and in that instance the opinions of the body that originated the template license could have some sway.

        Reply

  6. vespas’s avatar

    Since we are talking about fine points of the GPL, I’ve been wondering, if a GPL’d project likes a bit of GPL’d code from another project and they copy something as small as a function, do they need to provide an explicit reference to the originating project? Or is providing the source enough to satisfy the GPL?

    Reply