[VOL-5329] - Update copyright docs to mention SPDX

overview/contributing/copyright.rst
overview/contributing/copyright/Makefile.rst
overview/contributing/copyright/copyright.rst
overview/contributing/copyright/golang.rst
overview/contributing/copyright/json.rst
overview/contributing/copyright/markdown.rst
---------------------------------------------
  o Add examples of copyright notice in source.
  o json syntax most difficult to add.
  o Document SPDX tokens.
  o Creat a containing folder copyright/ so documentation setup can be modular.

conf.py
release_notes/voltha_2.12.rst
-----------------------------
  o Sphinx replace:: feature stopped working, linkcheck reports broken urls.
  o Move mvn-* and jira string templates into conf.py as ext links.
  o Replace |token| with :token:.
  o Also shorten several verbatim URLs with :vol-{ger,git}: extlinks.

Change-Id: I0f9ec3f4354044968805da1872fc9f6bd864996f
Signed-off-by: Joey Armstrong <jarmstrong@linuxfoundation.org>
diff --git a/conf.py b/conf.py
index 3f9d075..2c1c986 100644
--- a/conf.py
+++ b/conf.py
@@ -1,4 +1,24 @@
 # -*- coding: utf-8 -*-
+# -----------------------------------------------------------------------
+# Copyright 2019-2024 Open Networking Foundation Contributors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http:#www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -----------------------------------------------------------------------
+# SPDX-FileCopyrightText: 2019-2024 Open Networking Foundation Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+# Intent:
+# -----------------------------------------------------------------------
 
 # Configuration file for the Sphinx documentation builder.
 #
@@ -21,14 +41,13 @@
 
 # --------------------------------------------------------------
 # Large exclusion list(s) extracted from conf.py => .sphinx/*.py
-if True: # Set searchpath early
-    abs_path = Path('.').resolve().as_posix()
+if True:  # Set searchpath early
+    abs_path = Path(".").resolve().as_posix()
     sys.path.insert(0, abs_path)
 
-# from sphinx_conf import *
+# -- Options for linkcheck ----------------------------------------------
 from sphinx_conf.exclude_patterns import exclude_patterns
 from sphinx_conf.linkcheck_ignore import linkcheck_ignore
-# --------------------------------------------------------------
 
 # -----------------------------------------------------------------------
 # -----------------------------------------------------------------------
@@ -36,11 +55,14 @@
     with open("VERSION") as f:
         return f.read().strip()
 
+
 # -- Project information -----------------------------------------------------
 
-project = u'VOLTHA Docs'
-copyright = u'Copyright 2019-2023 Open Networking Foundation (ONF) and the ONF Contributors'
-author = u'VOLTHA Contributors'
+project = "VOLTHA Docs"
+copyright = (
+    "Copyright 2019-2024 Open Networking Foundation Contributors"
+)
+author = "VOLTHA Contributors"
 
 # The short X.Y version
 version = get_version()
@@ -60,15 +82,15 @@
 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
 # ones.
 extensions = [
-    'recommonmark',
-    'sphinx.ext.coverage',
-    'sphinx.ext.extlinks',
-    'sphinx.ext.graphviz',
-    'sphinx.ext.ifconfig',
-#    'sphinx.ext.intersphinx',    # :doc:`my document <../my_doc{.rst}>`
-    'sphinx.ext.mathjax',
-    'sphinx.ext.todo',
-    'sphinxcontrib.spelling',
+    "recommonmark",
+    "sphinx.ext.coverage",
+    "sphinx.ext.extlinks",
+    "sphinx.ext.graphviz",
+    "sphinx.ext.ifconfig",
+    #    'sphinx.ext.intersphinx',    # :doc:`my document <../my_doc{.rst}>`
+    "sphinx.ext.mathjax",
+    "sphinx.ext.todo",
+    "sphinxcontrib.spelling",
     "sphinx_multiversion",
     "sphinx.ext.intersphinx",
     "sphinxcontrib.openapi",
@@ -87,36 +109,38 @@
 #   ]
 
 # Text files with lists of words that shouldn't fail the spellchecker:
-spelling_word_list_filename=['dict.txt', ]
+spelling_word_list_filename = [
+    "dict.txt",
+]
 
-#sphinx-multiversion prep, run in each versioned source directory
+# sphinx-multiversion prep, run in each versioned source directory
 prep_commands = [
-    'ln -sf _root_/repos _target_/repos',
-    'make prep',
+    "ln -sf _root_/repos _target_/repos",
+    "make prep",
 ]
 
 # don't include tags
 # smv_tag_whitelist = None
 # smv_tag_whitelist = disabled^ # Was = None
-smv_tag_whitelist = 'disabled_a^' # Was = None
+smv_tag_whitelist = "disabled_a^"  # Was = None
 
 # inlcude only the branches matching master and voltha-*
-smv_branch_whitelist = r'^(master|voltha-.*)$'
+smv_branch_whitelist = r"^(master|voltha-.*)$"
 
 # include all remote branches
-smv_remote_whitelist = r'^.*$'
+smv_remote_whitelist = r"^.*$"
 
 # Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
+templates_path = ["_templates"]
 
 # The suffix(es) of source filenames.
 # You can specify multiple suffix as a list of string:
 #
 # source_suffix = ['.rst', '.md']
-source_suffix = ['.rst', '.md']
+source_suffix = [".rst", ".md"]
 
 # The master toctree document.
-master_doc = 'index'
+master_doc = "index"
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
@@ -133,24 +157,22 @@
 # The theme to use for HTML and HTML Help pages.  See the documentation for
 # a list of builtin themes.
 #
-html_theme = 'sphinx_rtd_theme'
+html_theme = "sphinx_rtd_theme"
 
-html_logo = '_static/voltha.svg'
+html_logo = "_static/voltha.svg"
 
-html_favicon = '_static/voltha-favicon-128.png'
+html_favicon = "_static/voltha-favicon-128.png"
 
 # Theme options are theme-specific and customize the look and feel of a theme
 # further.  For a list of options available for each theme, see the
 # documentation.
 #
-html_theme_options = {
-    'logo_only': True
-}
+html_theme_options = {"logo_only": True}
 
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
 # so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
+html_static_path = ["_static"]
 
 # Custom sidebar templates, must be a dictionary that maps document names
 # to template names.
@@ -163,11 +185,10 @@
 # html_sidebars = {}
 
 
-
 # -- Options for HTMLHelp output ---------------------------------------------
 
 # Output file base name for HTML help builder.
-htmlhelp_basename = 'VOLTHADocs'
+htmlhelp_basename = "VOLTHADocs"
 
 
 # -- Options for LaTeX output ------------------------------------------------
@@ -176,15 +197,12 @@
     # The paper size ('letterpaper' or 'a4paper').
     #
     # 'papersize': 'letterpaper',
-
     # The font size ('10pt', '11pt' or '12pt').
     #
     # 'pointsize': '10pt',
-
     # Additional stuff for the LaTeX preamble.
     #
     # 'preamble': '',
-
     # Latex figure (float) alignment
     #
     # 'figure_align': 'htbp',
@@ -194,8 +212,7 @@
 # (source start file, target name, title,
 #  author, documentclass [howto, manual, or own class]).
 latex_documents = [
-    (master_doc, 'VOLTHADocs.tex', u'VOLTHA Docs',
-     u'VOLTHA Team', 'manual'),
+    (master_doc, "VOLTHADocs.tex", "VOLTHA Docs", "VOLTHA Team", "manual"),
 ]
 
 
@@ -203,10 +220,7 @@
 
 # One entry per manual page. List of tuples
 # (source start file, name, description, authors, manual section).
-man_pages = [
-    (master_doc, 'VOLTHA Docs', u'VOLTHA Docs',
-     [author], 1)
-]
+man_pages = [(master_doc, "VOLTHA Docs", "VOLTHA Docs", [author], 1)]
 
 
 # -- Options for Texinfo output ----------------------------------------------
@@ -215,9 +229,15 @@
 # (source start file, target name, title, author,
 #  dir menu entry, description, category)
 texinfo_documents = [
-    (master_doc, 'VOLTHA Docs', u'VOLTHA Docs',
-     author, 'VOLTHADocs', 'One line description of project.',
-     'Miscellaneous'),
+    (
+        master_doc,
+        "VOLTHA Docs",
+        "VOLTHA Docs",
+        author,
+        "VOLTHADocs",
+        "One line description of project.",
+        "Miscellaneous",
+    ),
 ]
 
 
@@ -236,7 +256,7 @@
 # epub_uid = ''
 
 # A list of files that should not be packed into the epub file.
-epub_exclude_files = ['search.html']
+epub_exclude_files = ["search.html"]
 
 
 # -- Extension configuration -------------------------------------------------
@@ -261,14 +281,16 @@
 # ..seealso: https://www.sphinx-doc.org/en/master/usage/extensions/todo.html
 #        'vhc' : 'https://gerrit.opencord.org/plugins/gitiles/voltha-helm-charts',
 
-extlinks=\
-    {
-        'vol-jira' : ('https://jira.opencord.org/projects/VOL/issues/%s', 'jira::%s'),
-        # macros for gerrit or github URL construction
-        'repo'     : ('https://github.com/opencord/%s', 'repo::%s'),
-        'vol-ger'  : ('https://gerrit.opencord.org/plugins/gitiles/%s', 'gerrit::%s'),
-        'vol-git'  : ('https://github.com/opencord/%s', 'git::%s'),
-    }
+extlinks = {
+    "vol-jira": ("https://jira.opencord.org/projects/VOL/issues/%s", "jira::%s"),
+    "jira-browse": ("https://jira.opencord.org/browse/%s", "jira::%s"),
+    # macros for gerrit or github URL construction
+    "repo": ("https://github.com/opencord/%s", "repo::%s"),
+    "vol-ger": ("https://gerrit.opencord.org/plugins/gitiles/%s", "gerrit::%s"),
+    "vol-git": ("https://github.com/opencord/%s", "git::%s"),
+    # https://mvnrepository
+    "mvn-cord": ("http://mvnrepository.com/artifact/org.opencord/%s", "mvn::%s"),
+}
 
 # -- Options for inlining a constant value -----------------------------------
 # NOTE: rst_prolog will affect every file in the repository.
@@ -282,25 +304,26 @@
 # If true, `todo` and `todoList` produce output, else they produce nothing.
 todo_include_todos = True
 
-# -- Options for linkcheck ---------------------------------------------------
-# The link checker strips off .md from links and then complains
-# linkcheck_ignore SEE .sphinx/linkcheck_ignore.py
-
 # -- Configure recommonmark to use AutoStructify -----------------------------
 # Docs: https://recommonmark.readthedocs.io/en/latest/auto_structify.html
 
 import recommonmark
 from recommonmark.transform import AutoStructify
 
-github_doc_root = 'https://github.com/opencord/voltha-docs'
+github_doc_root = "https://github.com/opencord/voltha-docs"
+
 
 def setup(app):
 
-    app.add_css_file('css/rtd_theme_mods.css')
+    app.add_css_file("css/rtd_theme_mods.css")
 
-    app.add_config_value('recommonmark_config', {
-            'url_resolver': lambda url: github_doc_root + url,
-            'auto_toc_tree_section': 'Contents',
-        }, True)
+    app.add_config_value(
+        "recommonmark_config",
+        {
+            "url_resolver": lambda url: github_doc_root + url,
+            "auto_toc_tree_section": "Contents",
+        },
+        True,
+    )
 
     app.add_transform(AutoStructify)