aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2023-05-16 14:25:46 +0200
committerDrew DeVault <sir@cmpwn.com>2023-05-16 14:29:14 +0200
commit15ca014bec3f51cb0dcf4d07df044fabe6df0764 (patch)
treed80119b9a42190c8fd0095b2b8cccbd88f5599ae
parente7174367fc4d8dc3760b7a012fe15320b43fa9a4 (diff)
downloadwritefreesoftware.org-15ca014bec3f51cb0dcf4d07df044fabe6df0764.tar.xz
Copyleft
-rw-r--r--content/learn/copyleft.md106
-rw-r--r--static/images/licensing-spectrum.svg659
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&nbsp;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>