\hypertarget{doc_decisions_elektra_web_pubsub_md_autotoc_md1133}{}\doxysection{Problem}\label{doc_decisions_elektra_web_pubsub_md_autotoc_md1133}
To develop a \href{https://github.com/ElektraInitiative/libelektra/issues/252}{\texttt{ Web UI}}, we need to be able to remotely configure Elektra via a network socket.

The idea is to use a Pub/\+Sub concept to synchronize actions which describe changes in the Elektra state.\hypertarget{doc_decisions_elektra_web_pubsub_md_autotoc_md1134}{}\doxysection{Constraints}\label{doc_decisions_elektra_web_pubsub_md_autotoc_md1134}

\begin{DoxyItemize}
\item We need to be able to synchronize all changes in Elektra with the Web UI.
\item This needs to be done via a network socket due to limitations of the Web.
\item That means we need to run an Elektra daemon ({\ttfamily elektrad}) to be able to connect to Elektra at any time.
\end{DoxyItemize}\hypertarget{doc_decisions_elektra_web_pubsub_md_autotoc_md1135}{}\doxysection{Assumptions}\label{doc_decisions_elektra_web_pubsub_md_autotoc_md1135}
\hypertarget{doc_decisions_elektra_web_pubsub_md_autotoc_md1136}{}\doxysection{Considered Alternatives}\label{doc_decisions_elektra_web_pubsub_md_autotoc_md1136}

\begin{DoxyItemize}
\item \href{http://zeromq.org/}{\texttt{ Zero\+MQ}}\+: small and popular library for pub/sub
\item \href{http://nanomsg.org/}{\texttt{ nanomsg}}\+: from the same author as Zero\+MQ, even smaller -\/ \href{http://nanomsg.org/documentation-zeromq.html}{\texttt{ http\+://nanomsg.\+org/documentation-\/zeromq.\+html}}
\item \href{http://redis.io/topics/pubsub}{\texttt{ redis}}\+: requires a running redis server
\item \href{http://kafka.apache.org/}{\texttt{ kafka}}\+: seems too big for Elektra
\item Zero\+MQ with \href{https://github.com/zeromq/JSMQ}{\texttt{ J\+S\+MQ}}.
\end{DoxyItemize}\hypertarget{doc_decisions_elektra_web_pubsub_md_autotoc_md1137}{}\doxysection{Decision}\label{doc_decisions_elektra_web_pubsub_md_autotoc_md1137}
R\+E\+ST Api is used.\hypertarget{doc_decisions_elektra_web_pubsub_md_autotoc_md1138}{}\doxysection{Rationale}\label{doc_decisions_elektra_web_pubsub_md_autotoc_md1138}
nanomsg sounds interesting, but isn\textquotesingle{}t as popular as Zero\+MQ, which is why there are no browser JS bindings available (only Node.\+js, which cannot be easily used for the Web UI).\hypertarget{doc_decisions_elektra_web_pubsub_md_autotoc_md1139}{}\doxysection{Implications}\label{doc_decisions_elektra_web_pubsub_md_autotoc_md1139}
\hypertarget{doc_decisions_elektra_web_pubsub_md_autotoc_md1140}{}\doxysection{Related Decisions}\label{doc_decisions_elektra_web_pubsub_md_autotoc_md1140}
\hypertarget{doc_decisions_elektra_web_pubsub_md_autotoc_md1141}{}\doxysection{Notes}\label{doc_decisions_elektra_web_pubsub_md_autotoc_md1141}
