13

The BSD license says that derivative works may be distributed under the following conditions:

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

(1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

(2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

(3)The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission.

The GPL(v2)[1] says

Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.

Now, let's say I write software, use some GPL code and some BSD code, and publish the result under the GPL.

According to the GPL, I'm not allowed to have my resultant code require any further conditions than imposed by the GPL. For example, I'm not allowed to charge $1000 for a copy of source code. The thing is that while the BSD seems to be a fairly light license, it does require some things which the GPL doesn't: Clause 1 and 2 require that derivative works have to have an attached BSD license/warranty disclaimer, and 3 requires that I may not use the original author's name to promote my work.

So now my derivative work has to pass on the following requirements to my end-users:

  1. If they want to redistribute my code, they may do so under the GPL (from the GPL code).
  2. If they want to redistribute my code, they must put "a bunch of words" and agree not to say that the original BSD authors helped out my code.

How does 1. and 2. work together?


And yes, I've seen Can I take BSD licensed code and distribute it under GPL? , but the FSF definitely holds that the three clause BSD is GPL compatible.

[1]. GPLv3 explicitly solves this problem in Paragraph 7. But GPL2 doesn't contain these clauses there (to the best of my knowledge).

  • 2
    Side note: With "I'm not allowed to charge $1000 for a copy of source code" you mean: when distributing the binary, I may not charge additional $1000 for access to the source code, right? -- Because, when you don’t distribute the binary, you may very well charge $1000 for the source. – unor Dec 8 '17 at 6:49
  • @unor yes [space] – gpl Dec 8 '17 at 18:56
9

Two licenses are compatible if it is possible to satisfy both licenses at the same time.

The GPLv2 states:

You may not impose any further restrictions on the recipients' exercise of the rights granted herein.

From this it may be argued that further restrictions are allowed if they do not limit recipient's rights.

The 1st and 2nd BSD clauses (retaining notices and disclaimers in source and binary forms) are a subset of the GPL's requirements. In particular compare GPLv2 section 1:

  1. You may copy and distribute verbatim copies […], provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.

And section 3 explains that the section 1 requirements also apply for binary distribution.

When it is reasonable to expect the GPL license to be retained, it is also reasonable to require that the BSD license is retained when a GPL software contains BSD-licensed parts.

The GPLv3 doesn't apply here, but clarifies the intent of the GPL authors. It offers a mechanism that further terms can be added to the license, if these terms are not restrictions. Adding a term that requires legal notices to be preserved is explicitly allowed by the GPLv3. I take that as an indication that such terms would be implicitly allowed by the GPLv2.

You also mention this clause of the BSD:

  1. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

Now it is important to distinguish between the many different versions of the BSD license. It exists the original 4-clause BSD which requires acknowledgement in advertisements, the modified 3-clause BSD which keeps this anti-promotion clause, and a even a 2-clause BSD with none of these clauses (the FreeBSD license). Your question seems to be about the 3-clause BSD. While the FSF considers the 4-clause BSD license incompatible it does allow the 3-clause BSD which includes the clause quoted above.

I would argue that this clause does not contradict the GPL. The GPL has never given recipients the right to use the author's names to endorse or promote a product. The BSD merely affirms explicitly that no such right is granted. Within the original BSD this clause was important because the license requires acknowledgement in advertising material, but this acknowledgement must not look like an endorsement. Without the advertising clause, this anti-endorsement clause seems just a generic disclaimer, and could be removed as well (which was done in the FreeBSD license).

So if the 3-clause BSD contains language that looks like a restriction but actually maintains the legal status quo, then this cannot be a restriction on rights received through a GPL license.

  • This is the best answer IMO, because it correctly answers the question about the third clause. Without a license, copyright law (at least in the US - I'm not familiar with copyright law elsewhere in the world) says that users who receive the software have no rights. A software license adds rights. Because the GPL does not say that users can use the authors' names to endorse or promote a product, they do not have that right. The BSD License merely makes that explicit. – Mego Dec 8 '17 at 14:08
  • 3
    As I said, requirement three "isn't an additional requirement on users, just a reminder that they may not do it anyway". – MadHatter Dec 8 '17 at 14:47
7

Not only is requirement one not in conflict with the GNU GPL, the GPL requires it also. See, eg, GNU GPL3 s4:

You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice [...] keep intact all notices stating that this License [applies ... ] keep intact all notices of the absence of any warranty

GPL2 has similar language in eg s1. The requirement to "keep a copyright notice, keep a disclaimer, tell future users they need to keep both" is thus entirely in keeping with the GPL. If the list you had to keep intact contained more than that then it would indeed not be compatible, as the old advertising-clause BSD licence was not.

It seems to me that the GPL will fulfil requirement 2 by insisting that the source is included with all binary distributions, thus reducing it to requirement 1.

Requirement 3 is interesting. The GPL contains similar language (this from GPL3):

If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.

So one could argue that the spirit of the GPL is in keeping with a no-claimed-endorsement requirement. But my main argument is that you're not allowed to do that anyway: I mustn't claim that that tiny electric toy car I'm selling is endorsed by Elon Musk, because it isn't. So this isn't an additional requirement on users, just a reminder that they may not do it anyway.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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