Últimamente vengo observando en diversos grupos de opinión de nuestro entorno una creciente animadversión hacia OpenCms como plataforma de gestión de contenidos, indiferentemente de la versión de la que hablemos (la versión 7 ya lleva bastante tiempo estabilizada). Puedo entender cierto picorcillo contra una serie de experiencias de hace ya varios años, basadas en implantaciones de un pseudo-OpenCms 5 que tenía por delante un fuerte desarrollo frontend para dotarle de funcionalidades de las que no disponía esa versión. El problema (y la ventaja) del software libre es que tienes ahí el código fuente, listo para adaptarlo a tus necesidades. Pero claro, si lo «adaptas demasiado», te separas de la línea principal de desarrollo y te quedas anclado en la versión antigua. Sin embargo, de eso no tiene la culpa el software (en este caso, OpenCms), sino el equipo que forman los contratados para hacer algo, y los que contratan eso.
La mayoría de organizaciones que buscan un CMS requieren una serie de características muy difíciles de conjugar:
- Que sea software libre, y además gratuito.
- Que los usuarios puedan ser dueños y señores de su web, pudiendo introducir contenidos con editores WYSIWYG, imágenes (y que se auto-redimensionen), contenidos estructurados (noticias, eventos, ficheros, etc.), con herramientas sencillas y usables…
- Que a pesar de todo ello, se mantenga la accesibilidad de la página (algo complicado, porque los editores visuales no pueden generar HTML semánticamente correcto). ¿Quién le impide a un usuario poner un título con una etiqueta que no sea una <h1>, <h2>, …<hN>?
- Circuitos y flujos de aprobación de los contenidos.
- Gestión de permisos de edición y publicación sobre diferentes áreas funcionales, recursos, etc. Por ejemplo, «el grupo de prensa puede crear noticias», etc.
- Velocidad, estabilidad y alta disponibilidad: cacheo, posibilidad de balanceo de carga, clusterización…
- Posibilidad de definir nuevos contenidos de la forma más sencilla posible, y la máxima flexibilidad para plasmar estos contenidos en la zona web (por ejemplo, un evento, que se pueda desplegar como un calendario).
- Facilidad de mantenimiento (tanto a nivel Sistemas como Desarrollo), de forma que la evolución del portal sea lo menos costosa posible.
- Publicación/despublicación diferida (programada para una fecha concreta).
- En muchos casos, soporte multi-idioma.
- Soporte de plantillas y temas.
- Posibilidad de introducir zonas privadas con autenticación de usuarios (con funciones de registro, recordatorio de contraseñas, roles y visibilidad, etc.).
- Funcionalidades más o menos avanzadas: indexación de contenidos (web, ficheros, etc.) y búsqueda, autogeneración del mapa de la web, autogeneración de migas (breadcrumbs) de navegación, autogeneración de menús, etc etc etc.
A lo largo de mi vida profesional he probado innumerables plataformas CMS. En Carrefour España fui el Jefe de Proyecto responsable de la creación de la intranet corporativa de la empresa, basada en el entonces novedosísimo PhpNuke versión 6 🙂 desarrollada por los nunca suficientemente valorados Simplelogica. He sido siempre un gran defensor de PHP como plataforma de desarrollo rápido, con plataformas bastante interesantes (Joomla, Drupal…) y veo con interés las apariciones de otras alternativas como Plone (Python), frameworks de desarrollos como Ruby On Rails, etc. Sin embargo, en este mercado suelen confundirse mucho los productos de portal, como era ese PhpNuke, mal llamados CMSs, con los productos de gestión de contenidos, como son OpenCms, Vignette, etc. De hecho, en tecnologías Java hablamos de dos especificaciones distintas: la JSR-170 para la persistencia de contenidos y la JSR-168 más orientada a portales, y en concreto a la estandarización de los componentes portlets.
En el caso de la Junta de Andalucía, que me pilla bastante cerca, no puedo entender cómo se puede poner en duda la utilización de OpenCms (al menos su última versión 7). Cumple a rajatabla todos los requisitos que se suelen solicitar, como los que he enumerado anteriormente, pero además tiene una serie de ventajas de gran importancia:
- Tiene excelentes características de rendimiento (cacheo avanzado, posibilidad de clusterizar y balanceo de carga…).
- Es coherente con la apuesta tecnológica (JAVA). Y eso es MUY importante para una organización que haya hecho una apuesta por una tecnología. Cuando ya dispones de programadores formados, de personal de Sistemas (muchos de ellos funcionarios de la propia Junta) que sabe gestionar servidores de aplicaciones y motores de servlets como JBoss, Oracle iAS, Tomcat, o SGBDR como Oracle 9i ó 10g, ¿de verdad es buena idea comenzar a desarrollar con plataformas como Python o PHP? No quiero decir que estas plataformas sean mejores o peores (como siempre, dime para qué), pero en una gran organización la estandarización es realmente importante.
- A pesar de ser Open Source, tienen una empresa detrás (en este caso, Alcakon) que asegura la estabilidad, e incluso, por qué no decirlo, la posibilidad de acceder a servicios de soporte y mejoras de pago. Nunca olvidemos que la estrategia comercial del Software Libre se basa en los servicios. Ocurre igual con otros productos Open Source de moda como Alfresco, Open Office, algunas distribuciones de Linux, Tomcat, Hibernate, JBoss y tantos otros…
No sé si estaré influenciado por el excelente nivel de mis compis en OpenCms. No sólo se han ido encargando de realizar las traducciones al castellano, sino que la verdad es que han desarrollado portales estupendos, permitiendo a usuarios de dudoso nivel técnico (pedían que se les enseñase a copiar y pegar, verídico) meter, por ejemplo, complejos mapas de Google con zonas sensibles que desplegaban vídeos Youtube y galerías de imágenes Lightbox. Sacar a la luz portales en una semana. Y experiencias super-interesantes técnicamente, como crear una infraestructura OpenCms 6 clonable, de forma que se puedan crear múltiples portales (en este caso, para Ayuntamientos de la provincia de Sevilla) en apenas un par de horas de desarrollo, y cambiado el estilo inyectando CSS (al estilo del proyecto CSS Zen Garden de Dave Shea). Dos ejemplos interesantes son la web del Ayuntamiento de Paradas y la del Ayuntamiento de Gelves. Cualquier curioso podrá observar que tienen el mismo HTML. Las últimas noticias que tenía es que más de 50 Ayuntamientos de la provincia están usando, o van a usar, esta tecnología que montamos para la Diputación de Sevilla.
Plataformas como OpenCms, Plone o el excelente Joomla (o Drupal, quizás ya muy desplazado por éste último) son buenas en sí mismas, pero los que las hacen buenas o malas en la realidad son los desarrolladores. Al igual que ocurre con un proyecto JSF, Struts2 o RubyOnRails, el conocimiento es el que marca la diferencia. El problema es que de vez en cuando, se encargan estudios y comparativas a personas que no han estudiado y comparado todas las plataformas, y que tienen claro el resultado objetivo antes de empezar. Para hacer una comparativa seria, debería fijarse un objetivo, y realizar un pequeño piloto con cada alternativa. Analizar diferentes parámetros: facilidad de desarrollo, flexibilidad, ajuste a las necesidades de los usuarios, estabilidad (pruebas de estrés, etc.). Así se puede escribir con propiedad y convencimiento que X es mejor que Y y peor que Z para esta necesidad y este caso concreto.
Siempre será más fácil destruir que construir. Decir «X es una mierda» cala mucho más que un discurso técnico que suele aburrir a todo interlocutor que no se interese tanto por la tecnología como el entusiasta friki que habla de las excelencias de un software complejo. En este caso, creo que OpenCms está sufriendo este tipo de campaña de desprestigio, cuando, como cualquier otra plataforma, los que las harán buenas o malas serán los desarrolladores.