# OpenCms

OpenCms es un sistema de gestión de contenido de código abierto basado en Java y en tecnología XML. Es distribuido por la empresa Alkacon Software bajo licencia LGPL.
Se trata de una aplicación CMS con características tales como Entorno de trabajo basado en navegador web, Gestión de activos, Sistemas de gestión de usuarios y permisos integrados, Publicación de contenidos basada en proyectos, Gestión de Workflow y tareas, Editor WYSIWYG, Soporte a la internacionalización, Versionado del contenido, Mecanismos de plantillas JSP y XML, Soporte Multi-idioma, Sistema de Ayuda En línea, Publicación dinámica y estática de contenidos, Personalización, Sistemas de cacheo integrados, Mecanismo modular para las extensiones, Sistema de programación de trabajos, Mecanismo de Sincronización, Importación y Exportación de Contenidos, Integración con el servidor de aplicaciones, soporte para EJB y muchos más.
Lo único que requiere OpenCms para su instalación es un contenedor de JSP/Servlet como Apache Tomcat y un sistema de gestión de base de datos como MySql.

## Historia del Proyecto

La historia de OpenCms comienza alrededor de 1999 con su predecesor, el MhtCms, que no era de fuentes abiertas. La primera versión de fuentes abiertas fue liberada en la exposición CeBit 2000.
Alexander Kandzior desarrolló la primera versión de OpenCms mientras trabajaba en varios proyectos personales durante el último lustro del siglo XX, se había interesado por los sistemas CMS en 1994. Comenzó con ideas sueltas y poco interconectadas, pero antes del comienzo del año 1998, estas ideas fueron encajando como si de un puzle se tratara, formando así un único sistema.
En 2002, momento en el que apareció la versión 5.0, el proyecto OpenCms pasó por un bache debido a que los principales miembros del mismo decidieron abandonar para dedicarse a nuevos proyectos. El grupo OpenCms quedó disuelto, sin embargo, el creador de OpenCms, Alexander Kandzior, fundó la compañía Alkacon Software, la cual se encarga del desarrollo del proyecto.
La versión más reciente de OpenCms es la 12.0

## Desarrollo del Proyecto

Existen muy diversas maneras de contribuir en el desarrollo del proyecto y se puede contribuir con mucho o poco, en función de nuestras preferencias, tiempo, ambiciones, etc. Por ejemplo, si no tenemos mucho tiempo, podemos contribuir de la siguiente manera:
* Convertirnos en un participante de las listas que envía OpenCms.
* Divulgar los sitios de referencia de OpenCms y las historias de éxito.
* Probar las nuevas funcionalidades de OpenCms.
* Divulgar los errores usando el sistema que sigue OpenCms para el reporte de errores.
* Extender la documentación.
Si dispones de tiempo y eres desarrollador, así como un poco más ambicioso, puedes participar en lo siguiente:
* Desarrollar los módulos y ponerlos a disposición la comunidad.
* Ampliar OpenCms con nuevas funcionalidades de la base.
* Solucionar errores en la base de OpenCms.

## Estructuras organizativas/asociativas o de decisión

OpenCms es un proyecto de software libre y Alkacon Software coordina de manera oficial el desarrollo del mismo. Existe una comunidad activa de Software Libre que participa en el desarrollo del mismo. Repartidos por todo el mundo, existe un gran número de contribuyentes que ofrecen servicios y soportes profesionales. Los participantes activos en el proyecto utilizan listas de correo y foros para comunicarse y coordinarse.
La comunicación diaria se realiza a través de las listas de correo y los foros, en los cuales se pueden realizar preguntas y comentarios.
Básicamente, el desarrollo de nuevas versiones es realizado por Alkacon Software y algunas contribuciones de la comunidad OpenCms.
Como la mayoría de proyectos de software libre, estamos ante un proyecto bien organizado donde cada participante sabe perfectamente a que debe destinar sus esfuerzos y todo es coordinado por un grupo de responsables .

## Estado actual

El 30 de noviembre de 2006 se lanzó la versión 6.2.3 de OpenCms, la cual incorpora la totalidad de funcionalidades de su versión predecesora:
* Selección de múltiples elementos y operaciones en la vista de Explorador.
* Manipulación y escalado de imágenes.
* Comparación visual de versiones.
* Nuevo editor WYSIWYG: FCKEditor.
* Mejora del editor del contenido estructurado, permitiendo reordenar el contenido y con más elementos para introducir contenido.
* Nuevo álbum de fotos.
* Nuevo tipo de recurso: "Pattern page" (Patrón de páginas).
* Numerosas mejoras en la interfaz de administración del módulo de búsqueda.
* Más opciones para generar webs accesibles.
* Soporte para bases de datos MySQL 5 y Oracle 10.
Y mejora los siguientes aspectos:
* Añade la opción de eliminar locale en el contenido xml y en el editor de páginas.
* Posibilidad de configurar los MIME-TYPE desde un fichero de configuración.
* Mejora la velocidad de carga de la opción "editar directamente".
Actualmente se distribuye la versión 7.0.5 con numerosas funcionalidades incorporadas, descritas en detalles en la propia documentación que acompaña al producto. Destacar especialmente la incorporación del sistema de plantillas para la creación de contenidos TemplateTwo.

## Radiografía

A continuación se muestran los datos de OpenCms 6.2.3. Estos datos han sido obtenidos con la aplicación SLOCCount. Esta versión de OpenCms cuenta con un total de 221.360 líneas de código. Según el modelo COCOMO requeriría un esfuerzo para producir este software de 58 personas-año.
El tiempo empleado por una empresa para desarrollar un software como OpenCms 6.2.3 se estima, según la herramienta mencionada, en 30 meses y el número de desarrolladores trabajando en paralelo se estima en unos 23.
El coste que supone para una empresa desarrollar un software como este, se estima en 7.834.219 $.
Estado actual de OpenCms :
| Página web | http://www.opencms.org/ |
| Inicio del proyecto | 1994 |
| Versión actual | 30 de noviembre de 2006 |
| Líneas de código fuente | 221.360 |
| Esfuerzo estimado de desarrollo (persona-mes / persona-año) | 57,99 / 695,93 |
| Estimación de tiempo (años) | 2,51 |
| Estimación del n.º de desarrolladores en paralelo | 23,14 |
| Estimación de coste | |
También podemos mencionar que OpenCms 6.2.3 está desarrollado casi en su totalidad en Java, y JSP. También se ha empleado otros lenguajes, aunque en menor medida. Estos lenguajes son: Perl, PHP, Python y Sh. Estos datos se ven más claramente en la siguiente tabla:
Lenguajes de programación utilizados en OpenCms 6.2.3 :
| Lenguaje | Líneas de código | % |
| Java | 205.778 | 92,96% |
| JSP | 13.265 | 5,99% |
| Perl | 1.113 | 0,50% |
| PHP | 605 | 0,27% |
| Python | 581 | 0,26% |
| Sh | 19 | 0,01% |