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.
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."
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:
- Download BSD licensed code.
- 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.
- Upload the code to some website for everyone to download.
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.