Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am writing code that uses one library with GPL (not LGPL) license, and one with the 3-clause BSD license. Since I link to GPL-licensed library, my code will need to be GPL as well. How should I, in practice, deal with the original LICENSE.txt from the BSD-library?

(A) Can I distribute a project so that the main source code is GPL-licensed, and then some subdirectory is BSD-licensed?

(B) If I were not only to link to libraries, but to use and combine the BSD and GPL code in a more involved manner, what to do with the LICENSE.txt then?

The 3-clause BSD text tells: "Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer." so apparently I should retain the copyright notice, and that list of conditions, somewhere. But then I'll also need to put the GPL license txt-file somewhere.

Further, apparently I don't need to retain the "Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:" part of the BSD license text, since it only tells me to retain the other parts.

So, how, and in which text files, should I in practice organize the GPL license text and the parts of the BSD license and copyrights that I retain?

EDIT: So in case B, I would be taking 3-clause BSD licensed code, and redistributing it under GPL, which is permitted, as 3-clause BSD license is (one-way) compatible with GPL. I am just asking how to deal with the license texts and textfiles in practice.

share|improve this question
    
This is a bad idea. A simple web search will show you why. But the whole product becomes GPL. There have been issues with this before. –  Andrew Finnell Jul 24 '12 at 12:56
1  
@Andrew Finnell: Why is it a bad idea? The whole product is GPL, since a component is, but what's wrong with that? The BSD-licensed library is still BSD-licensed. People don't use BSD licenses unless they want their stuff usable by people who want to use more restrictive licenses. –  David Thornley Jul 24 '12 at 16:01

3 Answers 3

For simplicity, it is probably best to release the entire thing under GPL. 3-clause BSD license has no form of copy-left, so you are well within your rights to rebrand it, as long as you maintain its notice.

You will end up with two kinds of files:

  • Originally BSD files: needs to have both headers, order isn't important to my knowledge, just that they are there
  • Your files and originally GPL files: need to have the GPL header

And of course for any binary release you will need to include a link to source and both headers in some form of another. I would recommend the standard GPL, followed by "Portions of this program were originally released under the following license" or something like that, you can likely find examples of this happening in the wild if you look for it.

Note that I am not a lawyer, nor do I specialize in either open source licensing, or licensing in general. I am simply relaying what my interpretation of the given licensing combined would look like.

share|improve this answer

This simplyis not possible according to multiple interpretations of the license terms.

gnu.org says for version 2:

Because it imposes a specific requirement that is not in the GPL; namely, the requirement on advertisements of the program. The GPL states:

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

The advertising clause provides just such a further restriction, and thus is GPL-incompatible.

The revised BSD license does not have the advertising clause, which eliminates the problem.

and for GPL 3:

Why is the original BSD license incompatible with the GPL? (#OrigBSD)

Because it imposes a specific requirement that is not in the GPL; namely, the requirement on advertisements of the program. Section 6 of GPLv2 states:

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

GPLv3 says something similar in section 10. The advertising clause provides just such a further restriction, and thus is GPL-incompatible.

The revised BSD license does not have the advertising clause, which eliminates the problem.

Other lawyers/judges of course might have different opinions ...

share|improve this answer
1  
Are you sure you aren't talking about the 4-clause BSD license? "Neither the name of the <organization> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission." does not refer to advertising in anyway shape or form, and is actually related to the trademark of the organization, not the copyright of the source code. –  Guvante Jul 24 '12 at 20:25
1  
Indeed! I was confused (again) about the different revisions! –  johannes Jul 24 '12 at 23:29
up vote 0 down vote accepted

Ok, reading section 7 of GPLv3 (sorry, link is to top of the page), is does allow for "additional permissions [that] apply only to part of the Program"[1]. So keeping some of the files or directories under the BSD license seems ok, since I guess the "do whatever you want" of the BSD license is an "additional permission".

Also, section 7 allows to "supplement the terms of this License with terms:" (6 point list of allowable kind of terms follows), and all of the 3 clauses (+ the disclaimer) of the BSD license are covered, so in case of mixing BSD and GPL code in a single file, maybe I'd just need to put an ADDITIONAL_TERMS.txt somewhere, containing the 3 clauses + disclaimer from the BSD license.

(To be extra precise, all the time that I have talked about the BSD license, I have meant the 3-clause license AKA "New BSD License" AKA "Modified BSD License", that I linked to in my question.)

[1] AS long as a recipient of the program would be allowed to remove the additional permissions if he further redistributes. And the BSD license allows for this.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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