diff options
| author | Drew DeVault <sir@cmpwn.com> | 2023-05-16 14:25:46 +0200 |
|---|---|---|
| committer | Drew DeVault <sir@cmpwn.com> | 2023-05-16 14:29:14 +0200 |
| commit | 15ca014bec3f51cb0dcf4d07df044fabe6df0764 (patch) | |
| tree | d80119b9a42190c8fd0095b2b8cccbd88f5599ae | |
| parent | e7174367fc4d8dc3760b7a012fe15320b43fa9a4 (diff) | |
| download | writefreesoftware.org-15ca014bec3f51cb0dcf4d07df044fabe6df0764.tar.xz | |
Copyleft
| -rw-r--r-- | content/learn/copyleft.md | 106 | ||||
| -rw-r--r-- | static/images/licensing-spectrum.svg | 659 |
2 files changed, 765 insertions, 0 deletions
diff --git a/content/learn/copyleft.md b/content/learn/copyleft.md index faa3d92..b3a85ef 100644 --- a/content/learn/copyleft.md +++ b/content/learn/copyleft.md @@ -2,3 +2,109 @@ title: What is copyleft? weight: -8 --- + +**Copyleft** is a licensing tool unique to free software. It is designed to +encourage the proliferation of free software and protect free software from +being incorporated into non-free works. This works by giving you not only the +*right* to share your improvements, but the *obligation* to share your +improvements, under some conditions. It is very important to understand these +obligations when re-using copyleft software in your own work. + +{{< tip >}} +**Terminology note**: +Conflating "copyleft" and "free software" is a common misconception: +non-copyleft software can be Free Software, and Open Source software can be +copyleft. However, those who identify more closely with the Free Software +movement tend to favor copyleft licenses more than those who identify with the +Open Source movement. +{{< /tip >}} + +## The copyleft spectrum + +Different free software licenses exist along a spectrum from **permissive** to +**copyleft**, based on the degree to which they emphasize copyleft in their +license terms. A permissive license will tend to allow generous reuse with +relatively few and non-onerous obligations, such as simple attribution +requirements. In contrast, copyleft licenses impose the obligation to share your +changes and derived works under the same license terms. + +<img src="/images/licensing-spectrum.svg" alt="various projects and licenses organized along a spectrum" /> +<small> + Various software licenses and projects which use them, organized on the + copyleft spectrum. Based on graphic by David A Wheeler, CC-BY-SA 3.0. +</small> + +## Why choose a copyleft license? + +It is common for permissively-licensed free software to be incorporated into +non-free works. This work is often leveraged for profit, denying the four +freedoms to users who receive the non-free work, and making profitable use of +the software without giving anything back to the free software community. + +Copyleft licenses answer some of these problems: + +1. Copyleft promotes the proliferation of free software and the four freedoms by + ensuring that work built on top of free software grows and benefits the free + software ecosystem. +2. Copyleft ensures that those who improve free software share their changes + with the community, so that all users can benefit from their improvements. + +Copyleft software can be sold, like all other free software, but requiring that +commercial improvements remain free ensures the four freedoms are upheld by all +participants. Furthermore, it is difficult to change the license of copyleft +software if the copyright is held [in aggregate][0], which serves as a +strong promise for the future of the software as free software. + +[0]: /learn/participate/copyright-ownership/ + +## Weak and strong copyleft + +Copyleft licenses differ in how strongly their copyleft clauses affect re-use of +the software. For example, the weak copyleft [Mozilla Public License][MPL] is +*file-based*, such that the copyleft clause covers individual source code files, +and not the project as a whole: you can drop one of these files into any project +without having to relicense the larger project, so long as you re-publish any +changes to those specific files. + +[MPL]: https://www.mozilla.org/en-US/MPL/2.0/ + +A somewhat stronger example is the [GNU Lesser General Public License][LGPL], +which deals specifically with software libraries. These libraries are compiled +into an aggregate software artifact, such as a shared object or static archive, +and the copyleft terms applies to this entire artifact. However, when this is +linked with a third-party program, the copyleft clause is not invoked. Stronger +still is the [GNU General Public License][GPL], which treats the completed +program as the software artifact to which the copyleft clause applies. + +[LGPL]: https://www.gnu.org/licenses/lgpl-3.0.en.html +[GPL]: https://www.gnu.org/licenses/gpl-3.0.html + +On the far end of the copyleft spectrum are licenses like the [GNU Affero +General Public License][AGPL], which extends the <abbr title="GNU General Public +License">GPL</abbr> to apply to software used over a network, such as databases, +and considers users of that software "recipients" of the software, who are thus +entitled to receive the source code. + +[AGPL]: https://www.gnu.org/licenses/agpl-3.0.html + +## How to re-use copyleft works + +The simplest way to re-use copyleft works is to apply its license to your own +work and distribute it accordingly. + +If you do not want to do this, you can only use a copyleft work under the +conditions permitted by its license, and will likely be limited to the use of +weak copyleft works. For example, if your software depends on a library which +uses the <abbr title="GNU Lesser General Public License">LGPL</abbr>, you may +use any license for your own work but need to share changes you make to the +library itself. If the software uses the GPL or AGPL, you will be more +constrained in your approach. Read the license terms carefully and consult a +lawyer if you are unsure how to proceed. + +{{< tip >}} +The [Software Freedom Conservancy][sfc] is an organization which, among other +activities, pursues legal remedies for copyleft enforcement. To learn more about +copyleft enforcement for your own projects, consult their resources. + +[sfc]: https://sfconservancy.org/ +{{< /tip >}} diff --git a/static/images/licensing-spectrum.svg b/static/images/licensing-spectrum.svg new file mode 100644 index 0000000..f862080 --- /dev/null +++ b/static/images/licensing-spectrum.svg @@ -0,0 +1,659 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + version="1.1" + id="svg148" + width="1100" + height="430" + viewBox="0 0 1100 430" + sodipodi:docname="Software_licensing_spectrum.svg" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <sodipodi:namedview + id="namedview125" + pagecolor="#505050" + bordercolor="#ffffff" + borderopacity="1" + inkscape:showpageshadow="0" + inkscape:pageopacity="0" + inkscape:pagecheckerboard="1" + inkscape:deskcolor="#505050" + showgrid="false" + inkscape:zoom="1.2027273" + inkscape:cx="554.15722" + inkscape:cy="234.88284" + inkscape:window-width="1920" + inkscape:window-height="1057" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg148" /> + <title + id="title12389">Software_licensing_spectrum</title> + <defs + id="defs152"> + <marker + style="overflow:visible" + id="marker1554" + refX="2" + refY="0" + orient="auto-start-reverse" + markerWidth="10" + markerHeight="10" + preserveAspectRatio="xMidYMid"> + <path + style="fill:#155a98;fill-rule:evenodd;stroke:#155a98;stroke-width:1pt" + d="M 5,0 -5,5 V -5 Z" + id="path1552" /> + </marker> + </defs> + <rect + style="fill:#ffffff" + id="rect433" + width="1100" + height="430" + x="0" + y="0" /> + <text + xml:space="default" + style="fill:#000000" + x="110" + y="25" + id="text323" + font-weight="bold" + text-anchor="middle"><tspan + id="tspan321">PERMISSIVE</tspan></text> + <text + xml:space="default" + style="fill:#000000" + x="330" + y="20" + id="text438" + font-weight="bold" + text-anchor="middle"><tspan + id="tspan436" + x="330">WEAK COPYLEFT</tspan><tspan + id="tspan1841" + x="330" + dy="1.2em">(FILE-BASED)</tspan></text> + <text + xml:space="default" + style="fill:#000000" + x="550" + y="20" + id="text1643" + font-weight="bold" + text-anchor="middle"><tspan + id="tspan1641" + x="550">WEAK COPYLEFT</tspan><tspan + id="tspan1843" + x="550" + dy="1.2em">(LIBRARY-BASED)</tspan></text> + <text + xml:space="default" + style="fill:#000000" + x="770" + y="25" + id="text488" + font-weight="bold" + text-anchor="middle"><tspan + id="tspan486">STRONG COPYLEFT</tspan></text> + <text + xml:space="default" + style="fill:#000000" + x="990" + y="25" + id="text492" + font-weight="bold" + text-anchor="middle"><tspan + id="tspan490">NETWORK PROTECTION</tspan></text> + <rect + style="fill:#155a98" + id="rect205" + width="200" + height="80" + x="10" + y="40" + rx="10" /> + <rect + style="fill:#6f8fbf" + id="rect175" + width="196" + height="37" + x="12" + y="42" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="110" + y="65" + id="text544" + text-anchor="middle"><tspan + id="tspan542">PUBLIC DOMAIN</tspan></text> + <rect + style="fill:#92a8cf" + id="rect179" + width="196" + height="37" + x="12" + y="81" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="110" + y="105" + id="text581" + text-anchor="middle"><tspan + id="tspan579">SQLite</tspan></text> + <rect + style="fill:#155a98" + id="rect208" + width="200" + height="80" + x="10" + y="140" + rx="10" /> + <rect + style="fill:#6f8fbf" + id="rect178" + width="196" + height="37" + x="12" + y="142" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="110" + y="165" + id="text637" + text-anchor="middle"><tspan + id="tspan635">MIT</tspan></text> + <rect + style="fill:#92a8cf" + id="rect180" + width="196" + height="37" + x="12" + y="181" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="110" + y="196" + id="text641" + text-anchor="middle"><tspan + id="tspan639" + x="110">Node.js, Wayland, X11, </tspan><tspan + id="tspan643" + dy="1.2em" + x="110">Ruby on Rails</tspan></text> + <rect + style="fill:#155a98" + id="rect210" + width="200" + height="80" + x="10" + y="240" + rx="10" /> + <rect + style="fill:#6f8fbf" + id="rect182" + width="196" + height="37" + x="12" + y="242" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="110" + y="265" + id="text649" + text-anchor="middle"><tspan + id="tspan645">BSD-3-Clause</tspan></text> + <rect + style="fill:#92a8cf" + id="rect184" + width="196" + height="37" + x="12" + y="281" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="110" + y="305" + id="text653" + text-anchor="middle"><tspan + id="tspan651">libssh2</tspan></text> + <rect + style="fill:#155a98" + id="rect212" + width="200" + height="80" + x="10" + y="340" + rx="10" /> + <rect + style="fill:#6f8fbf" + id="rect186" + width="196" + height="37" + x="12" + y="342" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="110" + y="365" + id="text718" + text-anchor="middle"><tspan + id="tspan716">Apache-2.0</tspan></text> + <rect + style="fill:#92a8cf" + id="rect188" + width="196" + height="37" + x="12" + y="381" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="110" + y="396" + id="text722" + text-anchor="middle"><tspan + id="tspan720" + x="110">Apache HTTP Server, </tspan><tspan + id="tspan724" + dy="1.2em" + x="110">OpenOffice, Android</tspan></text> + <rect + style="fill:#155a98" + id="rect220" + width="200" + height="80" + x="230" + y="240" + rx="10" /> + <rect + style="fill:#6f8fbf" + id="rect202" + width="196" + height="37" + x="232" + y="242" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="330" + y="265" + id="text1043" + text-anchor="middle"><tspan + id="tspan1041">MPL-2.0</tspan></text> + <rect + style="fill:#92a8cf" + id="rect204" + width="196" + height="37" + x="232" + y="281" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="330" + y="296" + id="text1047" + text-anchor="middle"><tspan + id="tspan1045" + x="330">Firefox, Thunderbird, </tspan><tspan + id="tspan607" + x="330" + dy="1.2em">LibreOffice</tspan></text> + <rect + style="fill:#155a98" + id="rect10501" + width="200" + height="80" + x="230" + y="340" + rx="10" /> + <rect + style="fill:#6f8fbf" + id="rect11229" + width="196" + height="37" + x="232" + y="342" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="330" + y="365" + id="text14137" + text-anchor="middle"><tspan + id="tspan14135">CDDL-1.0</tspan></text> + <rect + style="fill:#92a8cf" + id="rect14469" + width="196" + height="37" + x="232" + y="381" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="330" + y="405" + id="text14803" + text-anchor="middle"><tspan + id="tspan14801">illumos, OpenZFS</tspan></text> + <rect + style="fill:#155a98" + id="rect214" + width="200" + height="80" + x="450" + y="90" + rx="10" /> + <rect + style="fill:#6f8fbf" + id="rect190" + width="196" + height="37" + x="452" + y="92" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="550" + y="115" + id="text794" + text-anchor="middle"><tspan + id="tspan792">LGPL-2.1-only</tspan></text> + <rect + style="fill:#92a8cf" + id="rect192" + width="196" + height="37" + x="452" + y="131" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="550" + y="155" + id="text798" + text-anchor="middle"><tspan + id="tspan796" /></text> + <rect + style="fill:#155a98" + id="rect216" + width="200" + height="80" + x="450" + y="190" + rx="10" /> + <rect + style="fill:#6f8fbf" + id="rect194" + width="196" + height="37" + x="452" + y="192" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="550" + y="215" + id="text872" + text-anchor="middle"><tspan + id="tspan870">LGPL-2.1-or-later</tspan></text> + <rect + style="fill:#92a8cf" + id="rect196" + width="196" + height="37" + x="452" + y="231" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="550" + y="255" + id="text876" + text-anchor="middle"><tspan + id="tspan874">FFmpge, Shotwell, VLC</tspan></text> + <rect + style="fill:#155a98" + id="rect218" + width="200" + height="80" + x="450" + y="290" + rx="10" /> + <rect + style="fill:#6f8fbf" + id="rect198" + width="196" + height="37" + x="452" + y="292" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="550" + y="306" + id="text954" + text-anchor="middle"><tspan + id="tspan952" + x="550">LGPL-3.0-only or </tspan><tspan + id="tspan761" + x="550" + dy="1.2em">LGPL-3.0-or-later</tspan></text> + <rect + style="fill:#92a8cf" + id="rect200" + width="196" + height="37" + x="452" + y="331" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="550" + y="355" + id="text958" + text-anchor="middle"><tspan + id="tspan956">Adwaita Icon Theme, Qt</tspan></text> + <rect + style="fill:#155a98" + id="rect222" + width="200" + height="80" + x="670" + y="190" + rx="10" /> + <rect + style="fill:#6f8fbf" + id="rect206" + width="196" + height="37" + x="672" + y="192" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="770" + y="215" + id="text1137" + text-anchor="middle"><tspan + id="tspan1135">GPL-2.0-only</tspan></text> + <rect + style="fill:#92a8cf" + id="rect209" + width="196" + height="37" + x="672" + y="231" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="770" + y="255" + id="text1141" + text-anchor="middle"><tspan + id="tspan1139">Linux kernel</tspan></text> + <rect + style="fill:#155a98" + id="rect224" + width="200" + height="80" + x="670" + y="290" + rx="10" /> + <rect + style="fill:#6f8fbf" + id="rect211" + width="196" + height="37" + x="672" + y="292" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="770" + y="306" + id="text1145" + text-anchor="middle"><tspan + id="tspan1143" + x="770">GPL-3.0-only or </tspan><tspan + id="tspan763" + x="770" + dy="1.2em">GPL-3.0-or-later</tspan></text> + <rect + style="fill:#92a8cf" + id="rect213" + width="196" + height="37" + x="672" + y="331" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="770" + y="355" + id="text1149" + text-anchor="middle"><tspan + id="tspan1147">GCC</tspan></text> + <rect + style="fill:#155a98" + id="rect226" + width="200" + height="80" + x="890" + y="290" + rx="10" /> + <rect + style="fill:#6f8fbf" + id="rect215" + width="196" + height="37" + x="892" + y="292" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="990" + y="315" + id="text1153" + text-anchor="middle"><tspan + id="tspan1151">AGPL-3.0</tspan></text> + <rect + style="fill:#92a8cf" + id="rect217" + width="196" + height="37" + x="892" + y="331" + rx="8" /> + <text + xml:space="default" + style="fill:#000000" + x="990" + y="355" + id="text1157" + text-anchor="middle"><tspan + id="tspan1155">Launchpad, Diapora</tspan></text> + <metadata + id="metadata8760"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <cc:license + rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /> + <dc:title>Software_licensing_spectrum</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>David A. Wheeler, LinuxVoice.com</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>Wikimedia Commons</dc:title> + </cc:Agent> + </dc:publisher> + <dc:contributor> + <cc:Agent> + <dc:title>et al.</dc:title> + </cc:Agent> + </dc:contributor> + <dc:source>https://commons.wikimedia.org/wiki/File:Software_licensing_spectrum.svg</dc:source> + </cc:Work> + <cc:License + rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Reproduction" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Distribution" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Notice" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Attribution" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#ShareAlike" /> + </cc:License> + </rdf:RDF> + </metadata> +</svg> |
