License compatibility

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

License compatibility is an issue that arises when licenses are applied to copyrighted works, particularly licenses of software packages (software source code as also binary representation[1]). Licenses can contain contradictory requirements, rendering it impossible to combine source code or content from such works in order to create new ones.[2][3]

Example

Suppose a software package has a license that says, "modified versions must mention the developers in any advertising materials," and another package's license says "modified versions cannot contain additional attribution requirements." Without direct permission from the copyright holder(s) for at least one of the two packages, it would be impossible to legally distribute a combination of the two because these specific license requirements cannot be simultaneously fulfilled. Thus, these two packages would be license-incompatible.

Definitions

License compatibility can be defined differently on with varying strength around the concepts of "collective/combined/aggregated work" and "derivative work". The first "collective work" license compatibility definition allows the usage of various licensed works in a combined context.<templatestyles src="Template:Blockquote/styles.css" />

"License compatibility: The characteristic of two (or more) licenses according to which the codes distributed under these licenses may be put together in order to create a bigger distributable software."

— Philippe Laurent, European Open source Lawyers Event 2008, [4]

A stronger definition, also used by the FSF,[5][better source needed] includes the capability to change the license. As most prominent example, the copyleft licenses demand that the "derived work" combined from code under various licenses as whole is applied under the copyleft license.<templatestyles src="Template:Blockquote/styles.css" />

"License compatibility: The characteristic of a license according to which the code distributed under this license may be integrated in a bigger software that will be distributed under another license."

— Philippe Laurent, European Open source Lawyers Event 2008, [6]
License compatibility: Compatibility for derived works and combined works of own code and external developed open source licensed code (adapted from Mikko 2005).[7] "Derived works" are mixing code, "combined works" have components under differing license. From right to left needs a combined work a stronger separation between differently licensed parts to prevent them in becoming a derived work ("separation": combined by statically linking or source file separation with all components living in the same process and address space, "strong separation": components connected only via binary interfaces and which live in separated processes).[8]

Kinds of combined works

Lua error in package.lua at line 80: module 'strict' not found.

A "combined work" consists of multiple differently-licensed parts (avoiding relicensing). To achieve a combined work including also copyleft licensed components (which have a viral property leading potentially to a "derived work"), proper isolation/separation needs to be applied.

With individually licensed source code files multiple non-reciprocal licenses (as permissive licenses or own proprietary code) can be separated, while the combined compiled program could be relicensed (but is not required). Such source code file separation is too weak for copyleft/reciprocal licenses (as the GPL), as they require then the complete work to be relicensed under the reciprocal license as derivative.

A slightly stronger approach is a separation on the linking stage with binary object code (static linking) with all the components living in the resulting program in the same process and address space. This satisfies "weak copyleft/standard reciprocal" combined works (as LGPL licensed ones), but not "strong copyleft/strong reciprocal" combined works. While commonly accepted that linking (static and even dynamic linking) constitutes a derivative of a strong copyleft'd work,[9][10][11][12][13] there are individual alternative interpretations.[14][15]

For "combined works" with "strong copyleft" modules, a stronger isolation is required. This can be achieved for instance by separating the programs by an own process and only communication via binary ABIs or other indirect means.[10] Examples are Android's kernel space-to-user space separation via Bionic, or Linux distros which have proprietary binary blobs included despite having a strong copyleft kernel.[8][16]

While for some domains agreement exist if an isolation is suitable, there are domains in dispute and up to now untested in court. For instance, in 2015 the SFC sued VMware in an ongoing dispute whether loadable kernel modules (LKMs) are derivative works of the GPL'ed Linux kernel or not.[17][18]

Compatibility of FOSS licenses

License compatibility between common FOSS software licenses according to David A. Wheeler (2007): the vector arrows denote a one directional compatibility, therefore better compatibility on the left side than on the right side.[19]

Even accepted and common Open-source licenses are not necessarily compatible between each other.[20] Which can make it legally impossible to mix (or link) even open-source code if the components are available under different licenses. For example, software that combined code released under version 1.1 of the Mozilla Public License (MPL) with code under the GNU General Public License (GPL) could not be distributed without violating one of the licenses' terms by default.[21][better source needed] This is despite both licenses being approved by the Open Source Initiative[22] and Free Software Foundation.[23] License compatibility between a copyleft license and another license is often only a one-way compatibility.[24] This characteristic makes the copyleft GPL (and most other copyleft licenses) incompatible with proprietary commercial licenses and also many non-proprietary licenses.[25][26] This "one-way compatibility" characteristic is for instance criticized by the Apache Foundation, who provides the more permissive Apache license which doesn't have this characteristic.[27] Non-copyleft licenses as the FOSS permissive licenses have a less complicated license interaction and often have in general better license compatibility.[28][29]

The Artistic license 2.0 is here notable for an excellent license compatibility with all other FOSS licenses due to a relicensing clause which allows redistribution of the source code under any other FOSS license.[30]<templatestyles src="Template:Blockquote/styles.css" />

You may Distribute your Modified Version as Source (either gratis or for a Distributor Fee, and with or without a Compiled form of the Modified Version) [...] provided that you do at least ONE of the following:

[...] (c) allow anyone who receives a copy of the Modified Version to make the Source form of the Modified Version available to others under

(i) the Original License or

(ii) a license that permits the licensee to freely copy, modify and redistribute the Modified Version using the same licensing terms that apply to the copy that the licensee received, and requires that the Source form of the Modified Version, and of any works derived from it, be made freely available in that license fees are prohibited but Distributor Fees are allowed.

The Common Development and Distribution License, a weak copyleft license in-between GPL license and BSD/MIT permissive licenses, tries to address license compatibility problems by permitting mixing of CDDL licensed source code files with source code files under other licenses without relicensing. The resulting binary can be licensed and sold under a different license as long as the source code is still available under CDDL, enabling more use cases.[31][32][33]

GPL compatibility

<templatestyles src="Module:Hatnote/styles.css"></templatestyles>

To minimize license proliferation and license incompatibilities in the FOSS ecosystem, some organizations (for instance the FSF) and individuals (for instance David A. Wheeler), argue that compatibility to the widely used GPL is an important feature of software licenses.[34] Many of the most common free software licenses, especially the permissive licenses, such as the original MIT/X license, BSD licenses (in the three-clause and two-clause forms, though not the original four-clause form), MPL 2.0, and LGPL, are "GPL-compatible". That is, their code can be combined with a program under the GPL without conflict and the new combination would have the GPL applied to the whole (not the other license).

Copyleft licenses and GPL

When it comes to copyleft software licenses, they are not inherently GPL-compatible, even the GPLv2 is, by itself, not compatible with GPLv3.[35][36][37][25] If you tried to combine code released under both these licenses, you would violate section 6 of GPLv2, resulting in the incompatibility. However, if code is released under GPL “version 2 or later,” that is compatible with GPLv3 because GPLv3 is one of the options it permits.[38] However, most software released under GPLv2 allows you to use the terms of later versions of the GPL as well but some have exception clauses that allow combining them with software that is under different licenses or license versions.[39]

GFDL and GPL

Also, the FSF recommended GNU Free Documentation License[40] is incompatible with the GPL, text licensed under the GFDL cannot be incorporated into GPL software. Therefore, the Debian project decided in a 2006 resolution to use for documentation the GPL.[41] The FLOSS Manuals foundation followed Debian in 2007.[42] In 2009 the Wikimedia Foundation switched also from the GFDL to a CC-BY-SA license as main license for their projects.[43][44]

CDDL and GPL

Another important and controversial debated case of GPL compatibility is the CDDL licensed ZFS file system with the GPLv2 licensed Linux kernel.[45] Despite that both are free software under a copyleft license, ZFS is not distributed with most linux distros like Debian[46][47] (but with FreeBSD and even Mac OS) as the CDDL is considered incompatible to the GPL'ed linux kernel by the FSF and most other FOSS parties.[48][49] There exist also alternative positions as the legal interpretation, if and when this combination constitutes a "combined work" or "derivated work" of the GPL'ed kernel, is ambiguous and controversial.[50] In 2015 the CDDL to GPL compatiblity question reemerged when the linux distribution Ubuntu announced to include OpenZFS by default.[51] In 2016 Ubuntu announced that a legal review resulted in the conclusion that it is legally safe to use ZFS as binary kernel module in linux.[52] Others followed Ubuntu's conclusion, for instance lawyer James E.J. Bottomley argued there can't be "a convincing theory of harm" developed making it impossible to bring the case to court.[53] Eben Moglen, co-author of the GPLv3 and founder of the SFLC, argues that while the letters of the GPL might be violated the spirit of both licenses is unharmed, which would be the relevant aspect in court.[54] On the other hand, Bradley M. Kuhn and Karen M. Sandler from the Software Freedom Conservancy argued that Ubuntu would violate both licenses as a binary ZFS module would be a derivative work of the linux kernel and announced their will to achieve clarity in this question, even by court.[55][56]

CC BY-SA and GPLv3

On October 8, 2015 Creative Commons concluded that the CC BY-SA 4.0 is one-way compatible with the GPLv3.[57]

Creative Commons license compatibility

A license compatibility chart for combining or mixing two CC licensed works.

The Creative Commons Licenses are widely used for content, but not all combinations of the seven recommended and supported licenses are compatible among each other. Also, this is often a one directional compatibility, requiring the complete work to be licensed under the more restrictive license of both.

Re-licensing for compatibility

Sometimes projects gets stuck in a license incompatibility situation and the only feasible way to solve it is the re-licensing of the incompatible parts. Relicensing is achieved by contacting all involved developers and parties and getting their agreement for the changed license. While in the free and open-source domain achieving 100% coverage is often impossible, due to the many contributors involved, the Mozilla relicensing project assumes achieving 95% is enough for the relicensing of the complete code base.[58] Others in the FOSS domain, as Eric S. Raymond, came to different conclusions regarding the requirements for relicensing of a whole code base.[59]

Relicensing examples

Lua error in package.lua at line 80: module 'strict' not found. An early example of a project who did successfully re-license for license compatibility reasons is the Mozilla project and their Firefox browser. The source code of Netscape's Communicator 4.0 browser was originally released in 1998 under the Netscape Public License/Mozilla Public License[60] but was criticised by the FSF and OSI for being incompatible.[61][62] Around 2001 Time Warner, exercising its rights under the Netscape Public License, and at the request of the Mozilla Foundation, relicensed[63] all code in Mozilla that was under the Netscape Public License (including code by other contributors) to an MPL 1.1/GPL 2.0/LGPL 2.1 tri-license, thus achieving GPL-compatibility.[64]

The Vorbis library was originally licensed as LGPL, but in 2001 the license was changed to the BSD license with endorsement of Richard Stallman to encourage adoption.[65][66]

The VLC project has also a complicated license history due to license compatibility: in 2007 it decided for license compatibility reasons to not upgrade to the just released GPLv3.[67] After the VLC was removed from Apple App Store in begin of 2011, in October 2011 the VLC project re-licensed the VLC library part from the GPLv2 to the LGPLv2 to achieve better compatibility.[68][69] In July 2013 the VLC application could then resubmitted to the iOS App Store relicensed under the Mozilla Public License.[70]

7-Zip's LZMA SDK, originally dual-licensed under both the GNU LGPL and Common Public License,[71] with an additional special exception for linked binaries, was placed by Igor Pavlov in the public domain on December 2, 2008.[72]

Another example is the GNU TLS project, which adopted in 2011 the LGPLv3 license but relicensed in 2013 their code back to LGPLv2.1 due to serious license compatibility problems.[73][74][75]

The GNU Free Documentation License in version 1.2 is not compatible with the widely used Creative Commons Attribution-ShareAlike license, which was a problem for instance for the Wikipedia.[76] Therefore, at the request of the Wikimedia Foundation the FSF added with version 1.3 of the GFDL a time-limited section allowing specific types of websites using the GFDL to additionally offer their work under the CC BY-SA license.[77] Following in June 2009, the Wikimedia Foundation migrated their projects (Wikipedia, etc.) by dual licensing to the Creative Commons Attribution-ShareAlike as main license, additional to the previously used GFDL.[43] An improved license compatibility with the greater free content ecosystem was given as reason for the license change.[44][78]

Another interesting case was the relicensing of GPLv2 licensed linux kernel header files to the BSD license by Google for their Android library Bionic. To get rid of the GPL, Google claimed that the header files were cleaned from any copyright-able work, reducing them to non-copyrightable "facts".[79][80] This interpretation was challenged for instance by Raymond Nimmer, a law professor at the University of Houston Law Center.[81]

In 2014 the FreeCAD project changed their license from GPL to LGPLv2 due to GPLv3/GPLv2 incompatibilities.[82][83]

Also the Dolphin project changed their license from "GPLv2 only" to "GPLv2 or any later" for better compatibility in May 2015.[84]

In June 2015 mpv started the relicensation process of the project's source code for improved license compatibility under LGPLv2 by getting consent from the majority (95%+) of the contributing developers.[85]

In July 2015 Seafile switched for improved license compatibility, especially with Git, from the GPLv3 to the GPLv2.[86][87]

In 2016 MAME achieved a relicensing of the code base to BSD/GPL[88] after struggeling for years with an own written custom license, with non-commercial license terms.[89][90][91][92]

See also

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.
  4. Lua error in package.lua at line 80: module 'strict' not found.
  5. Lua error in package.lua at line 80: module 'strict' not found.
  6. Lua error in package.lua at line 80: module 'strict' not found.
  7. Lua error in package.lua at line 80: module 'strict' not found.
  8. 8.0 8.1 Lua error in package.lua at line 80: module 'strict' not found.
  9. Lewis Galoob Toys, Inc. v. Nintendo of America, Inc., 964 F.2d 965, ¶10 (9th Cir. 21 May 1992).
  10. 10.0 10.1 MereAggregation "What constitutes combining two parts into one program? This is a legal question, which ultimately judges will decide. We believe that a proper criterion depends both on the mechanism of communication [...] and the semantics of the communication [...]. If the modules are included in the same executable file, they are definitely combined in one program. If modules are designed to run linked together in a shared address space, that almost surely means combining them into one program. [...]" on gnu.org
  11. License Compatibility Matrix "Use a library[...] linking" on gnu.org (same compatibility of source code use and library use)
  12. LGPL on GNU.org
  13. origins-lgpl "Remember that the GPL requires anything that statically links to any code under the GPL also be placed under the GPL." on freebsd.org
  14. Linus Torvalds, GPL only modules, linux-kernel mailing list (17 December 2006).
  15. Lawrence Rosen, Derivative Works, Linux Journal (1 January 2003).
  16. Lua error in package.lua at line 80: module 'strict' not found.
  17. New Lawsuit Targets “Shims” Between Linux and Proprietary Code Tor Ekeland (2015)
  18. Conservancy Announces Funding for GPL Compliance Lawsuit on sfconservancy.org (March 5, 2015)
  19. The Free-Libre / Open Source Software (FLOSS) License Slide by David A. Wheeler on September 27, 2007
  20. Thomas F. Gordon Open Source license compatibility Fraunhofer FOKUS Berlin in December 2009.
  21. Lua error in package.lua at line 80: module 'strict' not found.
  22. Lua error in package.lua at line 80: module 'strict' not found.
  23. Lua error in package.lua at line 80: module 'strict' not found.
  24. Lua error in package.lua at line 80: module 'strict' not found.
  25. 25.0 25.1 Lua error in package.lua at line 80: module 'strict' not found.
  26. Lua error in package.lua at line 80: module 'strict' not found.
  27. Lua error in package.lua at line 80: module 'strict' not found.
  28. Lua error in package.lua at line 80: module 'strict' not found.
  29. Lua error in package.lua at line 80: module 'strict' not found.
  30. Interview with Allison Randal about Artistic License 2.0 on www.theperlreview.com
  31. CDDL Why Summary on sun.com (archived, 2005)
  32. McNealy: CDDL is 'best of both worlds' on zdnet.com by Aaron Tan (September 14, 2005)
  33. CDDL on tldrlegal.com
  34. GPL compatibility on dwheeler.com
  35. Lua error in package.lua at line 80: module 'strict' not found.
  36. Lua error in package.lua at line 80: module 'strict' not found.
  37. Lua error in package.lua at line 80: module 'strict' not found.
  38. Lua error in package.lua at line 80: module 'strict' not found.
  39. Lua error in package.lua at line 80: module 'strict' not found.
  40. GNU project: Frequently Asked Questions about the GNU Licenses: Why don't you use the GPL for manuals? Retrieved 20 June 2009.
  41. Debian Project: Resolution: Why the GNU Free Documentation License is not suitable for Debian. Voted February–March 2006. Retrieved 20 June 2009.
  42. FLOSS Manuals foundation: License Change 6 June 2007. Retrieved 20 June 2009.
  43. 43.0 43.1 Wikimedia license update approval
  44. 44.0 44.1 Wikipedia + CC BY-SA = Free Culture Win! on creativecommons.org by Mike Linksvayer, June 22nd, 2009
  45. 2.2 What is the licensing concern? on zfsonlinux.com
  46. Lua error in package.lua at line 80: module 'strict' not found.
  47. Pkg-zfsonlinux-devel -zfs-linux_0.6.2-1_amd64.changes REJECTED by Paul Richards Tagliamonte "Our consensus was that this package appears to violate the spirit of the GPL at minimum, and may cause legal problems. Judges often interpret documents as they're intended to read, hacks to comply with the letter but not the intent are not looked upon fondly. This may be a hard thing for technical folks to accept, but in legal cases one usually isn't dealing with technical people. As such, this package has been rejected" (26 Aug 2014)
  48. Yao: The State of ZFS on Linux September 11, 2014 by jake on lwn.net
  49. CDDL on gnu.org
  50. Lua error in package.lua at line 80: module 'strict' not found.
  51. Ubuntu Is Planning To Make The ZFS File-System A "Standard" Offering on phoronix by Michael Larabel (6 October 2015)
  52. ZFS Licensing and Linux on ubuntu.com by Dustin Kirkland (18 February 2016)
  53. Are GPLv2 and CDDL incompatible? on hansenpartnership.com by James E.J. Bottomley "What the above analysis shows is that even though we presumed combination of GPLv2 and CDDL works to be a technical violation, there’s no way actually to prosecute such a violation because we can’t develop a convincing theory of harm resulting. Because this makes it impossible to take the case to court, effectively it must be concluded that the combination of GPLv2 and CDDL, provided you’re following a GPLv2 compliance regime for all the code, is allowable." (23 February 2016)
  54. The Linux Kernel, CDDL and Related Issues on softwarefreedom.org by Eben Moglen & Mishi Choudhary (26 February 2016)
  55. GPL Violations Related to Combining ZFS and Linux on sfconservancy.org by Bradley M. Kuhn and Karen M. Sandler "Ultimately, various Courts in the world will have to rule on the more general question of Linux combinations. Conservancy is committed to working towards achieving clarity on these questions in the long term. That work began in earnest last year with the VMware lawsuit, and our work in this area will continue indefinitely, as resources permit. We must do so, because, too often, companies are complacent about compliance. While we and other community-driven organizations have historically avoided lawsuits at any cost in the past, the absence of litigation on these questions caused many companies to treat the GPL as a weaker copyleft than it actually is." (February 25, 2016)
  56. GPL Violations Related to Combining ZFS and Linux on sfconservancy.org by Bradley M. Kuhn and Karen M. Sandler " Conservancy (as a Linux copyright holder ourselves),[citation needed] along with the members of our coalition in the GPL Compliance Project for Linux Developers, all agree that Canonical and others infringe Linux copyrights when they distribute zfs.ko."
  57. Compatible Licenses on creativecommons.org "GPLv3: The GNU General Public License version 3 was declared a “BY-SA–Compatible License” for version 4.0 on 8 October 2015. Note that compatibility with the GPLv3 is one-way only, which means you may license your contributions to adaptations of BY-SA 4.0 materials under GPLv3, but you may not license your contributions to adaptations of GPLv3 projects under BY-SA 4.0."
  58. Lua error in package.lua at line 80: module 'strict' not found.
  59. Licensing HOWTO by Eric Steven Raymond&Catherine Olanich Raymond "Changing an existing license [...]You can change the license on a piece of code under any of the following conditions: If you are the sole copyright holder[...]If you are the sole registered copyright holder[...] If you obtain the consent of all other copyright holders[...]If no other copyright holder could be harmed by the change" (accessed on 2015-11-21)
  60. Netscape Public License FAQ on mozilla.org
  61. Lua error in package.lua at line 80: module 'strict' not found.
  62. On the Netscape Public License by Richard Stallman on GNU.org
  63. Lua error in package.lua at line 80: module 'strict' not found.
  64. Relicensing Complete on gerv.net by Gervase Markham (March 31, 2006)
  65. February 2001 on xiph.org "With the Beta 4 release, the Ogg Vorbis libraries have moved to the BSD license. The change from LGPL to BSD was made to enable the use of Ogg Vorbis in all forms of software and hardware. Jack Moffitt says, "We are changing the license in response to feedback from many parties. It has become clear to us that adoption of Ogg Vorbis will be accelerated even further by the use of a less restrictive license that is friendlier toward proprietary software and hardware systems. We want everyone to be able to use Ogg Vorbis.""
  66. RMS on license change on lwn.net
  67. Lua error in package.lua at line 80: module 'strict' not found.
  68. Lua error in package.lua at line 80: module 'strict' not found.
  69. Lua error in package.lua at line 80: module 'strict' not found.
  70. VLC under Mozilla public relaunched. on Ars Technica (Accessed 10/10/2013)
  71. Lua error in package.lua at line 80: module 'strict' not found.
  72. Lua error in package.lua at line 80: module 'strict' not found.
  73. Lua error in package.lua at line 80: module 'strict' not found.
  74. Version 2.99.4 (released 2011-07-23)[...] ** libgnutls: license upgraded to LGPLv3
  75. 2013-03-14 Nikos Mavrogiannopoulos (nmav@gnutls.org) * COPYING.LESSER, README: gnutls 3.1.10 is LGPLv2.1
  76. why-the-wikimedia-projects-should-not-use-gfdl-as-a-stand-alone-license-for-images
  77. Lua error in package.lua at line 80: module 'strict' not found.
  78. Licensing update rolled out in all Wikimedia wikis on wikimedia.org by Erik Moeller on June 30th, 2009 "Perhaps the most significant reason to choose CC-BY-SA as our primary content license was to be compatible with many of the other admirable endeavors out there to share and develop free knowledge"
  79. Google android and the linux headers on theregister.com (2011)
  80. Android: Sued by Microsoft, not by Linux "Microsoft launches new Android suit, Linus Torvalds' take on Linux kernel headers and Android" on ITworld (March 21, 2011)
  81. Infringement and disclosure risk in development on copyleft platforms on ipinfoblog.com by Raymond Nimmer (2011)
  82. Lua error in package.lua at line 80: module 'strict' not found.
  83. Lua error in package.lua at line 80: module 'strict' not found.
  84. Relicensing Dolphin: The long road to GPLv2+ Written by JMC47, MaJoR on May 25, 2015
  85. Possible LGPL relicensing #2033 on github.com "GPL-incompatible dependencies such as OpenSSL are a big issue for library users, even if the library user is ok with the GPL."
  86. switchin-from-gplv3-to-gplv2
  87. license.txt on github.com
  88. MAME is now Free and Open Source Software on mamedev.org (March 4, 2016)
  89. the-already-dead-theory on mamedev.emulab.it
  90. So why did this annoy me so much? on mameworld.info (10/22/13)
  91. Lua error in package.lua at line 80: module 'strict' not found.
  92. Lua error in package.lua at line 80: module 'strict' not found.

External links