\label{doc_decisions_backend_plugin_md_md_doc_decisions_backend_plugin}%
\Hypertarget{doc_decisions_backend_plugin_md_md_doc_decisions_backend_plugin}%
 \hypertarget{doc_decisions_backend_plugin_md_autotoc_md1696}{}\doxysection{Problem}\label{doc_decisions_backend_plugin_md_autotoc_md1696}

\begin{DoxyItemize}
\item Backends store plugins in arrays which have a fixed number of slots for each plugin role. The number of plugins which can be assigned is limited, making it easy to reach the limit if many plugins are in use.
\item As structs, backends are separate from the plugin interface and integrated into the core of Elektra. This makes it difficult to perform operations such as nesting plugins, or to develop other implementations for backends.
\end{DoxyItemize}\hypertarget{doc_decisions_backend_plugin_md_autotoc_md1697}{}\doxysection{Constraints}\label{doc_decisions_backend_plugin_md_autotoc_md1697}

\begin{DoxyItemize}
\item It should be possible for all existing plugins to run normally
\end{DoxyItemize}\hypertarget{doc_decisions_backend_plugin_md_autotoc_md1698}{}\doxysection{Assumptions}\label{doc_decisions_backend_plugin_md_autotoc_md1698}
\hypertarget{doc_decisions_backend_plugin_md_autotoc_md1699}{}\doxysection{Considered Alternatives}\label{doc_decisions_backend_plugin_md_autotoc_md1699}

\begin{DoxyItemize}
\item Multiple storage plugins within a single backend
\item Plugin containing more plugin slots
\end{DoxyItemize}\hypertarget{doc_decisions_backend_plugin_md_autotoc_md1700}{}\doxysection{Decision}\label{doc_decisions_backend_plugin_md_autotoc_md1700}

\begin{DoxyItemize}
\item The current backend implementation will be redeveloped into a backend plugin. That way, the core of Elektra will only access backends through the standard plugin interface.
\item The new backend plugin will support an unlimited number in any position where more than one plugin is sensible. e.\+g., unlimited plugins in {\ttfamily poststorage}, but only a single one in {\ttfamily storage}
\end{DoxyItemize}\hypertarget{doc_decisions_backend_plugin_md_autotoc_md1701}{}\doxysection{Rationale}\label{doc_decisions_backend_plugin_md_autotoc_md1701}

\begin{DoxyItemize}
\item Making backends plugins themselves detaches their implementation from the core of Elektra, making it possible to develop new kinds of backends without major changes to the core itself.
\item As plugins, backends can contain further backends, making it possible to nest plugins and enabling new kinds of plugin combinations such as fallback storage options.
\end{DoxyItemize}\hypertarget{doc_decisions_backend_plugin_md_autotoc_md1702}{}\doxysection{Implications}\label{doc_decisions_backend_plugin_md_autotoc_md1702}
The structure of {\ttfamily system\+:/elektra/mountpoints} has to change to accommodate different kinds of backend plugins.\hypertarget{doc_decisions_backend_plugin_md_autotoc_md1703}{}\doxysection{Related Decisions}\label{doc_decisions_backend_plugin_md_autotoc_md1703}
\hypertarget{doc_decisions_backend_plugin_md_autotoc_md1704}{}\doxysection{Notes}\label{doc_decisions_backend_plugin_md_autotoc_md1704}
\href{https://issues.libelektra.org/2963}{\texttt{ https\+://issues.\+libelektra.\+org/2963}} 