10

Wikipedia seems to suggest that CDDL and GPL are incompatible, yet no one knows for sure why or how.

Why and how are the CDDL and GPL are incompatible?

13

Be careful with the claims about the CDDL on the FSF website, they are wrong. Some years ago, Eben Moglen confirmed to me in a private mail that the claims about the CDDL on the FSF website are based on a false assumption on how BSD / GPL compatibility may be avowed. So the BSD text and the CDDL text on the same website both do not apply. I asked Moglen to try to encourage Richard Stallman to change this, but it seems that the attempt from Moglen to do this resulted in discord.

The CDDL is a license that does not try to enforce restrictions that would not stand in court but disallows relicensing of code. The fact that on the other side, the CDDL explicitly limits its scope to the files that contain CDDL'd code, allows us make our first conclusion:

  • Code under the CDDL and code under the GPL cannot be mixed in a single file.

The GPL is a license that limits its scope to the so called "work" limit and forbids relicensing of code. This allows us to make the next conclusion:

  • Code under the CDDL and code under the GPL cannot be mixed in a single work.

Now we have to understand what the CDDL allows, what the GPL allows and which claims from the GPL are void because they are in conflict with the law...

In the EU, we have some consumer protection laws that cause rules for "terms of business" that forbid some rules in contracts that cannot be set up by both parties but are dictated by one of the party. In case of the GPL, this allows licensees of GPL'd code to interpret some of the ambiguous claims in the way that gives most convenience to the licensee.

In the US, consumer protection laws are based on the construct that such unilateral contracts are not called contracts but "Licenses" and such a license may not enforce anything that is not explicitly listed in the US Copyright law.

As a result, both jurisdictions make the claims in GPL section 0 (where the GPL tries to defined what a derivative work is) void claims.

In particular: the claim from the GPL that tries to define that a so-called "collective work" is rather a "derivative work" is void. This is fine, as it permits to create collective works with GPL'd code being used.

Please first read:

These all explain that you may use the GPL in collective works because GPL section 0 is void.

Now that we know that GPL section 0 is void and we know that CDDL and GPL cannot appear simultaneously in a single work, are there other possible methods to combine CDDL and GPL?

Yes, this works because the work GNU tar cannot be used alone. It needs at least libc that is a different independent work. The GPL permits a work under GPL to be combined with other works that are under a different license if the other work is either typically part of the target platform distribution or if this other work is freely redistributable. Note that this is a statement that has been confirmed by many lawyers and the FSF that explicitly claims "You are allowed to use GNU tar together with a CDDL'd libc".

We now can make the next conclusion:

  • CDDL and GPL can appear together in a collective work if the related single works that are part of the collective work are independent from each other.

  • A typical method to combine CDDL and GPL is to let a GPL'd program use CDDLd libraries.

While all lawyers agree to permit a GPL'd program to use a CDDL'd library, there is a statement from Lawrence Rosen who claims that he believes that even a GPL'd library may be used by a non-GPL'd program (check his book, it is free).

  • 1
    I see the argument for the EU, but I don't totally understand how the GPL's inability to "enforce anything that is not explicitly listed is the US Copyright law" renders section 0 void in the US. (I assume that phrase should read "in" instead of "is" -- if not, that may also be part of my misunderstanding.) Could you elaborate a little more on that? Section 0 (of the GPLv2, I assume) appears to defer to the determination of the copyright law about what counts as a derivative work: a "work based on the Program" means either the Program or any derivative work under copyright law. – apsillers Nov 18 '15 at 17:54
  • 1
    For consumers protection, a claim in a license is void in the USA if it tries to set up something that is not listed in the US Copyright law in this part: copyright.gov/title17/92chap1.html#106 This list does not include the permission to set up a new definition of what a derivative work is. The GPL however tries to claim that any modification or use creates a derivative work. This is void and the definition from the law applies instead. This causes most use cases to become a collective work instead and in a collective work, the license of each part remains as is. – schily Nov 18 '15 at 18:03
  • 1
    I see, that makes sense to me; a license cannot extend its authority beyond the copyright rights being licensed. Which passage(s) of the GPL set up a new definition of what a derivative work is? The only reference to derivative works I can see in Section 0 is the definition of "work based on the Program" defers directly to the definition of a derivative work under copyright law. Is the problem in Section 2, which uses the phrase "collective work"? – apsillers Nov 18 '15 at 18:13
  • 3
    The most important chapter from Rosen's book for this answer is chapter 6, which argues that the GPL can apply copyleft to derivative works based on a GPL'd work, but not to collective works that include a GPL'd work. Note also that Rosen admits this is his professional opinion (and it is very well argued!) but it has not been tested in court: "So you can take with a grain of salt my belief that [...] the GPL [...] will ultimately be read by the courts to mean that derivative works are subject to the GPL’s reciprocity provision, but collective works are not." (ch 6, p18 of PDF) – apsillers Mar 21 '16 at 15:48
  • 2
    Eben Moglen's own writings do not seem to support the conclusions you draw: softwarefreedom.org/resources/2016/linux-kernel-cddl.html I find your claim that Eben Moglen privately told you the CDDL and GPL are compatible either suspect or that you misunderstood his statement. – bobpaul Feb 26 '18 at 22:08
8

From the CDDL announcement https://lwn.net/Articles/114840/ :

Like the MPL, the CDDL is not expected to be compatible with the GPL, since it contains requirements that are not in the GPL (for example, the "patent peace" provision in section 6). Thus, it is likely that files released under the CDDL will not be able to be combined with files released under the GPL to create a larger program.

the "patent peace" provision supposedly is a "further restruction" not permitted by the GPL:

You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.

So according to the creators of the CDDL, the two licenses most likely are incompatible. One license requires you to do A, and the other does not allow adding such requirements; therefore you cannot comply with both at the same time.

The CDDL has a similar requirement:

You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients' rights hereunder.

You may be able to find a term in the GPL license terms that "alters or restricts the recipients' rights" in a way that the CDDL does not, and then the two licenses are likely incompatible.

Licenses are usually only compatible if at least one is a very permissive license, and you are essentially only bound by the other license. E.g. GPL + Public Domain. Since public domain doesn't add restrictions, the combination is good as long as you obey the GPL terms (and the public domain terms).

I do not think it is possible to create copyleft licenses that are combinable without either A) one being a subset of the other, or B) one explicity having an exemption for the other (i.e. it must permit the additional requirements of the other license; or must allow switching to the other license). It is not possible to allow arbitrary restrictions to be added; the licenses need to be "sealed" (e.g. one could add the restriction 'source code must only be made available to Bill Gates').

5

I'd suspect they are really incompatible. For example, there is a lot of pressure on Linux (GPLv2) to include Sun's (now Oracle's) ZFS filesystem (CDDL license, from Solaris), as it is a more mature, tested alternative to the seemingly forever trapped in development Linux native BTRFS. There are several unofficial modules floating around, meaning the technical obstacles aren't insurmountable. And yet, even with massive legal talent on hand, they refuse on the ground the licenses are incompatible, as for example the official Ubuntu stance states. Wikipedia even claims the CDDL license was engineered to be GPL-incompatible.

Sure, a lawyer will always recommend to err in the side of caution, i.e., assume they are incompatible unless given explicit assurances they aren't. But it still makes a compelling case to me.

  • 1
    The situation relative to Ubuntu has evolved since then: see the edit message here wiki.ubuntu.com/ZFS?action=info "remove bit about CDDL and GPL being incompatible; this is not Canonical's view". Maybe this answer should be updated to reflect how controversial a subject that is. – Zimm i48 Sep 26 '16 at 8:14
3

The reason given by Gnu.org in their Various Licenses and Comments about them document is

It has a weak per-file copyleft (like version 1 of the Mozilla Public License) which makes it incompatible with the GNU GPL. This means a module covered by the GPL and a module covered by the CDDL cannot legally be linked together. We urge you not to use the CDDL for this reason."

I am not a lawyer but I think that means that CDDL and GPL both require that any derivative work be distributed only under their license. It's impossible to do both, so the licenses are incompatible.

  • 3
    GNU's explanation in that document is too vague for me; I don't know why "a weak per-file copyleft" necessarily makes it GPL-incompatible. The section on MPL version 1 isn't any clearer either. – congusbongus Nov 18 '15 at 4:10
  • You are right, the GPL is a weak per work copyleft, so there is no real difference. – schily Nov 18 '15 at 14:15
  • @schily what do the words "per work" mean? – porton Mar 21 '17 at 21:39
  • "work" is a technical term related to the copyright law. The CDDL enforces license rules up to the file level, the GPL enforces license rules up to the work level but a binary compiled from such a source is more than any of both, because the code is linked against libraries. In both cases, the other parts in the binary create a "collective work" with the CDDL or GPL parts and because of this, the libraries may be under any license. The GPL just requires to deliver the non-system libraries with the sources in case a binary is shipped. Additional libs do not need to be part of the work... – schily Jul 10 '18 at 12:52

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.