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/>`_

:doc:`Copyrights <copyright/copyright>`
