Copyright Notice
================

Include a copyright notice with all submissions to ONF repositoreis.

- Copyright 2017-2023 Open Networking Foundation Contributors

  - NOTE: Range values such as -present are not legally binding
  - Copyright notice should be dated to the last year sources were modified.

.. code-block:: BASH
   :caption: Project Copyright Notice

   # -----------------------------------------------------------------------
   # Copyright 2017-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: 2017-2024 Open Networking Foundation Contributors
   # SPDX-License-Identifier: Apache-2.0
   # -----------------------------------------------------------------------


See Also
--------

- `Copyright notices <https://github.com/joey-onf/copyright>`_
- `Message syntax <https://github.com/joey-onf/copyright/blob/origin/master/notice>`_
- `ONF CLA Information <https://wiki.opencord.org>`_
- `Contributing License Agreement Manager <https://cla.opennetworking.org/>`_

`Copyrights <copyright/copyright>`_
