\documentclass{article}
\usepackage{ulem}
\usepackage{graphicx}
\usepackage{hyperref}
\pagestyle{headings}
\begin{document}
\part{Horde Framework Module}
The \textit{Horde Framework} modules, also known as \textit{Horde Libraries}, are an integral part of the \textit{Horde Application Framework}. These modules are managed in our <a href="https://www.horde.org/source/">Git repositories</a> and can be downloaded either from our <a href="https://pear.horde.org">PEAR server</a> or from <a href="https://github.com/horde">Github</a> directly. The modules are general purpose libraries that are being used by several Horde applications or the framework itself, but can also be utilized outside the Framework in custom PHP solutions. They are developed, packaged, and distributed as <a href="https://pear.php.net/">PEAR</a> and <a href="http://getcomposer.org">Composer packages</a>.

\section{Installation}
Most of these methods require that you first tell your PEAR installation about the Horde PEAR channel:

<pre><code>
pear channel-discover pear.horde.org
</code></pre>
\subsection{Installing everything from Git}
<a id="InstallInstruct"></a> You should use the <a href="https://github.com/horde/git-tools">Horde Git Tools</a> to download and install multiple libraries or the whole framework at once.

\subsection{Installing individual libraries from Git}
You can checkout and install individual packages directly from <a href="https://github.com/horde">GitHub</a> or with the Horde Git Tools like above. For example, to install the Horde\_Compress package, in the \texttt{Compress} directory, you would run:

<pre><code>
pear install Compress/package.xml
</code></pre>
\subsection{Installing from <a href="https://pear.horde.org/">https://pear.horde.org/</a>}
Installing from pear.horde.org is simple. Once you have "discovered" the channel as described above, you can install Horde packages just like other PEAR packages. For example to install the Compress package:

<pre><code>pear install horde/Horde\_Compress
</code></pre>
To view the available packages, their states (alpha, beta, stable), dependencies, and other information about them, visit <a href="https://pear.horde.org">https://pear.horde.org</a>.

\subsection{If you already have a Horde release}
Horde releases come with all of the required framework libraries installed, and also include the necessary code to make everything available to Horde without any further installation or PHP configuration.

\section{Use}
If PHP has been set up properly, the local PEAR repository should be in PHP's \texttt{[include\_path](https://php.net/manual/en/ini.core.php\#ini.include-path)}. If installing the Horde Libraries either separately with the PEAR installer or using the Horde Git Tools, they are available alongside PEAR's packages, and can be included in your custom code the same way:

<pre><code class="language-php">
// Include PEAR's DB package.
require\_once 'DB.php';
// Include PEAR's Text\_Wiki package.
require\_once 'Text/Wiki.php';
// Include Horde's Horde\_Tree package.
require\_once 'Horde/Tree.php';
// Include Horde's Horde\_Text\_Flowed package.
require\_once 'Horde/Text/Flowed.php';
</code></pre>
If using the Horde environment, these require\_once statements are not needed as the libraries will be autoloaded the first time they are used.

\section{Development}
\subsection{Git organization}
All libraries are managed in <a href="https://github.com/horde">GitHub</a>. Each library has its own subdirectory. The library package names are ALWAYS \texttt{Horde\_<Name>}, and the directory names are \texttt{<Name>}.

Each package directory contains a <a href="https://pear.php.net/manual/en/guide.developers.package2.php">package.xml</a> file with package descriptions, file listings, dependencies, change logs etc. As all Horde Libraries are following the <a href="https://pear.php.net">PEAR</a> standard, they can be installed using the <a href="https://pear.php.net/manual/en/installation.php">PEAR installer</a> or may be symlinked to a subdirectory of the Horde installation.  For further instructions, see the Installation Instructions located above.

\subsection{Directory structure}
<pre><code>
Name/
    package.xml
    lib/
        Horde/
            Name.php
            Name/
                foo.php
                bar.php
...
</code></pre>
After installation:

<pre><code>
lib/
    Horde/
        Name.php
        Name/
            foo.php
            bar.php
...
</code></pre>
A rule of thumb is that each underscore in a package name is translated to an additional directory after installation.

\end{document}
