\label{doc_decisions_EXPLANATIONS_md_md_doc_decisions_EXPLANATIONS}%
\Hypertarget{doc_decisions_EXPLANATIONS_md_md_doc_decisions_EXPLANATIONS}%
 We base our decision process and template on\+:


\begin{DoxyItemize}
\item \href{http://eprints.cs.univie.ac.at/2345/1/02_Using_Patterns_to_Capture.pdf}{\texttt{ \textquotesingle{}\textquotesingle{}using patterns to capture architectural decisions\textquotesingle{}\textquotesingle{}}},
\item \href{http://docs.arc42.org/section-9/}{\texttt{ arc42 decisions}},
\item \href{https://adr.github.io/}{\texttt{ ADR}}, and
\item \href{https://github.com/rust-lang/rfcs}{\texttt{ RFCs in rust-\/lang}}.
\end{DoxyItemize}

This document describes every section of our \mbox{\hyperlink{doc_decisions_TEMPLATE_md}{TEMPLATE.md}}.\hypertarget{doc_decisions_EXPLANATIONS_md_autotoc_md2538}{}\doxysection{Problem}\label{doc_decisions_EXPLANATIONS_md_autotoc_md2538}
Clearly define\+:


\begin{DoxyItemize}
\item the context in which the problem exists
\item your observation of the problem
\item ideally an example for that problem
\end{DoxyItemize}\hypertarget{doc_decisions_EXPLANATIONS_md_autotoc_md2539}{}\doxysection{Constraints}\label{doc_decisions_EXPLANATIONS_md_autotoc_md2539}
List all constraints given by\+:


\begin{DoxyItemize}
\item use cases
\item requirements
\item \mbox{\hyperlink{doc_GOALS_md}{Elektra\textquotesingle{}s goals}}
\item guidelines, e.\+g. \mbox{\hyperlink{doc_contrib_documentation_md}{documentation guidelines}}
\item standards, e.\+g. \href{https://www.open-std.org/jtc1/sc22/wg14/}{\texttt{ C99}}
\item other decisions
\item the scope (i.\+e. describe what shouldn\textquotesingle{}t change)
\end{DoxyItemize}

\begin{quote}
Note\+: The decision (but not necessarily the solutions) must fulfill all constraints. \end{quote}
\hypertarget{doc_decisions_EXPLANATIONS_md_autotoc_md2540}{}\doxysection{Assumptions}\label{doc_decisions_EXPLANATIONS_md_autotoc_md2540}
Assumptions are often overlooked, so this section needs special care and honesty. Assumptions are what we believe to be true but do not or cannot really know, e.\+g.\+:


\begin{DoxyItemize}
\item what users will accept
\item perceived usability
\item if the implementation will be faster/slower
\item estimations of costs
\item problems/risks that might turn up
\end{DoxyItemize}

\begin{quote}
Note\+: The decision (but not necessarily the solutions) must not break any assumptions. \end{quote}
\hypertarget{doc_decisions_EXPLANATIONS_md_autotoc_md2541}{}\doxysection{Solutions}\label{doc_decisions_EXPLANATIONS_md_autotoc_md2541}
This is a list of all solutions and a rationale why not-\/chosen solutions were not taken, e.\+g. because\+:


\begin{DoxyItemize}
\item the solution does not solve the whole problem
\item some constraints or assumptions are violated
\item another solution\+:
\begin{DoxyItemize}
\item solves the problem better
\item is more in line with Elektra\textquotesingle{}s architecture
\item better supports Elektra\textquotesingle{}s goals
\item better fulfills non-\/functional requirements
\end{DoxyItemize}
\end{DoxyItemize}\hypertarget{doc_decisions_EXPLANATIONS_md_autotoc_md2542}{}\doxysection{Decision}\label{doc_decisions_EXPLANATIONS_md_autotoc_md2542}
Here should be a detailed description of the best solution, i.\+e., the decision. It should make clear how the implementation should be done.

\begin{quote}
Referring back to the solutions written above is allowed. \end{quote}
\hypertarget{doc_decisions_EXPLANATIONS_md_autotoc_md2543}{}\doxysection{Rationale}\label{doc_decisions_EXPLANATIONS_md_autotoc_md2543}
Give all details why the solution\+:


\begin{DoxyItemize}
\item solves the problem best
\item is best in line with our goals
\item fulfills all constraints and assumptions
\end{DoxyItemize}

Also describe all drawbacks the solution has.\hypertarget{doc_decisions_EXPLANATIONS_md_autotoc_md2544}{}\doxysection{Implications}\label{doc_decisions_EXPLANATIONS_md_autotoc_md2544}
Here is a full description of everything that the decision will change or whatever needs to be changed because of the decision. This can be\+:


\begin{DoxyItemize}
\item effect on other decisions, goals, etc.
\item non-\/obvious implementation tasks, e.\+g. changing in different needs to be implemented
\item which issues get solved
\item which documentation needs to be updated
\item which concepts change
\item which guarantees are added/removed
\end{DoxyItemize}\hypertarget{doc_decisions_EXPLANATIONS_md_autotoc_md2545}{}\doxysection{Related Decisions}\label{doc_decisions_EXPLANATIONS_md_autotoc_md2545}
This section has links to other decisions with description what the relation is. One-\/side relations are allowed, not every decision must link back. Decisions that give constraints must be listed in \char`\"{}\+Constraints\char`\"{} above.

\begin{quote}
Guideline\+: Links to decisions should be in the form {\ttfamily ../step of decision/name of decision.\+md}. In particular, they should always contain the step of the decision, even if they are in the same directory. This makes renaming issues easier. \end{quote}
\begin{quote}
Note\+: Sometimes the best solution is only understood if the relation between decisions becomes clear. Make sure that everything that requires updates to a decision, is listed as \char`\"{}\+Constraints\char`\"{} or \char`\"{}\+Assumptions\char`\"{}. \end{quote}
\hypertarget{doc_decisions_EXPLANATIONS_md_autotoc_md2546}{}\doxysection{Notes}\label{doc_decisions_EXPLANATIONS_md_autotoc_md2546}
Here is a full list of off-\/line discussions, issue trackers, PRs etc. related to this decision. Preferable it is linked, but if it is not possible, it can also be in full-\/text here. If particular information is important and not present in any sections above, please quote it here.

Any incomplete and unexplored idea/opinion, which is not complete enough to be in \char`\"{}\+Solutions\char`\"{}, can be written here. For example, if it is obvious that the idea does not even solve the problem. Unlike the main decision and solutions, text in the notes does not need rationale.

Furthermore, the author, acknowledgments, dates etc. can be written here. 