Barcino

Barcino es el nombre en clave que le he dado al código que estoy escribiendo para reemplazar a la instalación de Drupal en BarnaCity. Serán muy pocas líneas de código, escritas en PHP, y por dentro será totalmente distinto, ya que el propósito de Barcino es mucho más limitado, pero sobretodo mucho más especializado que el de Drupal. A pesar de todo, se mantendrá la compatibilidad con las direcciones anteriores, ya que los URIs jamás deberían cambiar.

El nombre de mi bitácora, viene de un cómic futurista llamado Fanhunter, en el que la ciudad de Barcelona, ha sido rebautizada como Barnacity. Puesto que Barcino es el nombre que tenía Barcelona en tiempos de la ocupación romana (tiempos pasados en lugar de tiempos futuros), se me ocurrió que este era el nombre perfecto para este sistema.

Concepto
Tomará muchas ideas de Blosxom y sus derivados. El contenido estará guardado en archivos de texto, no en una base de datos. Al contrario que en otros sistemas, cada escrito no será texto plano, sino que se basará en XHTML válido. Las páginas se generarán de forma dinámica en PHP, pero habrá partes generadas estáticamente por motivos de rendimiento.

URLs
Los URLs deben ser elegantes y accesibles. La dirección de cada entrada, será el nombre del archivo que la contenga, eliminando la terminación (lo que vaya después del punto). Aún por decidir si se permitirán carácteres fuera del conjunto ASCII, y en caso afirmativo la forma correcta de interpretarlos. Ver referencia del W3C.

Almacenamiento de las entradas
No se usará ninguna base de datos. Un directorio contiene las entradas, y cada entrada es un archivo XML bien formado. Es imprescindible que esté bien formado para poder luego acceder a él usando el Document Object Model. El vocabulario más natural para usar, lógicamente es XHTML, y debe ser completamente válido. Esto contrasta con el horrendo formato intermedio que tiene por ejemplo pyblosxom. En lugar de añadir comentarios con pares de valores para los metadatos, en Barcino se añadirán en la cabecera HTML. Por ejemplo, cada vez que se publica una entrada en la bitácora, tal y como está configurado ahora mismo Drupal, pide lo siguiente:


 * Autor : Usuario que ha creado (¿o modificado?) la entrada. Esto es claramente innecesario en Barcino, pero puede ser reemplazado fácilmente usando Dublin Core en el encabezado, por ejemplo, con
 * Fecha : Momento en que se ha creado la entrada. En esto, Drupal es claramente inferior, ya que no saca partido de lo que los agregadores de noticias pueden hacer. En Barcino se usará usará, que usa una fecha (¡y hora!) en formato ISO 8601.
 * Título : Título de la entrada. En Barcino se usará obviamente el elemento . El sistema debe añadir al título el nombre de la bitácora cuando se muestre la página.
 * Alias de ruta : la parte de la ruta en el URL. En Barcino se usará el nombre del archivo, pero también está definido en Dublin Core, así que es otra posibilidad.
 * Estado de los comentarios : Permite activar, desactivar, o pasar a sólo lectura los comentarios. En esto Drupal es claramente superior, porque Barcino no tendrá comentarios de momento.
 * Idioma : Esto por supuesto no está por defecto en Drupal (gran defecto), sino que es una taxonomía. En Barcino estará en el atributo.
 * Tema : Taxonomía para el asunto o asuntos de que trata el texto. Aún no está totalmente decidido como hacer esto. Pybloxom usa directorios, lo que es tremendamente fácil, pero poco flexible, ya que no permite que un texto esté en dos categorías al mismo tiempo, y los enlaces no facilitarían casi nada.
 * Cuerpo : Estará en el elemento  del HTML.
 * Formato de entrada : No aplicable. Será siempre HTML válido.

El usuario debe ver, para cada entrada, lo mismo que si se enviara el documento tal cual, pero con ciertos añadidos: el título, y otra metainformación, debe ser añadida o modificada por el sistema; y justo antes y justo después de la entrada, deben haber ciertos fragmentos de HTML con cabecera, barras laterales, pie, etc.

Licencia y liberación
La licencia, será por supuesto una licencia de software libre, pero no sé aún cual es más conveniente. Lo ideal sería GPL en su versión 3, pero esta licencia no estará lista en mucho tiempo, así que las alternativas son GPL en su versión 2, o Affero GPL.

La liberación se hará cuando el código esté listo para ser visible sin arruinar mi reputación. Intentaré que esté en producción para la segunda semana de noviembre, para el tercer año de BarnaCity, pero será muy difícil. Tras probarlo suficientemente, me plantearé liberar un paquete de fuentes, ya que hacer visible al público el repositorio implicará mucho trabajo.