\documentclass{article}
\usepackage{ulem}
\usepackage{graphicx}
\usepackage{hyperref}
\pagestyle{headings}
\begin{document}
\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}
<a href="https://bugs.horde.org/ticket/4574">https://bugs.horde.org/ticket/4574</a><br />
<a href="https://github.com/jsxc/jsxc/issues/61">https://github.com/jsxc/jsxc/issues/61</a><br />
<a href="https://bitbucket.org/mhxp/conversejs-horde">https://bitbucket.org/mhxp/conversejs-horde</a>

\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:

\begin{itemize}
\item Standlone, proprietary clients that bring their own server.


\item Clients for existing chat protocols or backends (IRC, XMPP etc)


\end{itemize}
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:

\begin{itemize}
\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{itemize}
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 \textit{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:

\textbf{JSXC!}<br />
\includegraphics{https://bugs.horde.org/h/ansel/img/screen.php?image=1\&t=ShadowThumb\&b=none}

\section{Resources}
\begin{itemize}
\item Feature request to create Horde ingegrator for JSXC: <a href="https://github.com/jsxc/jsxc/issues/61">https://github.com/jsxc/jsxc/issues/61</a>


\item Working POC for integrating Converse.js: <a href="https://bitbucket.org/mhxp/conversejs-horde">https://bitbucket.org/mhxp/conversejs-horde</a>


\end{itemize}
\subsection{XMPP Clients}
\begin{itemize}
\item Converse-JS: <a href="https://conversejs.org/">https://conversejs.org/</a>


\item Candy: <a href="http://candy-chat.github.io/">http://candy-chat.github.io/</a>


\item Jappix: <a href="https://github.com/jappix/jappix">https://github.com/jappix/jappix</a>


\item JSXC: <a href="https://www.jsxc.org/">https://www.jsxc.org/</a>


\end{itemize}
\subsubsection{Not further analyzed}
\begin{itemize}
\item Kaiwa: <a href="http://getkaiwa.com/">http://getkaiwa.com/</a>


\item SparkWeb: <a href="https://igniterealtime.org/projects/sparkweb/">https://igniterealtime.org/projects/sparkweb/</a>


\item Stanza.io: <a href="https://github.com/legastero/stanza.io">https://github.com/legastero/stanza.io</a>


\end{itemize}
\subsection{Standalone clients}
\begin{itemize}
\item AJAX-Chat: PHP, MySQL <a href="https://github.com/Frug/AJAX-Chat#help">https://github.com/Frug/AJAX-Chat\#help</a>


\item phpfreechat: PHP, Filesystem <a href="http://www.phpfreechat.net/">http://www.phpfreechat.net/</a>


\end{itemize}
\subsection{Other clients}
\begin{itemize}
\item Rocket.Chat: Slack alternative <a href="https://rocket.chat/">https://rocket.chat/</a>


\end{itemize}

\noindent\rule{\textwidth}{1pt}
Back to the <a href="https://wiki.horde.org/Project">Project List</a>

\end{document}
