# Horde (software)

Horde es un framework libre escrito en PHP, para el desarrollo de aplicaciones colaborativas (groupware) basadas en la Web.
El Proyecto Horde se compone de unas bibliotecas (el mencionado Horde Framework) que proporcionan funcionalidades básicas (autenticación, gestión de preferencias, interfaz gráfica, etc) y que funciona como nexo de unión entre distintas aplicaciones de usuario, que son gestionadas como subproyectos independientes.
El objetivo del proyecto es crear aplicaciones sólidas, basadas en estándares, multiplataforma y de fácil acceso para cualquier usuario, independientemente de su idioma o localización.
En la actualidad, IMP (el más importante subproyecto Horde y origen del mismo) es uno de los sistemas webmail más populares en Internet.
A partir de la versión 2.0, Horde se libera bajo la licencia LGPL (http://www.horde.org/licenses/lgpl.php). El resto de aplicaciones o subproyectos lo están bajo diferentes licencias Software Libre, siendo GPL la más habitual.
Entre los proyectos Horde se encuentran:
* Horde - Se trata del framework sobre el que trabajan el resto de aplicaciones. Es el único módulo no opcional del sistema Horde.
* IMP - Sistema webmail que permite el acceso a buzones POP3 o IMAP.
* MIMP - Derivativo de IMP, con una interfaz mínima para hacerlo usable en dispositivos móviles.
* DIMP - Derivativo de IMP, con interfaz basado en AJAX, con el objeto de hacerlo más dinámico y rápido.
* Ingo - Sistema de gestión y aplicación de reglas de filtrado de correo.
* Sork - Conjunto de utilidades para el sistema webmail que permiten al usuario funciones como el cambio de contraseña, redirecciones, respuestas automáticas tipo "fuera de la oficina", etc.
* Turba - Agenda de contactos.
* Mnemo - Gestor de notas.
* Kronolith - Gestión de agendas y calendarios con funciones de grupo.
* Gollem - Gestor de archivos con posibilidad de usar un SGBD como backend
* Nag - Gestor de listas de tareas.
* Trean - Gestor de favoritos.
Adicionalmente, el Proyecto Horde ha desarrollado dos herramientas para la gestión del proyecto, cuyas posibilidades de uso van mucho más allá del ámbito de Horde:
* Chora - Interfaz al sistema CVS de código fuente del proyecto.
* Whups - Sistema de gestión de incidentes basado en boletines.
Entre los estándares a los que se adhiere de forma explícita el proyecto Horde se encuentran:
* XHTML, CSS 1 y 2
* DOM scripting
* MIME
* ANSI SQL
* IMAP
* iCalendar y vCard
* syncML
* WebDAV
Horde es neutral en cuanto a la tecnología utilizada en el backend:
* Drivers SQL para MySQL, PostgreSQL, Oracle, Microsoft SQL Server, etc
* Soporte de LDAP para la gestión de usuarios, contactos, identidades, etc
En cuanto a la internacionalización del proyecto, se logra utilizando Unicode y juegos de caracteres estándar. En la actualidad, el proyecto se encuentra disponible en 39 idiomas.

## Historia del proyecto

Chuck Hagenbuch desarrolló IMP 1.0 en el verano de 1998 para proporcionar un servicio de acceso WEB al correo electrónico a la asociación estudiantil del Williams College, de la cual era miembro. Su creación fue anunciada en Freshmeat, un lugar de referencia que publica noticias relativas a proyectos de software libre, y en pocos meses su base de usuarios aumentó de forma masiva.
A pesar de su éxito, IMP sufría graves carencias (documentación, seguimiento de estándares, gestión de sesiones, templates, etc) y su rápido crecimiento exigió una urgente reorganización del código. Dicho rediseño tuvo en cuenta la separación del código estrictamente relacionado con el servicio webmail, y el resto, compuesto por las bibliotecas que proporcionan funcionalidades más generales, como la gestión de configuraciones, preferencias, etc. Como resultado se lanzó Horde 1.0, coincidiendo con el lanzamiento de IMP 2.0, que aún no era completamente usable sin éste.
Horde 1.2 e IMP 2.2 no supusieron grandes cambios a excepción de la incorporación de PHPLIB, una biblioteca externa, ya en desuso, para la gestión de sesiones.
Horde 1.2 coincidió con el lanzamiento de PHP 4, una nueva versión del lenguaje en que está escrito Horde e IMP, que ya incorporaba soporte nativo de sesiones, de forma que se hacía innecesario ninguna biblioteca externa.
Horde 1.3 dio paso a Horde 2.0 en 2001 tras dos años de desarrollo. Para entonces, el equipo de desarrolladores ya era un núcleo estable, con la incorporación de Jan Schneider, Jon Parise y Michael Slusarz, y buena parte de los subproyectos, como Turba y Kronolith, se consolidaron.
La versión 3.0 de Horde se lanzó a finales de 2003, e incluyó como novedad el rediseño de las bibliotecas con estilo PEAR, un formato que las hace compatibles con el repositorio más popular de módulos para PHP, al estilo de CPAN para PERL, que permitirá a otros muchos proyectos aprovechar parte del trabajo ya realizado. También se hacen públicos el sistema de gestión de código CVS vía web y el gestor de bugs e incidentes utilizados por el proyecto.
En el caso del framework, el número de líneas de código aumenta en un factor de 10, así como el número de subproyectos registrados en el CVS, que pasan de 6 a 45.

## Desarrollo del proyecto

El equipo de desarrolladores del proyecto organizan el trabajo de programación alrededor de un sistema CVS, en que el que varias personas tienen permisos de escritura, en todas, o en alguna rama, dependiendo de su implicación a nivel global o únicamente en algún subproyecto.
El acceso, en modo lectura, al servidor CVS es abierto. Adicionalmente, se generan diariamente distribuciones nocturnas a partir de la última versión del CVS, de forma que cualquiera pueda probar fácilmente las últimas inclusiones en el mismo.
Paralelamente, existen listas de correo de coordinación, en la que participan activamente los miembros del equipo principal, así como otros muchos colaboradores esporádicos.
Por otra parte, el Proyecto Horde ha participado en las ediciones de 2005 y 2006 de la iniciativa “Summer of Code” patrocinada por Google, que proporciona financiación, en forma de becas a estudiantes, para la colaboración en determinados proyectos de software libre.

## Estructuras organizativas/asociativas o de decisión

El llamado Core Team está formado en la actualidad por Chuck Hagenbuch, Jan Schneider, Michael Slusarz, Jon Parise, Eric Rostetter, Marcus I. Ryan, Anil Madhavapeddy y Rich Lafferty. Sus labores no comprenden únicamente la programación de los distintos módulos, sino que también aportan su trabajo en el campo de la documentación, el soporte a usuarios y el mantenimiento del sitio web del proyecto.
Ellos son los que se encargan de tomar las decisiones importantes y velar por el espíritu y objetivos del proyecto.

## Industria relacionada

El carácter no comercial del proyecto lo acompaña desde sus inicios en una asociación estudiantil, y su desarrollo siempre ha venido facilitado por la colaboración de la comunidad del software libre. En cualquier caso, el propio proyecto siempre ha visto con buenos ojos la posibilidad de ofrecer servicios de soporte de pago y consultoría tanto en cuestiones de instalación como de personalización, y para ello ha dispuesto una página en la web del proyecto que facilita la información de contacto con el Core Team, y adicionalmente, lista las empresas o individuos certificados por ellos para tales labores.
En general, la inclusión en dicha lista se basa en las contribuciones realizadas al proyecto.
Por otra parte, y como modelo de negocio adicional, en este caso para la comunidad, se establece una página con 'recompensas' ofrecidas por empresas o individuos interesados en alguna funcionalidad concreta, a las que cualquiera puede concurrir.

## Estado actual

En la actualidad Horde, principalmente unido al servicio webmail IMP, se encuentra implantado en muchas universidades e ISPs. Algunos ejemplos de organizaciones usando Horde:
* SAPO Mail (ISP Portugués): 1.65M usuarios
* University of Michigan: 113.000 usuarios
* Versatel.nl: 250.000 usuarios
* NetCologne: 200.000 usuarios
* Greenpeace International
* University of Colorado
* Facultad de Ciencias, Universidad Nacional Autónoma de México
* Facultad de Ingeniería, Universidad de Buenos Aires
* Facultad de Ingeniería, UdeLaR (Uruguay)
* Universidad de San Carlos, Guatemala
* Universidad de Cantabria, España
* Universidad de Vigo, España
* Universidad Rey Juan Carlos de Madrid, España
* Universidad Autónoma de Madrid, España
* Caja Rural San José de Almassora (CAIXALMASSORA), España
* Instituto de Investigaciones Marinas y Costeras - INVEMAR (Colombia)
* Red Informática del Ministerio de Educación de Cuba (RIMED)
* Fundación Universidad del Norte, Colombia
* Universidad de las Ciencias Informáticas - Cuba
* Facultad Regional Santa Cruz, Universidad Tecnológica Nacional, Argentina
* Universidad Nacional del Noroeste de la Provincia de Buenos Aires, Argentina
El desarrollo continúa y nuevas propuestas para lo que será Horde 4.0 se vienen discutiendo en las listas de correo de desarrollo.

## Radiografía

Nada mejor que unas cuantas cifras para hacerse idea del volumen del proyecto.
Lenguajes de programación utilizados en el Proyecto Horde :
| Lenguaje | Líneas de código | % |
| PHP | 120.608 | 99.93% |
| sh | 73 | 0.06% |
| perl | 17 | 0.01% |
Aplicando el modelo COCOMO al código del proyecto a través de la herramienta SLOCCount, de David A. Wheeler, se obtiene la siguiente tabla
Estado actual del Proyecto Horde :
| Página web | http://www.horde.org |
| Inicio del proyecto | 1998 |
| Versión analizada | Horde Groupware Webmail Edition 1.0 – RC1 - noviembre de 2006 |
| Líneas de código fuente | 120.608 |
| Esfuerzo estimado de desarrollo (persona/año - persona/mes) | 30,68 - 368,13 |
| Estimación de tiempo (años) | 1,97 |
| Estimación de número de desarrolladores en paralelo | 15,59 |
| Coste total estimado | 4,144,066 $ - algo más de 3 millones de € |
Notas:
* Para el estudio del código fuente se ha utilizado el “empaquetado” denominado Horde Groupware Webmail Edition que comprende el framework Horde, así como los subproyectos más populares: IMP, Ingo, Kronolith, Turba, Nag and Mnemo. No se han tenido en cuenta las bibliotecas PEAR incluidas en el mismo, dado que provienen de proyectos y esfuerzos diferentes.
* A la hora de estimar el coste total del proyecto se ha tomado como referencia un sueldo medio de $56,286 al año y un factor de corrección de 2,4, que proporcionaría una cifra más real, teniendo en cuenta los gastos (local, teléfono, ordenadores, etc) en los que incurre una empresa para emplear a dichos trabajadores.

## Instalación

El único requisito para la utilización de Horde es PHP. Se soportan la versión 4 o 5. Si se desea utilizar IMAP, se ha de disponer del módulo IMAP de PHP.
Para su instalación se puede optar por descargar por separado desde la página del proyecto el paquete Horde (obligatorio) y los paquetes de los subproyectos deseados, o mucho más sencillo, utilizar la suite Horde Groupware Webmail Edition que agrupa en una sola distribución los paquetes más populares. También existe la posibilidad de utilizar la suite Horde Groupware Edition, similar al anterior pero sin incluir IMP, más orientado a actividades de groupware o trabajo colaborativo.
Para la configuración y puesta en marcha es recomendable seguir las instrucciones accesibles desde la página web de cada uno de los subproyectos.