..
    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
   http://docs.zephyrproject.org/

.. 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 tagged released versions of Zephyr can be found at
   ``http://docs.zephyrproject.org/<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: http://docs.zephyrproject.org/1.11.0/
.. _Zephyr 1.10.0: http://docs.zephyrproject.org/1.10.0/
.. _Zephyr 1.9.2: http://docs.zephyrproject.org/1.9.0/
.. _Zephyr 1.8.0: http://docs.zephyrproject.org/1.8.0/
.. _Zephyr 1.7.1: http://docs.zephyrproject.org/1.7.0/
.. _Zephyr 1.6.1: http://docs.zephyrproject.org/1.6.0/
.. _Zephyr 1.5.0: http://docs.zephyrproject.org/1.5.0/
