\documentclass{article}
\usepackage{ulem}
\pagestyle{headings}
\begin{document}
\tableofcontents

\part{ Horde Chat Module}
The idea is to integrate or develop some chat solution that allows Horde users to chat either in a separate application or from a widget that is displayed inside the regular applications.

\section{ Bugs}
https://bugs.horde.org/ticket/4574\footnote{https://bugs.horde.org/ticket/4574}\newline
https://github.com/jsxc/jsxc/issues/61\footnote{https://github.com/jsxc/jsxc/issues/61}\newline
https://bitbucket.org/mhxp/conversejs-horde\footnote{https://bitbucket.org/mhxp/conversejs-horde}

\section{ People}
Jan

\section{ Description}
As requested by several users and one customer, Horde lacks some chat/instant messaging solution. Suggested features:

\begin{itemize}
\item{Internal only, with Horde users}
\item{Access to chat history}
\item{Group chats}
\item{Voice/video chats}
\item{Widget on-top of other applications}
\end{itemize}
There are two categories of possible solutions:

\renewcommand{\labelenumi}{\arabic{enumi}}
\begin{enumerate}
\item{Standlone, proprietary clients that bring their own server.}
\item{Clients for existing chat protocols or backends (IRC, XMPP etc)}
\end{enumerate}
The latter is preferred, because we wouldn't have a vendor-lock-in and building on top of existing standardized solutions if better following Horde's paradigm of "integrate with what's there".

Two other categories are:

\renewcommand{\labelenumi}{\arabic{enumi}}
\begin{enumerate}
\item{Complete chat applications. This is the kind of chat you get on chat websites.}
\item{Integrated (widget-like) applications. Those can be integrated into existing applications and run partly on top of those. This is the kind of chat found on social networks.}
\end{enumerate}
Again, the latter is preferred because you wouldn't have to switch between the chat application and the other Horde application that you are currently using.

Other points to keep in mind: look and feel, ease of integration with existing web applications (other examples), conflicts with existing Horde JavaScript code, maintenance status, customization possibilities.

Without having investigated \textsl{all} items, it boils down to an XMPP server with Converse.js, JSXC, or Jappix on top. Pending any unforeseen problems, and due to the nice UI and video/audio chat support(!), the winner is:

Center: NI\textbf{JSXC!}Center: NI

Image: NI

\section{ Resources}
\begin{itemize}
\item{Feature request to create Horde ingegrator for JSXC: https://github.com/jsxc/jsxc/issues/61\footnote{https://github.com/jsxc/jsxc/issues/61}}
\item{Working POC for integrating Converse.js: https://bitbucket.org/mhxp/conversejs-horde\footnote{https://bitbucket.org/mhxp/conversejs-horde}}
\end{itemize}
\subsection{ XMPP Clients}
\begin{itemize}
\item{Converse-JS: https://conversejs.org/\footnote{https://conversejs.org/}}
\item{Candy: http://candy-chat.github.io/\footnote{http://candy-chat.github.io/}}
\item{Jappix: https://github.com/jappix/jappix\footnote{https://github.com/jappix/jappix}}
\item{JSXC: https://www.jsxc.org/\footnote{https://www.jsxc.org/}}
\end{itemize}
\subsubsection{ Not further analyzed}
\begin{itemize}
\item{Kaiwa: http://getkaiwa.com/\footnote{http://getkaiwa.com/}}
\item{SparkWeb: https://igniterealtime.org/projects/sparkweb/\footnote{https://igniterealtime.org/projects/sparkweb/}}
\item{Stanza.io: https://github.com/legastero/stanza.io\footnote{https://github.com/legastero/stanza.io}}
\end{itemize}
\subsection{ Standalone clients}
\begin{itemize}
\item{AJAX-Chat: PHP, MySQL https://github.com/Frug/AJAX-Chat\#help\footnote{https://github.com/Frug/AJAX-Chat\#help}}
\item{phpfreechat: PHP, Filesystem http://www.phpfreechat.net/\footnote{http://www.phpfreechat.net/}}
\end{itemize}
\subsection{ Other clients}
\begin{itemize}
\item{Rocket.Chat: Slack alternative https://rocket.chat/\footnote{https://rocket.chat/}}
\end{itemize}

\noindent\rule{\textwidth}{1pt}
Back to the Project List\footnote{http://example.com/index.php?page=Project}

\end{document}
