Skip to main content

The CDDL is Not Incompatible With the GPL

The CDDL is not incompatible with the GPL. Anybody who says otherwise has an agenda. I’ve heard all the arguments. They’re all bullshit and FUD.

I, of course, am not a lawyer. But I can read.

This is written primarily to discuss the situation with the Linux kernel and ZFS.

First, let’s review. The Linux kernel is licensed under the GNU General Public License version 2 (GPL). The effective clause of the GPL is in section 2, as follows (emphasis added)..

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

Everyone agrees that this is the clause that covers combined works. Even the FSF cites this passage when discussing ZFS and Linux. There is some discussion about executable vs source in section 3, but that’s a clarification of how this clause in section two affects binaries. The meat is here in section 2.

The Linux kernel contains a LICENSES directory with guidance on various licenses, among those are MIT, BSD, etc. MIT and BSD licenses are among those considered “preferred” because they are “GPL compatible”. This compatibility comes from the fact that these licenses permit relicensing. That is, the source code of a given module/file may be MIT or BSD, but the executable form is considered to be GPL licensed. Everything is ok. Everyone is ok with this.

What happens then if I extract the Linux source code and find files with MIT, BSD, or other licenses? May I use those files under their stated license? Or am I restricted to using those files under the terms of the GPL just because I obtained the source from a GPL binary I previously obtained a copy of? This is, of course, silly.

Casual perusal (i.e., using cscope) of a git clone, current as of this writing, shows there to be 1679 BSD licensed files and 2344 MIT licensed files in the Linux kernel tree. The argument that one must use these files under the terms of the GPL instead of their stated license, just because they were obtained as part of a bundle containing GPL licensed code is absurd in the highest degree. What would we say then? That a file originally authored by the FreeBSD project, is sometimes only covered by the BSD license and sometimes only covered by the GPL depending on whether you downloaded it from FreeBSD or from RedHat? The notion is absolutely ridiculous, and deserves to be ridiculed.

Now, let’s look at the CDDL. The CDDL section 3.5 states (emphasis added):

You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipients rights in the Source Code form from the rights set forth in this License.

To reiterate, executable forms of CDDL source code can be under any license you want. So what happens when you compile and link modules of which some are GPL and some are CDDL? Obviously the resulting binary is licensed under the GPL, because the GPL requires it, and the CDDL allows it.

What then of the obligations of the CDDL and the GPL? They both require source code be made available. Even if the CDDL didn’t require it, the CDDL licensed source files must be provided to comply with the terms of the GPL. In supplying the original source code you have complied with both licenses. And once those those files are obtained, CDDL licensed files may be reused, copied, modified, etc. under the terms of the CDDL, just as files licesned MIT or BSD may be used under the terms of the stated license. If this is not the case, and the source files must be licensed only under the GPL as the FSF claims, then the GPL cannot be compatible with any other license and all files not marked as licensed GPL in the Linux kernel are in violation of the GPL. A veritable license roach motel.

I hope we can put this foolish nonsense to rest. I have no idea why the FSF errounously claims that CDDL code is incompatible with the GPL while also maintaining that MIT/BSD code is (although I highly suspect it’s because they fear the CDDL, or perhaps they fear Sun/Oracle and refuse to back down to save face). But it seems that the rest of the community goes along with it because they don’t want to offend RMS or the FSF.

While it’s true that I am not a lawyer, that does not preclude me from being right.