featured image

En mi búsqueda de material (software sobre todo) realizado en Erlang para poder aprender mucho más sobre este lenguaje, sus virtudes, carencias y potencias, he topado con otra muy buena pieza de software: Zotonic, un CMS hecho en Erlang.

¿Qué es un CMS exactamente?

Un CMS es un sistema de administración de contenido (Content Management System), básicamente. Zotonic se centra en esto mismo, administrar el contenido de la web que está sirviendo. A diferencia de otros CMS realizados en otros lenguajes, Zotonic tiene la ventaja de ejecutarse en una máquina que permite la ejecución de software fuera de la petición.

Por ejemplo, en otros lenguajes como Ruby, Python, Perl o PHP, cuando una petición HTTP llega al sistema establece el contexto de ejecución (sesión, cookies, datos de la solicitud, etc.) y tras su respuesta, el contexto es liberado (o volcado a la memoria secundaria), con lo que, es imposible mantener una ejecución paralela que dispare el sistema.

Es más, hay herramientas como delayed::job (en Ruby) o DJJob (en PHP), precisamente para paliar un poco esto.

Sin embargo, Zotonic, tiene como ventaja el hecho de que puede disparar la ejecución de un proceso no dependiente de la solicitud que almacene su resultado en una cola de mensajes que sea descargada por el sistema AJAX de la vista para mostrarlos en el momento que sea necesario. Esto le da a Zotonic una sensación de rapidez y paralelismo que pocos entornos web tienen hoy en día.

¿Qué ofrece Zotonic?

En principio, Zotonic se puede instalar en una máquina o en varias (en clúster) manteniendo una única interfaz de administración y pudiendo balancear entre todas el acceso, de forma fácil y transparente. Además, cada clúster puede administrar varios dominios:

Ejemplo de gestión de dominios con Zotonic

Su interfaz es muy parecida a WordPress, y permite igualmente escribir páginas y entradas de modo que se puedan emplear como páginas del propio sitio web. Su editor se ve así:

Editor de contenido de Zotonic

Como base de datos emplea PostgreSQL, y la forma de programar las plantillas es mediante el estándar de Django Template Library (DTL), lo cual facilita la creación de las vistas enormemente. Se puede revisar la documentación que, aunque el tema de las plantillas las trata poco (realmente es porque su simpleza no requiere de mayor información) es una sección de la web bastante extensa conteniendo temas como: SSL, Modelo de Datos, información sobre Erlang, PostgreSQL, conexión Ajax con Zotonic, mensajes Growl, etc.

Una lista bastante extensa y detallada de las características puede verse aquí (en inglés).

Instalando Zotonic

Se puede descargar en cualquier ruta de nuestro equipo, realmente, con el comando:

git clone git://github.com/zotonic/zotonic.git

Esto nos deja un entorno limpio con el que podemos hacer nuestra primera instalación. Por ejemplo, si ponemos en nuestro fichero /etc/hosts al lado de localhost la palabra miblog, podremos escribir lo siguiente:

make
bin/zotonic -s blog miblog
./start.sh

Ahora, solo tendremos que ir a un navegador, si ponemos la URL http://localhost:8000, veremos la interfaz de los dominios que tenemos en ejecución. Solo dispondremos, en estos momentos de miblog, por lo que, como lo hemos puesto en nuestro fichero de hosts, podemos seguir ese enlace y ver la web de nuestro sitio.

Si accedemos por la URL http://miblog:8000/admin/, nos preguntará por el login de acceso y contraseña. Este será, en principio (deberemos de cambiarlo): admin / admin; tras esto, se nos presentan todas las opciones disponibles de Zotonic ¡y en castellano!

Todo queda bastante claro y muy fácil de manejar, a excepción de las plantillas, las cuales solo se pueden modificar a través de la edición de los ficheros en el directorio donde se haya creado el dominio. En este caso, como hemos creado el dominio miblog, la ruta será: priv/sites/miblog/templates.

Conclusiones

Zotonic se ha convertido en poco tiempo en un CMS con amplias características y muy usado en el mundo del web, aunque no tanto como otros que llevan más tiempo como por ejemplo Zope, Drupal o Joomla, pero poco a poco, gracias a sus características propias de alta disponibilidad, redundancia y escalabilidad, de seguro comenzará a ser cada vez más popular.