The three main points relevant for most people are\+:


\begin{DoxyEnumerate}
\item Even though Elektra provides a global key database, that allows {\itshape read-\/ and write access} of every single parameter {\itshape for any application} in an integrated fashion, configuration files stay human read-\/ and writable.
\item Flexible adoption on how the configuration is accessed via plugins\+: you can run arbitrary code in multiple languages or notify others when configuration files are changed. \mbox{\hyperlink{src_plugins_README_md}{Plugins}} allow us to support hundreds of different configuration file formats.
\item Elektra allows us to specify configuration values\+:
\begin{DoxyItemize}
\item use the value of other configuration values (symbolic links)
\item calculate the values based on other configuration values
\item \mbox{\hyperlink{validation.md_doc_tutorials_validation_md}{validate configuration files}}
\item generate code based on specifications
\item \mbox{\hyperlink{src_plugins_README_md}{and much more}}
\end{DoxyItemize}
\end{DoxyEnumerate}

Some might ask\+: isn\textquotesingle{}t this solution overkill? Why not tackle these three issues separately? The answer is\+:


\begin{DoxyEnumerate}
\item If we would only implement a configuration file library for applications, we would hinder the work of administrators and would not provide {\bfseries{external access}} to configuration.
\item If we only implement an administrator tool that can parse and generate configuration files, but is not used by the applications themselves, we create a gap that leads to inconsistent understanding of the configuration {\bfseries{syntax}}.
\item If we only specify the meaning of configuration within applications but not in a form accessible for administrators, we would create a gap that leads to inconsistent understanding of the configuration {\bfseries{semantics}}.
\end{DoxyEnumerate}

For common understanding of syntax and semantics of configuration files a full-\/stack solution like Elektra is required. We acknowledge, however, that such a change cannot be done overnight, thus we integrate as many configuration file formats as possible. This way, people can continue using files in {\ttfamily /etc}, regardless of whether or not Elektra is used.

To give one example, in Open\+L\+D\+AP 2.\+4.\+39 the value of {\ttfamily listener-\/threads} will be reduced to the next number that is a power of 2. To correctly manipulate the setting we need not only know the {\itshape syntax} of how to write listener-\/threads correctly in the configuration file, but also the knowledge how the value is transformed internally. Elektra solves all three issues, and then users can easily {\bfseries{externally}} manipulate {\ttfamily listener-\/threads}, without caring about the concrete {\bfseries{syntax}} of the file and getting feedback of the {\bfseries{semantics}} (you might get validation errors and you can receive the value exactly as the application will get it).

Elektra targets different kinds of users\+:


\begin{DoxyEnumerate}
\item Developers to develop a better integrated free software ecosystem and plugins for better validation/notification. If you have an application that reads or writes configuration files, you are in the target group.
\item System administrators to have a higher-\/level view of their configuration and enable them to better consider context. If you want to specify or automate configuration tasks, you are in the target group.
\end{DoxyEnumerate}

Features that rarely can be found elsewhere (at least in this combination)\+:


\begin{DoxyItemize}
\item Bootstrap code and proper abstraction is included\+:
\begin{DoxyItemize}
\item You do not need to worry about the file names of configuration files in the application.
\item Cascading between {\ttfamily /etc}, {\ttfamily \$\+H\+O\+ME}, {\ttfamily cwd} and so on.
\item You can change which Elektra path is connected to which configuration file with \mbox{\hyperlink{doc_help_elektra-mounting_md}{mounting}}.
\item Portable across OS (Linux, B\+SD, w64, mac\+OS,.. ) and desktop systems (G\+N\+O\+ME, K\+DE,...).
\end{DoxyItemize}
\item No daemon, so no single point of failure but still having guarantees of consistent, validated files with good performance.
\item Provides 3-\/way merging for configuration upgrades.
\end{DoxyItemize}


\begin{DoxyItemize}
\item Links and automatic calculation of values\+: unlike with other solutions you do not need to duplicate configuration values for different applications but you can comfortably link between them which makes many inconsistencies impossible.
\item Allows us to easily create G\+U\+Is and web-\/\+U\+Is for the whole configuration on the system.
\item Allows you to import/export all parts of the configuration.
\item Syntax independence\+: you can consistently use your favorite syntax.
\item Configuration Management (such as Puppet) can be used on top of it without having to fiddle with specifics of every configuration file.
\item C\+L\+I-\/tool available
\item {\ttfamily kdb editor} allows you to edit any path of Elektra with your favorite syntax (independent of the actual syntax of the configuration files that store values of this path).
\item Allows us to also integrate command-\/line arguments and environment into a consistent place for configuration.
\item Reduces huge amount of code\+: Nearly every application has very similar code\+:
\begin{DoxyItemize}
\item finding the correct configuration file (for different OS)
\item parsing configuration files
\item validating configuration files
\item replace configuration files on changes
\end{DoxyItemize}
\item All advantages libraries have\+:
\begin{DoxyItemize}
\item Performance\+: Improvements in the library benefits all applications.
\item The library only needs to be loaded once in the memory.
\item On fixes not all binaries of all applications need to be replaced.
\end{DoxyItemize}
\item All advantages maintained code with a community has\+:
\begin{DoxyItemize}
\item If something does not work, open an issue.
\item If you have a question, open an issue.
\item Regular releases.
\end{DoxyItemize}
\end{DoxyItemize}


\begin{DoxyItemize}
\item Continue reading \mbox{\hyperlink{doc_VISION_md}{the vision}}.
\item Look into \mbox{\hyperlink{doc_help_elektra-glossary_md}{the glossary}}.
\item Another viewpoint \mbox{\hyperlink{doc_help_elektra-introduction_md}{why to use Elektra is described here}}
\item \mbox{\hyperlink{doc_COMPILE_md}{Compile}} and \mbox{\hyperlink{doc_INSTALL_md}{Install}} Elektra 
\end{DoxyItemize}