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&#45;off&#45;by?</text>
+</g>
+<!-- start&#45;&gt;signoff -->
+<g id="edge1" class="edge">
+<title>start&#45;&gt;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&#45;&gt;size -->
+<g id="edge3" class="edge">
+<title>signoff&#45;&gt;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"> &#160;No &#160;</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&#45;&gt;accept4 -->
+<g id="edge2" class="edge">
+<title>signoff:s&#45;&gt;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"> &#160;Yes &#160;</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&#45;&gt;license -->
+<g id="edge5" class="edge">
+<title>size&#45;&gt;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"> &#160;No &#160;</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&#45;&gt;accept2 -->
+<g id="edge4" class="edge">
+<title>size:s&#45;&gt;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"> &#160;Yes &#160;</text>
+</g>
+<!-- license&#45;&gt;accept2 -->
+<g id="edge6" class="edge">
+<title>license:s&#45;&gt;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"> &#160;Yes &#160;</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&#45;&gt;reject -->
+<g id="edge7" class="edge">
+<title>license&#45;&gt;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"> &#160;No &#160;</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>
 

Reply via email to