Gentoo Logo

Renuncia de responsabilidad: La versión original de este artículo fue publicada por IBM developerWorks y es propiedad de Westtech Information Services. Este documento es una versión actualizada del artículo original y contiene mejoras introducidas por el Equipo de Documentación de Gentoo.
Este documento carece de soporte activo.


El rediseño de gentoo.org, Parte 2: El renacimiento de un sitio

Contenido:

1.  El sistema de documentación

Si ha leído la primera entrega de mi serie sobre el rediseño de gentoo.org, entonces sabrá que soy el arquitecto jefe de Gentoo Linux y me hago responsable del sitio Web Gentoo Linux. Y, ahora mismo, el sitio deja mucho que desear. Sí, parece atractivo, pero cuando se mira detrás de los cucos gráficos, se observará que realmente no atiende las necesidades de su público objetivo principal: los desarrolladores, usuarios y usuarios potenciales de Gentoo Linux.

Anteriormente, usé un enfoque de diseño centrado en el usuario para crear una lista de prioridades para el sitio, y entonces usé estas prioridades para crear un plan de acción para modernizar gentoo.org. Dos cosas eran las primeras en la lista de prioridades: nueva documentación para el desarrollador y una nueva lista de correo para comunicar a los desarrolladores los cambios realizados a nuestro repositorio CVS. Aunque que añadir la nueva lista de correo CVS era relativamente fácil (pero como verá más adelante, era más difícil de lo que había pensado), la nueva documentación del desarrollador requería mucha planificación y trabajo.

No solo necesitaba crear alguna documentación (una tarea que había estado ignorando durante demasiado tiempo), también había elegido una sintaxis XML oficial que nuestra documentación maestra usaría. Verá, hasta hacía unos pocos meses yo había estado creando la documentación en HTML puro. Esto era definitivamente una tarea bastante desagradable, porque haciendo esto, el contenido se había mezclado (la información real) con la presentación (las etiquetas HTML relacionadas con la visualización). ¿Y en qué acabó todo esto? Un jaleo inflexible, en eso acabó. Era duro editar la documentación y extremadamente difícil hacer mejoras HTML en todo el sitio.

En este artículo, orgullosamente demuestro la nueva solución flexible XML para la documentación. Pero primero, resumiré mi experiencia cuando añadí la lista de correo del registro CVS a nuestro sitio.

Añadiendo la lista de correo del registro CVS

El objetivo de la lista de correo de registro CVS es informar a los desarrolladores, de los nuevos commits realizados en nuestro repositorio. Ya que tenía instalado el gestor de listas de correo mailman (mire Recursos), pensé que crear esta nueva lista sería sencillo. Primero, simplemente crearía la lista de correo, entonces añadiría el "hook" apropiado al repositorio CVS de forma que los correos electrónicos pudieran ser generados automáticamente y enviados, describiendo los cambios a nuestros fuentes cuando estos se produjeran.

Primero comencé investigando un fichero especial en el CVSROOT de mi repositorio llamado "loginfo". Teóricamente, modificando este fichero, podría ordenar a CVS que ejecutara un guión cada vez que se realizaba un commit (y por lo tanto una modificación) en el repositorio. Por lo que creé un guión especial loginfo y lo conecté a mi repositorio actual. Y de hecho enviaba correos electrónicos a la nueva lista de correo "gentoo-cvs" cada vez que se realizaban modificaciones a nuestros fuentes.

Desafortunadamente, esta solución no era todo lo que yo esperaba. En primer lugar, generaba muchos mensajes de correo electrónico -- uno por cada fichero modificado -- y en segundo lugar, los mensajes eran crípticos ¡y en algunos casos incluso estaban vacíos!. Rápidamente eliminé mi guión loginfo y dejé el proyecto de la lista de correo gentoo-cvs en espera. Estaba claro que el hook para CVS loginfo no era apropiado para mis necesidades y lo pasé mal revisando cualquier información relacionada con loginfo que pudiera ayudarme a resolver el problema.

cvs2cl.pl

Algunas semanas más tarde, empecé a buscar una alternativa para loginfo. En esta ocasión de forma inteligente eché un vistazo a http://freshmeat.net. Allí encontré rápidamente lo que estaba buscando: el increíblemente maravilloso guión perl cvs2cl.pl disponible en http://red-bean.com (mire en Recursos). En lugar de usar el hook loginfo, cvs2cl.pl usa el comando cvs log para conectar directamente al repositorio y extraer la información del registro relevante y apropiada. También, en lugar de escupir mensajes de registro CVS relativamente crípticos, hace un gran trabajo en reformatearlo todo a un formato de ChangeLog legible.

Listado de Código 1.1: Salida generada por cvs2cl.pl

2001-04-09 20:58  drobbins
      * app-doc/gentoo-web/files/xml/dev.xml: new fixes
2001-04-09 20:47  drobbins
      * app-doc/gentoo-web/: gentoo-web-1.0.ebuild,
      files/pyhtml/index.pyhtml, files/xml/gentoo-howto.xml: new gentoo-howto
      fixes
2001-04-09 20:03  drobbins
      * app-doc/gentoo-web/files/xml/dev.xml: typo fix
2001-04-09 20:02  drobbins
      * app-doc/gentoo-web/files/pyhtml/index.pyhtml: little update

cvs2cl.pl también puede ser instruido para que genere salida en formato XML, y en mi próximo artículo, me aprovecharé de esto para incorporar un ChangeLog totalmente actualizado en la nueva sección de desarrollo de nuestro sitio.

El guión cvslog.sh

A continuación se muestra el guión que ahora uso para generar correos electrónicos diarios de ChangeLog. Primero, cambia el directorio actual de trabajo al lugar donde se encuentra el repositorio CVS a comprobar. Entonces, crea las variables de entorno $yesterday y $today que contienen las fechas apropiadas en formato RFC 822. Notar que ambas variables de fecha tienen puesta la hora a las "00:00" o medianoche. Estas variables son usadas alternativamente para crear la variable $cvsdate que es pasada al guión cvs2cl.pl para especificar el rango de fechas en el que estoy interesado -- el lapso de tiempo desde ayer a media noche hasta hoy a media noche. Así, la variable $cvsdate contiene un datespec que informa a cvs2cl.pl para que registre solo los cambios realizados el día de ayer, pero no otros.

Además, también creé una variable $nicedate (usada en el asunto del correo) y usé el mailer mutt (en modo compatibilidad con mailx [mire Recursos]) para enviar el correo a la lista de correo gentoo-cvs:

Listado de Código 1.2: Guión cvslog.sh

#!/bin/bash
cd /usr/portage
cvs -q update -dP
yesterday=`date -d "1 day ago 00:00" -R`
today=`date -d "00:00" -R`
cvsdate=-d\'${yesterday}\<${today}\'
nicedate=`date -d yesterday +"%d %b %Y %Z (%z)"`
/home/drobbins/gentoo/cvs2cl.pl -f /home/drobbins/gentoo/cvslog.txt -l "${cvsdate}"
mutt -x gentoo-cvs -s "cvs log for $nicedate" <\
/home/drobbins/gentoo/cvslog.txt

Usando cron, ejecutaba este guión cada día a media noche. Gracias a cvs2cl.pl mis desarrolladores ahora obtienen las actualizaciones realizadas en CVS de manera precisa y legible.

El proyecto de documentación

Ahora vamos por el proyecto de documentación de Gentoo Linux. Nuestro nuevo sistema de documentación envuelve dos grupos de personas o públicos objetivo: los creadores de la documentación y los lectores de la documentación. Los creadores necesitan una sintaxis XML bien diseñada que no se les cruce en el camino; los lectores, que no se preocupan del XML, quieren documentación generada en HTML que sea funcional y atractiva. El reto de la implementación es reunir un sistema completo que atienda las necesidades de los dos públicos. ¡Ah! y supongo que hay un tercer "público" -- yo, el webmaster y la persona diseñando el nuevo sistema. Ya que yo voy a interactuar con el nuevo sistema de documentación siempre que el sitio es actualizado, necesito que sea fiable y flexible.

El HTML preparado para la Web

Primero hablemos un poco sobre el HTML preparado para la Web que será generado a partir de los ficheros XML. Para hacer una documentación buena y legible, necesitaré tener soporte de las etiquetas XML apropiadas. Por ejemplo, la capacidad de insertar notas, mensajes importantes y advertencias en el cuerpo del documento (y mostrarlas de forma destacada en el HTML resultante) es imperativa. También debo ser capaz de insertar bloques de código, y sería bueno si las aportaciones del usuario real pudieran de alguna forma reflejarse en la salida del programa. Podría incluso añadir etiquetas que resaltaran los comentarios en el código fuente en un color alternativo de forma que los bloques de código fueran más legibles.

Los documentos deberían tener un índice (con hiperenlaces a los capítulos apropiados), una sinopsis, una fecha de revisión, versión y una lista de autores al comienzo del documento. Y, por supuesto, cada documento debería tener una cabecera en la primera parte de la página, conteniendo un pequeño logo de Gentoo Linux. Pinchar en este logo debería llevarte de vuelta a la página principal de Gentoo Linux. Y lo último pero no lo menos importante, cada documento debería tener un pie que contuviera información de copyright junto con un correo electrónico de contacto.

El fantástico nuevo logo

Esto era una sólida lista de requisitos, y decidí concentrarme en la parte más entretenida en primer lugar: el nuevo logo de Gentoo Linux que debía aparecer en la parte superior izquierda de cada documento de Gentoo Linux. Usé la "g" del gráfico de "gentoo" (creado usando el libre y excelente programa Blender 3D) en nuestra página principal como base para un logo más pequeño. Jugué un poco con los ajustes de extrusión y añadí un mapa de entorno chrome. Finalmente coloqué las luces y la cámara y el nuevo logo estaba terminado. Después de importarlo en Xara X (mire Recursos) y añadiendo algún texto, este fue el resultado:


Ilustración 1.1: El nuevo logo Gentoo Linux

Fig. 1

Usé este nuevo logo como inspiración para el resto de la combinación de colores HTML, usando un tema morado en todo momento. Hice bastante uso de las hojas de estilo en cascada (CSS) para controlar los atributos y el espaciado de las fuentes. Una vez que tenía preparado un prototipo decente, comencé a centrarme en las partes internas de la nueva documentación -- la nueva sintaxis XML. Quería que la sintaxis fuera tan simple como posible, por lo que creé las etiquetas XML justas para una organización apropiada del documento, pero no más. Entonces comencé a trabajar en las XSLT para transformar el XML en el HTML destino.

¡El resultado!

Después de muchos ajustes y unas buenas aportaciones de uno de mis desarrolladores, el nuevo sistema de documentación alcanzó el punto en el que estaba preparado para ser usado. Comencé a trabajar inmediatamente en nuestra primera guía de desarrollo, "La Guía de Documentación de Gentoo Linux" (xml-guide.html), que contiene una descripción completa del nuevo formato XML. No solo permitía esto a otros desarrolladores empezar a trabajar en el nuevo estilo de documentación, sino también servía a como un excelente ejemplo del nuevo sistema de documentación en acción. Asegúrese de leer esta guía para adquirir un conocimiento completo de nuestra nueva sintaxis XML.

DocBook vs. Guía

Si está trabajando en su propia solución para la documentación, querrá considerar también los formatos XML y SGML de DocBook (mire Recursos). DocBook está bien preparado para documentación técnica de gran escala y proyectos libro, es muy flexible y tiene muchas (quizá demasiadas) características. Además, existe un número de paquetes que pueden ser usados para convertir XML and SGML de DocBook a formatos como páginas man, texinfo, Postscript, PDF y por supuesto HTML.

No elegí DocBook ya que una sintaxis XML ligera atendería mejor las necesidades de Gentoo Linux. Ahora mismo, nuestra sintaxis de la guía XML tiene cerca de 20 etiquetas y unos 10 atributos. Un conjunto de etiquetas limitado hace que la guía XML sea fácilmente transformable en otros formatos como HTML y también asegura un cierto nivel de consistencia a lo largo del conjunto total de nuestra documentación, ya que el formato es muy simple. Como tengo mi propio formato XML, seré capaz de extender el formato con nuevas etiquetas según las necesite. Me gusta tener este nivel de control. Veo XML como una tecnología que debería ser usada por la gente para que estructurara sus datos de la forma que le resultara más sencilla. En otras palabras, la capacidad de definir tus propios elementos y atributos es algo precioso, y debo aprovecharme de ello. Después de todo, estoy definiendo una característica de XML.

Desde luego, crear tu propia sintaxis XML no es siempre la mejor solución, especialmente cuando el intercambio de datos es importante para. Entre todo el bombo publicitario de XML, una cosa que siempre se pasa por alto es que la conversión desde y a diferentes formatos XML puede ser extremadamente difícil. En muchos casos, los dos formatos no serán 100% compatibles, y tendrá la desagradable disyuntiva entre generar datos y/o metadatos, evitando intencionadamente el uso de ciertos elementos y atributos, o crear un "superformato" que adapte los datos y los metadatos para ambos formatos XML. En el mundo de la documentación, DocBook es una excelente opción como un "superformato" porque es muy flexible; puede fácilmente adaptar documentación importada de variedad de fuentes.

Sin embargo, la riqueza y la flexibilidad de DocBook puede también crear problemas. Por ejemplo, aporta cientos de etiquetas que nunca necesitará, y dando soporte a estas etiquetas en su XSLT puede hacer la conversión a otros formatos más difícil. Así, mientras DocBook es un excelente contenedor para documentación convertida desde otros formatos, su propia sintaxis XML minimalista podrá ser casi siempre fácilmente convertida a otros formatos.

Lo más importante es evaluar con cuidado cualquier solución potencial mientras se mantienen las necesidades de su público(s) objetivo en mente.

Envolviéndolo

Con el nuevo sistema de documentación funcionando, convertí todos nuestros documentos al nuevo formato y publique los nuevos documentos en nuestro sitio. Además, creé un enlace a la página de suscripción a la lista de correo gentoo-cvs. La clave aquí es que integraba estas características en el sitio de forma que los usuarios pudieran beneficiarse de las mejoras cuanto antes.

2.  Recursos

  • Lea los otros artículos de esta serie de developerWorks sobre el rediseño del sitio Web www.gentoo.org usando tecnologías como XML, XSLT, y Python:
    • En la Parte 1, el autor crea un plan centrado en el usuario y presenta pytext, un intérprete incrustado de Python (Marzo 2001).
    • En la Parte 3, crea un nuevo aspecto para el sitio (Julio 2001).
    • En la Parte 4, Daniel completa la conversión a XML/XSLT, corrige un montón de errores para el navegador Netscape 4.x, y añade al sitio un registro de cambios XML (Changelog) autogenerado (Agosto 2001).
  • Si no ha comenzado a usar Python aún, simplemente se está perjudicando a sí mismo. Pinche y compruébelo.
  • Xara.com es el lugar de Xara X -- un excelente paquete de dibujo vectorial para Windows. Sin apenas grandes pretensiones y una velocidad impresionante, obtiene mi recomendación personal.
  • Aprenda más sobre XSLT
  • Cuando despierte, pruebe Sablotron, un procesador XSLT rápido disponible en Gingerall
  • Puede encontrar el maravilloso guión cvs2cl.pl para convertir de CVS a ChangeLog en Red-Bean
  • Aprenda más de DocBook en http://www.docbook.org
  • Si está buscando un buen gestor de listas de correo, asegúrese de echar un vistazo a Mailman
  • Visite www.mutt.org para obtener la versión más reciente del cliente de correo electrónico Mutt.


Imprimir

Página actualizada 10 de octubre, 2005

Sumario: ¿Se ha levantado alguna vez por la mañana y se ha dado cuenta de que su sitio Web personal de desarrollo no es realmente tan bueno?. En este caso, está en buena compañía. En esta serie, Daniel Robbins comparte sus experiencias surgidas mientras rediseñaba el sitio www.gentoo.org usando tecnologías como XML, XSLT y Python. A lo largo de la serie, encontrará algunos enfoques excelentes que puede usar en su próximo rediseño de su sitio Web. En esta, la segunda entrega, Daniel muestra el nuevo sistema de documentación y pone en marcha una lista de correo diaria CVS-log.

Daniel Robbins
Autor

José María Alonso
Traductor

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.