..
    Zephyr Project documentation master file

Zephyr Project Documentation
############################

.. only:: release

   Welcome to the Zephyr Project's documentation version |version|!

   Documentation for the development branch of Zephyr can be found at
   https://www.zephyrproject.org/doc/

.. only:: (development or daily)

   Welcome to the Zephyr Project's documentation. This is the documentation of the
   master tree under development (version |version|).

   Documentation for released versions of Zephyr can be found at
   ``https://www.zephyrproject.org/doc/<version>``. The following documentation
   versions are available:

   `Zephyr 1.5.0`_ | `Zephyr 1.6.1`_ | `Zephyr 1.7.1`_ | `Zephyr 1.8.0`_ |
   `Zephyr 1.9.2`_ | `Zephyr 1.10.0`_ | `Zephyr 1.11.0`_

For information about the changes and additions for releases, please
consult the published :ref:`zephyr_release_notes` documentation.

The Zephyr OS is provided under the `Apache 2.0 license`_ (as found in
the LICENSE file in the project's `GitHub repo`_).  The Zephyr OS also
imports or reuses packages, scripts, and other files that use other
licensing, as described in :ref:`Zephyr_Licensing`.

Source code for the Zephyr Project is maintained in the Zephyr Project's
`GitHub repo`_.

.. _Apache 2.0 license:
   https://github.com/zephyrproject-rtos/zephyr/blob/master/LICENSE

.. _GitHub repo: https://github.com/zephyrproject-rtos/zephyr


Sections
********

.. toctree::
   :maxdepth: 1

   introduction/introducing_zephyr.rst
   getting_started/getting_started.rst
   contribute/contribute.rst
   kernel/kernel.rst
   security/security.rst
   application/index.rst
   boards/boards.rst
   devices/index.rst
   subsystems/subsystems.rst

Indices and Tables
******************

* :ref:`glossary`

* :ref:`genindex`

.. _Zephyr 1.11.0: https://www.zephyrproject.org/doc/1.11.0/
.. _Zephyr 1.10.0: https://www.zephyrproject.org/doc/1.10.0/
.. _Zephyr 1.9.2: https://www.zephyrproject.org/doc/1.9.0/
.. _Zephyr 1.8.0: https://www.zephyrproject.org/doc/1.8.0/
.. _Zephyr 1.7.1: https://www.zephyrproject.org/doc/1.7.0/
.. _Zephyr 1.6.1: https://www.zephyrproject.org/doc/1.6.0/
.. _Zephyr 1.5.0: https://www.zephyrproject.org/doc/1.5.0/
