Sistema de publicación y servicios web

slash es un software que ha sufrido una gran evolución a lo largo del tiempo, algo que se nota en lo bien que está organizado el software, el código fuente, las tablas de SQL y todos los elementos que lo forman. Incluso a nivel de documentación, gran parte de las librerías están documentadas, así como las distintas utilidades que forman el sistema. El software dispone de múltiples herramientas de apoya para facilitar las labores de administración haciendo que todo el entorno sea muy sencillo de mantener.

El núcleo de slash lo forman un conjunto de librerías comúnes. En el siguiente gráfico podemos observar dicha organización tras la última restructuración de las mismas en slash 2.2, versión conocida como Fry, y que se usa actualmente en Slashdot.

Figura 1. Organización de las librerías de slash

Como vemos en la figura, aparecen cláramente separadas las librerías de acceso a base de datos (Slash::DB), de visualización de datos al usuario (Slash::Display) y de lógica de funcionamiento del sistema (Slash y Slash::Utility). Podemos también citar a Slash::Apache, una unión íntima entre Apache y Perl, que permite desde los módulos Perl controlar con gran detalle el funcionamiento de Apache.

Slash::DB define una interfaz de acceso a base de datos, que debe ser implementada para todas las bases de datos con las que se quiere que el sistema funcione. En la actualidad sólo MySQL tiene un soporte completo, aunque tanto Postgres como Oracle tienen ya versiones bastante avanzadas.

Slash::Display hace uso intensivo del Template Toolkit, un sistema de plantilla para Perl que ha buscado como objetivos ser extensibles y tener un gran rendimiento. Todo el HTML que se ve en el sistema slash está basado en estas plantillas, no apareciendo nada de este código dentro de los servlets Perl o las librerías de Slash. Es sin duda el subsistema más potente de slash y donde se ha invertido un enorme trabajo.

Slash y Slash::Utility contienen toda la lógica de funcionamiento del sistema, y ofrecen un API de programación para todos los servlets que implementan el funcionamiento del sistema, así como para los plugins (extensiones) que se pueden desarrollar de forma rápida y sencilla para aumentar la funcionalidad de slashcode.

La arquitectura de slashcode 2.0 se divide en tres partes: librerías de soporte a la arquitectura (API slashcode), sistema de presentación de los datos basado en Template Toolkit y almacenamiento en base de datos utilizando un sistema de caché para optimizar su uso.