39

Or in more general terms: Can I take code which is licensed under a permissive open source license (like the BSD license) and distribute it under a copyleft free software license (like the GPL)?

Microsoft and Apple seem to be allowed to take BSD (or similar) licensed code and distribute it under a proprietary license.

In addition, the permissive nature of the BSD license has allowed many other operating systems, both free and proprietary, to incorporate BSD code. For example, Microsoft Windows has used BSD-derived code in its implementation of TCP/IP and bundles recompiled versions of BSD's command-line networking tools since Windows 2000. Also Darwin, the system on which Apple's Mac OS X is built, is a derivative of 4.4BSD-Lite2 and FreeBSD. Various commercial Unix operating systems, such as Solaris, also contain varying amounts of BSD code.

Wikipedia

But then there is this story from 2007 where some BSD people got mighty mad at linux kernel developers who took BSD licensed code and "relicensed" it under GPL.

KernelTrap has an interesting article in which Theo de Raadt discusses the legal implications of the recent relicensing of OpenBSD's BSD licensed Atheros driver under the GPL. De Raadt says, "it has been like pulling teeth since (most) Linux wireless guys and the SFLC do not wish to admit fault. I think that the Linux wireless guys should really think hard about this problem, how they look, and the legal risks they place upon the future of their source code bodies." He stressed that the theory that BSD code can simply be relicensed to the GPL without making significant changes to the code is false, adding, "'in their zeal to get the code under their own license, some of these Linux wireless developers have broken copyright law repeatedly. But to even get to the point where they broke copyright law, they had to bypass a whole series of ethical considerations too."

OpenBSD Journal

I have to admit that I do not fully understand the legal implication of some of the terms. For example: incorporate, derive/derivative, or bundle.

Note that I used the term "distribute" in my question. A term which is not used in both the wikipedia article and the OpenBSD Journal.

Note also that I am not asking whether I can relicense the code. I am asking whether I can redistribute the code under a different license. I understand that I cannot relicense code if it is not my copyright.

What I mean with "distribute" is roughly as follows:

  1. Download BSD licensed code.
  2. Put GPL license file in root of project and GPL header in every relevant file and add note in README that the code is also licensed under GPL. Note that the BSD license is not removed.
  3. Upload the code to some website for everyone to download.
  4. ???
  5. PROFIT!!1

As far as I understand a downloader now has the option to take the code under the terms of the BSD license or under the terms of the GPL license.

If that is not allowed then please explain what Microsoft and Apple are doing.

4

7 Answers 7

29

If the BSD license in question is the two- or three-clause variant (i.e. without the advertising clause), I think you're technically allowed to do it, but you couldn't really enforce it: anyone who obtained a copy of the code you're distributing could re-use the BSD-licensed code under the provisions of the BSD license only, and the GPL wouldn't apply. (The GPL would apply to anything you hold the copyright for, and to the agregate; i.e. resulting binaries would be GPL. But for that to be meaningful you'd have to add code of your own...)

What Microsoft and Apple are doing is complying with the BSD license.

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

If they don't redistribute source code then that doesn't apply. (Nothing forces them to redistribute source code; that's why the BSD license is called a permissive license.)

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.

You'll find that Microsoft and Apple products which incorporate BSD code do satisfy this, either in the documentation, or typically in the "About" box.

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

Somehow I doubt Microsoft or Apple would be interested in doing this anyway.

The final clause is the lack of warranty, which everyone disclaims anyway, so there's no change there either.

The four-clause BSD license is GPL-incompatible so in that case you wouldn't be able to distribute under the GPL.

5
  • 7
    It gets interesting when you take BSD code, make modifications to the BSD code and then release the resulting derived code under GPL only. This means that your modifications can not be merged upstream because BSD can be relicensed under GPL but not the other way around. This is completely permissible under the BSD license.
    – Philipp
    Commented Jul 7, 2015 at 8:33
  • 1
    As noted by Mnementh below, it depends on the specific version of the BSD license. If the software is under the original then the answer is no you cannot do this.
    – O.M.Y.
    Commented Oct 17, 2015 at 11:23
  • 1
    Software licensed using BSD-4-clause whose copyright belongs to the University of California at Berkeley has been relicensed as BSD-3-clause; see ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change for details. Commented Oct 17, 2015 at 17:52
  • @O.M.Y. I've updated my answer to exclude four-clause BSD, thanks. Commented Oct 17, 2015 at 18:57
  • 1
    Not only could they use the code under the provisions of the BSD license only, that is their only option to use the code. The original authors only offered that license. And unless they authorized someone else to relicense the code (and neither the GPL nor the BSD license authorize you to change the license on anyone else's code, nor could they, at least in the United States) that is the only license under which the code is available. Your inclusion of some other license can only affect things you have the right to license, which would only be code you authored. Commented Sep 6, 2016 at 0:41
16

First of all: There are three different BSD-licenses. The original BSD-license has four clauses, including a advertisement-clause. This advertisement-clause is incompatible with the GPL, so you cannot redistribute it as GPL, the same as you cannot combine it with GPL-code.

The modified BSD-licenses drop this clause and make BSD compatible with GPL. This technically means you can redistribute it as GPL, as long as you follow the terms of the original license. That includes to put the text of the BSD-license with your product.

2
  • 2
    There are now four BSD licenses when you count Zero Clause BSD.
    – vhs
    Commented Nov 25, 2019 at 7:28
  • You certainly can combine BSD 4-clause with GPL, and throw in propietary code too if you want (as long as it's license allows such use). Go wild. You aren't allowed to share the resulting chimaera with anybody, however.
    – vonbrand
    Commented Feb 20, 2020 at 13:26
12

Theo de Raadt is wrong. Plain and simple.

The BSD is a permissive license which allows to incorporate the licensed work under a different license, no matter if permissive, copyleft or proprietary. That's the point of using a permissive license.

When the original authors of OpenBSD didn't want this to happen, they shouldn't have used the BSD license in the first place. When one does not want their work getting taken away from them like this, they are free to publish their work under a copyleft or proprietary license.

12
  • 7
    Theo de Raadt is basically right. The BSD license does not give the permission to re-license and for this reason the final user always gets all permissions from the original author who put the file under the BSD license and who would need to give his explicit OK. The BSD license permits to add code under a different license but then you would need to clearly mark every line that is under this different license. Given that the GPL is for complete works only, the GPL would not permit you to put parts of the code under GPL.
    – schily
    Commented Oct 1, 2015 at 11:06
  • 2
    @schily it would be interesting if you could also comment on taking BSD-licensed code and redistributing it under a closed, commercial licence. Is that lawful? It certainly seems to be a common enough practice.
    – MadHatter
    Commented Oct 1, 2015 at 11:09
  • 5
    DIstributing binaries from BSD licensed code without distributing the related source code is OK as this is permitted by the license. "redistributing in source and binary form are permited ..." if you retain the copyright disclaimer. Changing the license is prohibited by law and would need an explicit permission by the original author. Such a permission does not exist.
    – schily
    Commented Oct 1, 2015 at 11:55
  • 1
    @schily you raise an interesting point, but rather than explore it (which I think is too much for a comment thread), I'll repeat my question: is it, in your opinion, permitted to redistribute BSD-licensed code under a standard commercial (ie, you may run, but may not copy/modify/redistribute) licence?
    – MadHatter
    Commented Oct 1, 2015 at 11:59
  • 2
    @MadHatter It's not permitted. You cannot offer anyone else's works under any license other than the one they placed it under unless they authorized you to relicense it. Neither the GPL nor the BSD license authorize any relicensing. Everyone who receives code licensed under either the GPL or the BSD license receives the license the authors placed that code under from those authors automatically, and the BSD license prohibits you from hiding this from them. When licenses are compatible, that means you receive both licenses, each covering some portion (possibly overlapping) of the work.) Commented Sep 5, 2016 at 9:03
11

You can legally relicense under conditions compatible with the original license (meaning most forms of the BSD license will allow relicensing under the GPL). It just carries very little meaning for an unchanged source since only one of the actual copyright holders has standing to enforce the license. So tell Theo de Raadt that you relicensed under the GPL some program copyrighted by him (in accordance to what the BSD licensing allowed you) and the recipient went ahead and ignored your relicensing, and can he please sue this recipient over breaking the relicensing you did in accordance with what Theo's license allowed you to do?

Good luck with that. Most people license under BSD-like licenses exactly because they don't want to bother with suing people. So you better have some copyrights of your own in the software in question or your relicensing will mostly be meaningless even if there are no other copies available from other sources anymore: it would require entirely unusual circumstances to interest the copyright holders in enforcing your license.

2
  • 2
    Great points! People talk about this GPL header, but fail to realise that it normally still starts with a copyright claim -- if one is going to be claiming a copyright for something where one doesn't have one, that would sound like deception and fraud to me. And, in such case, the original person might as well sue such relicensor for copyright infringement as well.
    – cnst
    Commented Oct 4, 2015 at 0:36
  • 5
    This answer is basically correct, but it is not correct technically. Nothing ever gets relicensed. The elements that the original authors licensed under the BSD license are still under that license. The new elements added under the GPL are stil only under the GPL. Only the copyright holder can relicense something. Commented Sep 5, 2016 at 20:02
8

The key here is relicensing. You absolutely can incorporate BSD code to a GPL project as long as you comply with the license (giving credit where credit is due), but under no circumstance can you arbitrarily relicense it without the permission of the original copyright holder like Philipp here is saying. Not only would that be illegal, it most definitely would make you a bit of a knob.

The GPL

From GNU FAQ: What does it mean to be GPL Compatible:

It means that the other license and the GNU GPL are compatible; you can combine code released under the other license with code released under the GNU GPL in one larger program.

BSD-style Licenses

Generally speaking many (perhaps even most) BSD-style licenses are GPL-compatible, thus they may be combined in this way.

  • They may not be licensed the other way around!
  • The original 4-clause BSD license is not GPL-compatible due to a restriction about advertising, but I don't think many people actually use the original license. See more in the Wikipedia BSD License entry.
  • Combining code does not affect their respective license statuses; all this means that BSD-code can be added to GPL code.

Relicensing Without Permission

You should refer to your local copyright law. IANAL, but I would imagine that in most jurisdictions only the copyright-holder (and those authorized by said holder) can decide the conditions their work is distributed under. One does not own code made by someone else even if they obtained the code legally free. While licensing code under BSD gives relatively free hands for public to do what they please with the code itself, it does not relinquish copyright to the code--quite the opposite in fact.

10
  • 1
    This answer contradicts other, quite well-referenced and upvoted, answers here. Do you have some supporting documentation you'd like to link to and quote?
    – MadHatter
    Commented Oct 1, 2015 at 11:07
  • 3
    @MadHatter, how exactly is Philipp's answer well referenced? It might be highly upvoted -- I give you that -- but masses are ignorant, and these upvotes must mean nothing, apparently.
    – cnst
    Commented Oct 1, 2015 at 11:27
  • 1
    @cnst I'm not sure two upvotes constitutes highly upvoted; you might wish to consider that it wasn't among the answers I was holding up as examples.
    – MadHatter
    Commented Oct 1, 2015 at 11:31
  • 1
    @cnst you could as easily argue - as I might - that the top-voted answer to this question has been so upvoted not because it feeds particular pre-conceived positions, but because it makes a referenced argument in support of its position, instead of merely making a strident claim. As I said in my original comment on this answer, I'd like to see some supporting documentation quoted. If it agreed with the upvoted answers but made no argument in its own support, I'd still be opposed to it, for it would add nothing to the discussion.
    – MadHatter
    Commented Oct 1, 2015 at 12:08
  • 1
    Your point was evident, I just don't agree with it, and want you to present an argument, not just a statement. But your last sentence is very interesting; you suggest that I can change the licence terms on redistribution, as long as I only add to them. That is, I can redistribute under GPL as long as I don't fail to adhere to BSD's requirements. Is that what you're saying? If it is, I think it's a new thing and I'd like to see you make it clearer.
    – MadHatter
    Commented Oct 2, 2015 at 10:35
2

No, you cannot.

A licence is a way for a copyright holder to grant certain rights to others that are otherwise reserved. You don't own any copyrights to any stuff you just download from the internet, unless someone specifically transfers their copyright to you (e.g., what IEEE requires for scientific papers in order to publish them -- the authors must assign their copyright to IEEE).

If you make sufficient changes to the code, then you might be able to choose a different licence for your changes. But should you? The issue with the BSD/Linux controversy in regards to Atheros comes down to the ethical considerations -- the GPL advocates claim that BSD licence allows companies to not release the source code (even though a lot of companies do, since it's cheaper that way, and a lot of diffs get incorporated into all BSDs that originate from these companies like Netflix, Apple and even Oracle), yet instead of playing nice with the BSD guys themselves, Linux guys do the exact opposite than what all of those commercial companies are actually doing -- they (re)licence their changes to GPL, making sure that all such changes are forever barred from going back to the BSD projects. (Specifically, the conflict was fuelled by the fact that such re-licensing has occurred when only trivial and non-copyrightable changes have been performed on the existing code.)

10
  • 7
    Taking BSD code and relicensing it under GPL (or closed source) is completely within the terms of the BSD license. People who license their work under a permissive license like BSD should be aware of that. When you don't want this to happen, use a different license. There is nothing immoral about doing what the author specifically agreed to.
    – Philipp
    Commented Jul 7, 2015 at 8:37
  • 3
    You are definitely mistaken, ask a lawyer you trust.
    – schily
    Commented Oct 1, 2015 at 11:08
  • 2
    The comment was for Mr. @Philipp
    – schily
    Commented Oct 1, 2015 at 11:17
  • 2
    BTW, we have a bunch of lawyers over at law.stackexchange.com! :-)
    – cnst
    Commented Oct 1, 2015 at 11:36
  • 4
    @Philipp You are wrong. You cannot relicense BSD code under the GPL unless you're the author. You can combine code licensed under the BSD license with code licensed under the GPL. But at no time does any code that the authors only placed under the BSD license ever get offered under a GPL license. Nothing ever gets relicensed in this process. The BSD license does not say that you can offer code under another license, nor would that be enforceable if it did (at least in the United States). Commented Sep 5, 2016 at 8:58
0

From the BSD license:

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

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

You absolutely cannot distribute source code or binary w/o retaining the original BSD license with the code or making people aware that the associated binary code is under a BSD license.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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