lunes, 12 de marzo de 2012

Joomla: breve evaluación

Recientemente he tenido la ocasión de desarrollar un sitio web con el gestor de contenidos Joomla (versión 1.7 - spanish) y he decidido evaluar los pros y contras del producto en esta entrada del blog. 

[Instalación]

La versión instalada en este caso ha sido la 1.7-spanish (para garantizar la compatibilidad con el idioma español, pese a estar en inglés). En este aspecto, hay que destacar que no he detectado ningún problema de incorrecta traducción y, por tanto, el uso de esta versión es apto tanto para inglés como para español. El problema es que el site sólo puede estar en un idioma (el package básico no incluye opción de internacionalización de contenidos). 

Respecto a la instalación de Joomla, hay que destacar que el proceso se realiza mediante un asistente web que facilita enormemente la tarea, pero uno puede encontrarse con ciertas dificultades en caso de instalar el gestor de contenidos en un servidor del que no somos administradores (como pasará mayoritariamente si optamos por empresas que ofrecen servicios de hosting). Gran parte de esas dificultades se resuelven indicando en el instalador rutas relativas a los recursos en lugar de rutas absolutas (solucionando así problemas de falta de permisos). A pesar de la estrategia usada para evitar este problema, nos podemos encontrar con problemas adicionales (falta de acceso a sendmail, ftp deshabilitado, etc).  

[Plantillas y extensiones]

Joomla es un gestor de contenidos open source (desarrollado con PHP) totalmente gratuito. Lamentablemente, no se puede decir lo mismo de las múltiples plantillas de estilo y extensiones (módulos y plugins), ya que, mayoritariamente, son versiones comerciales (y las versiones gratuitas, salvo contadas excepciones, aportan sobre todo bugs). 

Las plantillas Joomla permiten definir el diseño del sitio web (estructura y look&feel), separando el núcleo de gestión de contenidos, de su aspecto visual. 

Para extender el conjunto de funcionalidades básicas de Joomla, se usan módulos, componentes y plugins

Los módulos son extensiones funcionales configurables y asignables a una única zona de la estructura web (excepto la zona de contenidos). Su visualización es configurable a nivel de página (pero su ubicación es fija).

Los componentes son análogos a los módulos, pero su asignación está reservada a la zona de contenidos. 

Los plugins son extensiones de funcionalidad aplicables a un subconjunto de los contenidos mediante directivas de preprocesado denominadas mambots (por ejemplo: {unplugin}datos a tratar{/unplugin}). Su funcionalidad sería similar a la de un filtro de la especificación Servlet.  

En general, las plantillas usan elementos no estandarizados (por ejemplo: usar directamente eventos en Javascript sin utilizar un framework que haga de intermediario). Esto provoca que se produzcan incompatibilidades entre plantillas, componentes y módulos, e inhabilita en muchos casos la posibilidad de usar buenos frameworks, como por ejemplo, jQuery No sería una mala idea incluir con el paquete básico de Joomla un conjunto de frameworks Javascript que estandaricen el método de diseño de plantillas y la interacción con las mismas. 

Por otro lado, las plantillas son de diseño bastante rígido, y no es tarea sencilla modificar algunos aspectos de las mismas (en muchos casos, requiere modificar código PHP para cambiar el aspecto visual del sitio web).

Respecto a los módulos, componentes y plugins, el principal problema es que la mayoría son de carácter comercial, y los que son gratuitos y útiles se pueden contar con los dedos de una mano.

En referencia a la separación entre núcleo y extensiones (y dentro de éstas últimas, la separación entre plantillas, módulos, componenets y plugins) me parece un gran acierto, que facilita la actualización a la carta y mantiene claramente separados los distintos elementos que componen el sitio web.

[Roles y permisos]

Bajo mi punto, de vista, uno de los mejores aspectos de Joomla es su amplia gama de roles asignables a los usuarios (super usuarios, editores, etc), así como una excelente gestión de permisos, aplicables a artículos, módulos, ... 

Por otro lado, los componentes del núcleo de Joomla están diseñados para garantizar un nivel de seguridad bastante bueno (control de expiración de sesión, control de páginas cache mediante tokens ocultos, control de envío de artículos por mail también mediante tokens ocultos...).

[Funcionalidades]

Uno de los mejores aspectos de Joomla es que ofrece exactamente el conjunto de funcionalidades necesarias para la gestión de contenidos: gestión de menús, gestión de artículos, clasificación de artículos en categorías, gestión de usuarios y permisos... Las particularidades de cada sitio web pueden añadirse fácilmente mediante extensiones, por lo que me parece un producto de funcionalidades claras y bien definidas. 

[Bugs]

Uno de los peores aspectos de Joomla es que presenta algunos bugs que pueden llegar a ser graves (dependiendo de la versión utilizada). A modo de ejemplo, en la versión 1.7-spanish he detectado los siguientes errores: 
  • La funcionalidad friendly-url para optimización SEO provoca errores en algunos enlaces, por lo que hay que desactivarla para evitarlos (por tanto, se pierde la funcionalidad). 
  • En algún caso se ha producido un bloqueo en la tabla de sesiones de usuario (seguramente debido a accesos concurrentes), de manera que ha habido que repararla mediante phpmyadmin porque estaba bloqueada (y nadie podía acceder al sitio web).
  • Durante la edición de contenidos, en alguna ocasión caduca la conexión, teniendo que actualizar la petición para realizar la tarea inicialmente indicada.
En general, cualquier producto suele presentar errores, pero en este caso, Joomla presenta algunos errores que pueden ser graves, como la indisponibilidad de acceso al sitio en caso de errores de acceso concurrente.

[Conclusiones]

En conclusión, bajo mi punto de vista (basado en mi experiencia, anteriormente descrita), Joomla presenta los siguientes pros y contras:
  • Ventajas:
    • La instalación es gestionada por un asistente web que facilita el proceso. 
    • Existe una clara separación entre funcionalidad básica, diseño del sitio web y extensiones (módulos, componentes y plugins).
    • La configuración y el control de acceso a contenidos mediante roles y permisos son fáciles de definir.
    • Proporciona las funcionalidades necesarias para la gestión de contenidos (no falta ni sobra nada), pero también permite añadir funcionalidades específicas mediante extensiones.
    • El rendimiento del gestor de contenidos, en general, es bueno.
    • La edición y publicación de contenidos puede realizarse eficientemente, una vez instalado y configurado el gestor de contenidos. 
  • Desventajas:  
    • No proporciona soporte base para la internacionalización del sitio web. 
    • La instalación puede presentar problemas en caso de no ser administrador del servidor (caso de outsourcing del hosting).
    • Las plantillas existentes gratuitas son escasas, y adaptarlas o modificarlas es una tarea difícil (son de diseño rígido).
    • Los módulos, componentes y plugins gratuitos y útiles también son escasos (la mayoría son comerciales), y modificarlos o adaptarlos es una tarea compleja. 
    • Dependiendo de la versión, presenta algunos bugs que pueden ser graves.
    • El diseño técnico del gestor de contenidos no incluye frameworks que estandaricen el desarrollo de extensiones, lo que puede dar lugar a incompatibilidades entre extensiones.
    • El paquete básico no proporciona ninguna utilidad de backup.
    • En caso de realizar backups, se deben realizar tanto de los ficheros del sistema de directorios como de la estructura y contenido de las tablas de la base de datos (el contenido no está centralizado).