.. include:: ./../macros.txt
.. include:: ./../units.txt

.. _PREFACE:

Preface
=======

This is the |foxbms| developer manual. It is mandatory that every developer
working on the project reads this document in order to understand the
development workflow. Changes to this document have to be done under version
control. It is versioned as part of the |foxbms| documentation.

Terms and their definitions related to the developer manual are described in
:numref:`developer-manual-terms-and-definitions`.

Structure
---------
This document is separated into a :ref:`general style-guide<STYLE_GUIDE>`, a
:ref:`software developer manual<SOFTWARE_DEVELOPER_MANUAL>` and a
:ref:`hardware developer manual<HARDWARE_DEVELOPER_MANUAL>`.


Terminology
-----------

The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**",
"**SHALL NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**",
"**NOT RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be
interpreted as described in BCP 14 in :cite:`RFC2119` and :cite:`RFC8174` when,
and only when, they appear in all capitals and bold, as shown here.

This terminology is used throughout all technical documents associated with
|foxbms|.


Version control
---------------

In order for changes to be traceable all changes in the |foxbms|-project
**MUST** be under version control. We have chosen git for this task. The
details of the development workflows are described in the respective
developer manuals.