commit: bbba1f2dc618c7d937a62474c755e1cd834d4808
Author: Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Oct 21 12:03:53 2023 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Oct 22 11:35:52 2023 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=bbba1f2d
general-concepts/copyright-policy: Reformat the General guideline section
Use nested ordered lists instead of one description list. Hopefully,
this will make the logic better understandable.
Add a diagram with a flowchart. Also commit the SVG output, so we
don't need Graphviz as build dependency for a single file that isn't
expected to change very often.
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
Makefile | 3 +
general-concepts/copyright-policy/diagram.dot | 43 ++++++++++
general-concepts/copyright-policy/diagram.svg | 107 ++++++++++++++++++++++++
general-concepts/copyright-policy/text.xml | 113 ++++++++++++++++----------
4 files changed, 224 insertions(+), 42 deletions(-)
diff --git a/Makefile b/Makefile
index 054b720..89874ae 100644
--- a/Makefile
+++ b/Makefile
@@ -43,6 +43,9 @@ build: $(HTMLS) $(IMAGES)
documents.js: bin/build_search_documents.py $(XMLS)
@python3 bin/build_search_documents.py $(XMLS) > $@ && echo "$@ built"
+%.svg : %.dot
+ dot -T svg -o $@ $<
+
%.png : %.svg
rsvg-convert --output=$@ $<
diff --git a/general-concepts/copyright-policy/diagram.dot
b/general-concepts/copyright-policy/diagram.dot
new file mode 100644
index 0000000..5b29ab7
--- /dev/null
+++ b/general-concepts/copyright-policy/diagram.dot
@@ -0,0 +1,43 @@
+// Copyright 2023 Gentoo Authors
+// Distributed under the terms of the CC-BY-SA-4.0 license
+
+digraph g {
+ size = "8!,2";
+ node [ penwidth = 2; fontname = "Open Sans" ];
+ edge [ penwidth = 2; fontname = "Open Sans" ];
+
+ start [ width = 1.4; height = 0.9; label = "Start" ];
+
+ signoff [ shape = diamond; width = 2.4; height = 1.3;
+ style = filled; fillcolor = "cyan";
+ label = "Signed-off-by?" ];
+ size [ shape = diamond; width = 2.4; height = 1.3;
+ style = filled; fillcolor = "cyan";
+ label = "Tiny\ncontribution?" ];
+ license [ shape = diamond; width = 2.4; height = 1.3;
+ style = filled; fillcolor = "cyan";
+ label = "Contains\nlicense notice?" ];
+
+ accept4 [ shape = rect; width = 1.6; height = 0.8;
+ style = filled; fillcolor = "lime";
+ label = "Accept\n(GCO point 4)" ];
+ accept2 [ shape = rect; width = 1.6; height = 0.8;
+ style = filled; fillcolor = "lime";
+ label = "Accept\n(GCO point 2)" ];
+ reject [ shape = rect; width = 1.6; height = 0.7;
+ style = filled; fillcolor = "red";
+ label = "Do not accept" ];
+
+ start -> signoff;
+
+ signoff:s -> accept4 [ label = " Yes " ];
+ signoff -> size [ label = " No " ];
+
+ size:s -> accept2 [ label = " Yes " ];
+ size -> license [ label = " No " ];
+
+ license:s -> accept2 [ label = " Yes " ];
+ license -> reject [ label = " No " ];
+
+ { rank = same; start; signoff; size; license; reject; }
+}
diff --git a/general-concepts/copyright-policy/diagram.svg
b/general-concepts/copyright-policy/diagram.svg
new file mode 100644
index 0000000..3affb30
--- /dev/null
+++ b/general-concepts/copyright-policy/diagram.svg
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 9.0.0 (20230911.1827)
+ -->
+<!-- Title: g Pages: 1 -->
+<svg width="576pt" height="132pt"
+ viewBox="0.00 0.00 576.00 131.70" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(0.613419 0.613419) rotate(0)
translate(4 210.7)">
+<title>g</title>
+<polygon fill="white" stroke="none" points="-4,4 -4,-210.7 935,-210.7 935,4
-4,4"/>
+<!-- start -->
+<g id="node1" class="node">
+<title>start</title>
+<ellipse fill="none" stroke="black" stroke-width="2" cx="50.4" cy="-159.9"
rx="50.4" ry="32.4"/>
+<text text-anchor="middle" x="50.4" y="-156.35" font-family="Open Sans"
font-size="14.00">Start</text>
+</g>
+<!-- signoff -->
+<g id="node2" class="node">
+<title>signoff</title>
+<polygon fill="cyan" stroke="black" stroke-width="2" points="222.4,-206.7
136,-159.9 222.4,-113.1 308.8,-159.9 222.4,-206.7"/>
+<text text-anchor="middle" x="222.4" y="-156.35" font-family="Open Sans"
font-size="14.00">Signed-off-by?</text>
+</g>
+<!-- start->signoff -->
+<g id="edge1" class="edge">
+<title>start->signoff</title>
+<path fill="none" stroke="black" stroke-width="2"
d="M101.8,-159.9C108.32,-159.9 114.83,-159.9 121.35,-159.9"/>
+<polygon fill="black" stroke="black" stroke-width="2" points="121.28,-163.4
131.28,-159.9 121.28,-156.4 121.28,-163.4"/>
+</g>
+<!-- size -->
+<g id="node3" class="node">
+<title>size</title>
+<polygon fill="cyan" stroke="black" stroke-width="2" points="446.4,-206.7
360,-159.9 446.4,-113.1 532.8,-159.9 446.4,-206.7"/>
+<text text-anchor="middle" x="446.4" y="-166.1" font-family="Open Sans"
font-size="14.00">Tiny</text>
+<text text-anchor="middle" x="446.4" y="-146.6" font-family="Open Sans"
font-size="14.00">contribution?</text>
+</g>
+<!-- signoff->size -->
+<g id="edge3" class="edge">
+<title>signoff->size</title>
+<path fill="none" stroke="black" stroke-width="2"
d="M310.61,-159.9C321.91,-159.9 333.54,-159.9 345.03,-159.9"/>
+<polygon fill="black" stroke="black" stroke-width="2" points="344.88,-163.4
354.88,-159.9 344.88,-156.4 344.88,-163.4"/>
+<text text-anchor="middle" x="334.4" y="-169.1" font-family="Open Sans"
font-size="14.00">  No  </text>
+</g>
+<!-- accept4 -->
+<g id="node5" class="node">
+<title>accept4</title>
+<polygon fill="lime" stroke="black" stroke-width="2" points="280,-57.6
164.8,-57.6 164.8,0 280,0 280,-57.6"/>
+<text text-anchor="middle" x="222.4" y="-35" font-family="Open Sans"
font-size="14.00">Accept</text>
+<text text-anchor="middle" x="222.4" y="-15.5" font-family="Open Sans"
font-size="14.00">(GCO point 4)</text>
+</g>
+<!-- signoff->accept4 -->
+<g id="edge2" class="edge">
+<title>signoff:s->accept4</title>
+<path fill="none" stroke="black" stroke-width="2"
d="M222.4,-113.1C222.4,-99.43 222.4,-84.51 222.4,-71.11"/>
+<polygon fill="black" stroke="black" stroke-width="2" points="225.9,-71.36
222.4,-61.36 218.9,-71.36 225.9,-71.36"/>
+<text text-anchor="middle" x="240.77" y="-81.8" font-family="Open Sans"
font-size="14.00">  Yes  </text>
+</g>
+<!-- license -->
+<g id="node4" class="node">
+<title>license</title>
+<polygon fill="cyan" stroke="black" stroke-width="2" points="674.4,-206.7
584.66,-159.9 674.4,-113.1 764.14,-159.9 674.4,-206.7"/>
+<text text-anchor="middle" x="674.4" y="-166.1" font-family="Open Sans"
font-size="14.00">Contains</text>
+<text text-anchor="middle" x="674.4" y="-146.6" font-family="Open Sans"
font-size="14.00">license notice?</text>
+</g>
+<!-- size->license -->
+<g id="edge5" class="edge">
+<title>size->license</title>
+<path fill="none" stroke="black" stroke-width="2"
d="M534.88,-159.9C546.25,-159.9 557.97,-159.9 569.57,-159.9"/>
+<polygon fill="black" stroke="black" stroke-width="2" points="569.56,-163.4
579.56,-159.9 569.56,-156.4 569.56,-163.4"/>
+<text text-anchor="middle" x="558.73" y="-169.1" font-family="Open Sans"
font-size="14.00">  No  </text>
+</g>
+<!-- accept2 -->
+<g id="node6" class="node">
+<title>accept2</title>
+<polygon fill="lime" stroke="black" stroke-width="2" points="618,-57.6
502.8,-57.6 502.8,0 618,0 618,-57.6"/>
+<text text-anchor="middle" x="560.4" y="-35" font-family="Open Sans"
font-size="14.00">Accept</text>
+<text text-anchor="middle" x="560.4" y="-15.5" font-family="Open Sans"
font-size="14.00">(GCO point 2)</text>
+</g>
+<!-- size->accept2 -->
+<g id="edge4" class="edge">
+<title>size:s->accept2</title>
+<path fill="none" stroke="black" stroke-width="2"
d="M446.4,-113.1C446.4,-86.44 466.98,-67.39 490.65,-54.31"/>
+<polygon fill="black" stroke="black" stroke-width="2" points="492.02,-57.54
499.36,-49.9 488.86,-51.29 492.02,-57.54"/>
+<text text-anchor="middle" x="479.77" y="-81.8" font-family="Open Sans"
font-size="14.00">  Yes  </text>
+</g>
+<!-- license->accept2 -->
+<g id="edge6" class="edge">
+<title>license:s->accept2</title>
+<path fill="none" stroke="black" stroke-width="2"
d="M674.4,-113.1C674.4,-86.44 653.82,-67.39 630.15,-54.31"/>
+<polygon fill="black" stroke="black" stroke-width="2" points="631.94,-51.29
621.44,-49.9 628.78,-57.54 631.94,-51.29"/>
+<text text-anchor="middle" x="687.77" y="-81.8" font-family="Open Sans"
font-size="14.00">  Yes  </text>
+</g>
+<!-- reject -->
+<g id="node7" class="node">
+<title>reject</title>
+<polygon fill="red" stroke="black" stroke-width="2" points="931,-185.1
815.8,-185.1 815.8,-134.7 931,-134.7 931,-185.1"/>
+<text text-anchor="middle" x="873.4" y="-156.35" font-family="Open Sans"
font-size="14.00">Do not accept</text>
+</g>
+<!-- license->reject -->
+<g id="edge7" class="edge">
+<title>license->reject</title>
+<path fill="none" stroke="black" stroke-width="2"
d="M766.04,-159.9C778.12,-159.9 790.35,-159.9 802.03,-159.9"/>
+<polygon fill="black" stroke="black" stroke-width="2" points="801.9,-163.4
811.9,-159.9 801.9,-156.4 801.9,-163.4"/>
+<text text-anchor="middle" x="789.97" y="-169.1" font-family="Open Sans"
font-size="14.00">  No  </text>
+</g>
+</g>
+</svg>
diff --git a/general-concepts/copyright-policy/text.xml
b/general-concepts/copyright-policy/text.xml
index 7b877f8..c8d6865 100644
--- a/general-concepts/copyright-policy/text.xml
+++ b/general-concepts/copyright-policy/text.xml
@@ -62,54 +62,83 @@ author is, or is not required. The list below serves as a
general guideline.
</body>
<subsection>
-<title>Examples for general guideline</title>
+<title>General guideline</title>
<body>
-<dl>
- <dt>A contribution with a Signed-off-by line by its author</dt>
- <dd>
- Can be accepted, because the author confirmed that it is under a free
- software license. The committer adds another S-o-b line and certifies the
- commit under point 4 of the
+<figure link="diagram.png" short="When can a contribution be accepted?"
+ caption="Flowchart showing the steps for accepting a contribution" />
+
+<p>
+When can a contribution be accepted?
+</p>
+
+<ol type="1">
+ <li>
+ <p>
+ When signed off by its author (i.e. with a <c>Signed-off-by</c> line):
+ </p>
+ <p>
+ Can be accepted, because the author has confirmed that it is under a free
+ software license. The committer adds another <c>Signed-off-by</c> line and
+ certifies the commit under point 4 of the
<uri
link="https://www.gentoo.org/glep/glep-0076.html#certificate-of-origin">
Certificate of Origin</uri>.
+ </p>
<note>
- Use common sense here, especially if you don't know the contributor. If the
- contribution was taken from somewhere else and the contributor doesn't have
- the right to distribute it under a free software license, you as the
- committer might get into trouble. So in this situation, do your best to
- check repositories for matching code, and whether they hold any special
- copyright claims.
+ Use common sense here, especially if you don't know the contributor.
+ If the contribution was taken from somewhere else and the contributor
+ doesn't have the right to distribute it under a free software license,
+ you as the committer might get into trouble. So in this situation, do your
+ best to check repositories for matching code, and whether they hold any
+ special copyright claims.
</note>
- </dd>
- <dt>
- A contribution without a S-o-b line and of significant size, but with an
- independent indication of its license (e.g. copyright and license notices
- in the file's header)
- </dt>
- <dd>
- Can be accepted. The committer adds a S-o-b line and certifies the commit
- under point 2 of the Certificate of Origin.
- </dd>
- <dt>
- A contribution without a S-o-b line but not
- <uri
link="https://www.gnu.org/prep/maintain/html_node/Legally-Significant.html">
- "legally significant"</uri> (by the FSF's 15-lines rule of thumb)
- </dt>
- <dd>
- Can be accepted. The committer adds a S-o-b line and certifies the commit
- under point 2 of the Certificate of Origin.
- </dd>
- <dt>
- A contribution without a S-o-b line and of significant size, without any
- other indication of its license
- </dt>
- <dd>
- Can <e>not</e> be accepted. There's no indication that the author has
- released their work under a free license, therefore it must not be
- distributed by Gentoo.
- </dd>
-</dl>
+ </li>
+ <li>
+ <p>
+ When <e>not</e> signed off:
+ </p>
+ <ol type="a">
+ <li>
+ <p>
+ If the contribution is not of
+ <uri
link="https://www.gnu.org/prep/maintain/html_node/Legally-Significant.html">
+ "legally significant"</uri> size (by the FSF's 15-lines rule of thumb):
+ </p>
+ <p>
+ Can be accepted. The committer adds a <c>Signed-off-by</c> line and
+ certifies the commit under point 2 of the Certificate of Origin.
+ </p>
+ </li>
+ <li>
+ <p>
+ If the contribution is of significant size, and
+ </p>
+ <ol type="i">
+ <li>
+ <p>
+ with an independent indication of its license (e.g. copyright and
+ license notices in the file's header):
+ </p>
+ <p>
+ Can be accepted. The committer adds a <c>Signed-off-by</c> line and
+ certifies the commit under point 2 of the Certificate of Origin.
+ </p>
+ </li>
+ <li>
+ <p>
+ <e>without</e> any other indication of its license:
+ </p>
+ <p>
+ Can <e>not</e> be accepted. There's no indication that the author
+ has released their work under a free license, therefore it must not
+ be distributed by Gentoo.
+ </p>
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+</ol>
</body>
</subsection>