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 1: El renacimiento de un sitio
1.
Una multitud rebelde
Compañero desarrollador de software. ¿Puedo hacerle una pregunta?. ¿Por qué
aunque a muchos de nosotros nos son íntimamente familiares las tecnologías
Web como HTML, CGI, Perl, Python, tecnologías Java y XML en nuestro propios
sitios Web -- los que están entregados a nuestros valiosos proyectos de
desarrollo -- tienen pinta de haber sido generados por una multitud de
chicos hiperactivos de 12 años?. ¿Por qué?. ¿Por qué sucede esto?
¿Podría ser porque la mayor parte del tiempo, hemos dejado que nuestro sitio
Web se pudra mientras derrochamos nuestro precioso tiempo hackeando nuestros
proyectos de software libre?. La respuesta, al menos en mi caso, es un "Sí"
rotundo.
Cuando no estoy escribiendo artículos para IBM developerWorks o soy padre de
nuevo, trabajo efervorecidamente en la siguiente revisión de Gentoo Linux,
con mi equipo de expertos voluntarios. Y sí, Gentoo Linux tiene su propio
sitio Web (mire en Recursos). A fecha de hoy (Marzo de 2001), nuestro sitio
Web no es muy especial; esto es porque no empleamos mucho tiempo trabajando
en él ya que normalmente estamos ocupados en mejorar el propio Gentoo
Linux. Seguro, nuestro sitio tiene varios logos realmente bonitos que
preparé rápidamente usando Xara X (mire en Recursos). Sin embargo, cuando se
mira con atención, nuestro sitio deja mucho que desear. Quizás el suyo
también. En este caso, tengo algo que decirle -- bienvenido al club.
2.
www.gentoo.org
En nuestro caso, el dilema en nuestro sitio Web existe porque nuestro
proyecto ha continuado creciendo y nuestro sitio Web no. Ahora que Gentoo
Linux se acerca a su revisión 1.0 (cuando esté disponible para no
desarrolladores) y esta ganando popularidad, necesitamos empezar a mirar
seriamente cómo nuestro sitio Web puede servir a sus usuarios. Aquí se
muestra una captura de pantalla de www.gentoo.org:
Ilustración 2.1: El estado actual (Marzo de 2001) de los asuntos en www.gentoo.org |
 |
Como puede ver, tenemos los mínimos exigibles -- una descripción de Gentoo
Linux, una lista de características, un registro de cambios (Changelog)
diario (actualizado automáticamente gracias a Python), y un puñado de
enlaces importantes (a los sitios de descarga, a las páginas de registro en
nuestra lista de correo y a cvsWeb). Tenemos también enlaces a los tres
recursos de documentación -- La Guía de Instalación y Desarrollo de Gentoo
Linux, y la Guía de Solución de Problemas de NVIDIA de Christian Zander.
Sin embargo, aunque el sitio parece correcto, carecemos de un montón de
cosas. La más obvia es la documentación -- nuestras guías de instalación y
desarrollo necesitan mucho trabajo. Y entonces necesitaremos añadir una
sección de FAQ, nuevos enlaces, nueva información de usuario... la lista es
interminable.
Contenido vs. visualización
Y ahora llegamos a nuestro segundo problema. Ahora mismo, todo nuestro
trabajo se realiza en HTML puro; yo mismo modifiqué a mano index.html hasta
que se mostrara correctamente. Incluso peor, nuestra documentación Web está
escrito en HTML puro. Esto no es bueno desde la perspectiva de un
desarrollador porque nuestro contenido (que consiste en párrafos, secciones,
capítulos) está enrevesado con un puñado de etiquetas HTML relacionadas con
la presentación. Esto, desde luego, hace difícil cambiar tanto el contenido
como el aspecto de nuestro sitio. Aunque este enfoque ha funcionado hasta
hoy, está predestinado a causar problemas, ya que nuestro sitio continuará
creciendo.
Claramente, necesitábamos usar mejores tecnologías detrás del escenario. En
lugar de usar HTML directamente, necesitábamos comenzar a usar cosas como
XML, XSLT y Python. El objetivo es automatizar tanto como sea posible para
que podamos añadir y expandir nuestro sitio fácilmente. Si hacemos nuestro
trabajo bien, incluso los cambios de mayor importancia en nuestro sitio,
deberían de ser relativamente fáciles.
¡Una estrategia!
Estaba claro que teníamos mucho trabajo por delante. De hecho, había tanto
por hacer que no sabía por donde empezar. Mientras estaba tratando de
ordenarlo todo en mi cabeza, encontré por casualidad la columna de Laura
Wonnacott's en InfoWorld "Site Savvy" (mire en
Recursos). En ella, explica el concepto de
diseño centrado en el usuario ("user-centric" design) -- cómo mejorar un
sitio Web mientras se mantienen las necesidades de su público objetivo
(en este caso los usuarios y desarrolladores de Gentoo Linux) en mente.
Leer el artículo y echar un vistazo al enlace "Manual de Diseño Centrado
en el Usuario" me ayudó a formular una estrategia -- un plan de acción --
para el rediseño:
-
Primero, defina claramente la meta oficial del sitio Web --
escribiéndolo. ¿Para qué esta allí?, y ¿qué se supone que tiene que hacer?
-
Identifique las diferentes categorías de usuarios que entran en su sitio --
su público objetivo. Ordénelos por prioridad: ¿Cuáles son los más
importantes?
-
Ponga en marcha un sistema para recoger las aportaciones de su público
objetivo, de modo que puedan hacerle saber lo que está bien y lo que está
mal.
-
Evalúe estas aportaciones y úselas para determinar qué partes del sitio
necesitan ser mejoradas o rediseñadas. Aborde las secciones de mayor
prioridad en primer lugar.
-
Una vez seleccionada la parte del sitio a mejorar, ¡póngase a
trabajar!. Durante la implementación, asegúrese de que el contenido y el
diseño de la nueva sección atiende específicamente las necesidades de su
público objetivo y corrige todas las deficiencias conocidas.
-
Cuando se ha completado el rediseño de la sección, añádalo a su sitio,
incluso si tiene un aspecto que es marcadamente diferente de su sitio
actual. De esta forma, sus usuarios pueden empezar a beneficiarse de la
nueva sección rediseñada de forma inmediata. Si hay algún problema con el
rediseño, tendrá que recoger comentarios de los usuarios
rápidamente. Finalmente, realizando mejoras incrementales a su sitio (en
lugar de modernizar el sitio completamente y desarrollando todo de una vez
-- ¡sorpresa!) le ayudará a evitar que sus usuarios tengan la sensación de
ser alienados por los (posiblemente dramáticos) cambios que ha realizado.
- Después de completar el paso 6, salte al paso 4 y repita.
El enunciado de misión
Me hizo ilusión descubrir que teníamos el paso 3 resuelto. Habíamos recibido
varias sugerencias por correo electrónico de los invitados del sitio y
nuestra lista de correo de desarrollo también sirvió como forma de
intercambiar sugerencias y comentarios. Sin embargo, nunca completé
realmente los pasos 1 y 2. Aunque las respuestas pueden parecer obvias,
encontré de gran ayuda sentarme y escribir nuestro enunciado de misión:
www.gentoo.org existe para ayudar a aquellos que usen y desarrollen Gentoo
Linux aportando información relevante y actualizada acerca de Gentoo Linux y
Linux en general, enfocando en aspectos relacionando con la instalación, el
uso, la administración y el desarrollo de Gentoo Linux. Como el punto
central de todos los asuntos Gentoo, el sitio debía ofrecer noticias
importantes relevantes para los usuarios y desarrolladores de Gentoo
Linux. Además de atender a los usuarios y desarrolladores de Gentoo Linux,
www.gentoo.org tiene el propósito secundario de atender a las necesidades de
los usuarios potenciales de Gentoo Linux, ofreciendo la información que
necesitan para decidir si Gentoo Linux es apropiado para ellos.
El público objetivo
Hasta aquí bien. Ahora a por el paso 2 -- definiendo nuestro público
objetivo:
www.gentoo.org tiene tres públicos objetivo -- los desarrolladores, los
usuarios y los usuarios potenciales de Gentoo Linux. Aunque ningún grupo
tiene absolutamente mayor prioridad que otro, actualmente las necesidades de
los desarrolladores de Gentoo Linux son nuestra mayor prioridad, seguidos de
los usuarios de Gentoo Linux y los usuarios potenciales. Esto es debido a
que Gentoo Linux se encuentra actualmente en un estado de
pre-revisión. Cuando Gentoo Linux alcance la versión 1.0, los usuarios de
Gentoo Linux y los usuarios potenciales se convertirán también en
prioritarios.
Comentarios y sugerencias
De acuerdo, ahora es el momento de evaluar las sugerencias y los comentarios
que hemos recogido:
A lo largo de los últimos meses, hemos recibido un gran número de
sugerencias de los visitantes del sitio Web. De manera aplastante, la gente
esta solicitando mejor documentación -- tanto para desarrolladores como para
usuarios. Varios desarrolladores han preguntado si podrían crear un lista de
correo que fuera dedicada exclusivamente a describir los commits en CVS.
Como nota interesante, hemos recibido también un par de correos preguntando
si Gentoo Linux es un producto comercial o libre. Creo que es porque en
nuestro logo principal esta inscrito el nombre "Gentoo Technologies, Inc."
(el nombre legal de nuestra corporación). La gente asume que tenemos un
enfoque comercial. Modificando nuestro logo para que se lea "Gentoo Linux" y
añadiendo un pequeño párrafo a la página principal explicando que somos un
proyecto de software libre, podría ayudar.
La lista de mejoras
De acuerdo, ahora convirtamos estas sugerencias en una lista de posibles
mejoras:
- Modernizando la página principal
- Implementación: actualizar el logo y añadir la nota publicitaria
de software libre
- Objetivo: dejar bien claro que somos un proyecto de software
libre
- Público objetivo: usuarios potenciales
- Dificultad: media
- Mejorar la documentación básica de usuario
- Implementación: nuevo sistema XML/XSL, documentación prolija
- Objetivo: hacer más fácil a los usuarios instalar Gentoo Linux
- Público objetivo: usuarios nuevos
- Dificultad: media
- Mejorar/crear documentación para el desarrollador
- Implementación: nuevo sistema XML/XSL, guía CVS, guía de
desarrollo, guía de Portage
- Objetivo: ayudar a nuestros desarrolladores a hacer un mejor
trabajo
- Público objetivo: desarrolladores
- Dificultad: alta
- Añadir una lista de correo CVS
- Implementación: usar nuestro actual gestor de listas de correo
mailman
- Objetivo: informar mejor a nuestros desarrolladores
- Público objetivo: desarrolladores
- Dificultad: fácil
¡Una selección!
Dos cosas resaltaban en la lista por razones diferentes. La primera es la
lista de correo CVS -- esta es trivial porque es muy fácil de implementar. A
menudo, tiene sentido implementar los cambios más sencillos en primer lugar,
de manera que los usuarios se puedan beneficiar cuanto antes.
La segunda gran cosa que salta a la vista de la lista es la necesidad de
documentación para el desarrollador. Este es un proyecto a largo plazo que
requiere mucho más trabajo. En mis conversaciones con otros desarrolladores
parecía que todos estábamos de acuerdo que algún tipo de enfoque XML/XSL es
la solución correcta.
El prototipo XML/XSL
Para ayudar a que el proceso comenzara, desarrollé una sintaxis prototipo de
XML para ser usada en toda nuestra documentación en línea. Usando esta
sintaxis XML (llamada "guía"), nuestra documentación estará claramente
organizada en párrafos, secciones y capítulos (usando etiquetas XML como
<section>, <chapter>, etc.) mientras se mantiene libre de
cualquier etiqueta relacionada con la visualización. Para crear el HTML a
mostrar en nuestro sitio, creé algunas transformadas XSL prototipo. Usando
un procesador XSLT como Sablotron, nuestros ficheros guía XML pueden ser
convertidos en HTML de la forma que sigue:
Listado de Código 2.1: Convirtiendo ficheros guía XML a HTML |
devguide.xml + guide.xsl ---procesador XSLT---> devguide.html
|
Lo grande de este enfoque XML/XSLT es que separa nuestro contenido en bruto
(XML) de la información relacionada con la visualización contenida en el
fichero guide.xsl (XSLT). Si necesitáramos actualizar el aspecto de nuestras
páginas Web, simplemente modificaríamos el fichero guide.xsl y ejecutaríamos
todo nuestro XML con el procesador XSLT (Sablotron), creando páginas HTML
actualizadas. O, si necesitamos añadir nuevos capítulos a la guía de
desarrollo, podemos modificar devguide.xml. Una vez lo hayamos hecho,
corremos el XML con Sablotron, el cual genera un fichero completamente
formateado devguide.html, con algunos capítulos añadidos. Piense en XML como
el contenido y XSLT como las macros relacionadas con el formateo y la
visualización.
Aunque nuestro equipo completo está convencido de que XML/XSLT es la forma
de hacer las cosas, aún no nos hemos puesto de acuerdo acerca de una
sintaxis XML oficial. Achim, nuestro líder de desarrollo, sugirió que
usáramos docbook en lugar de desarrollar nuestra propia sintaxis XML. Sin
embargo, el formato prototipo de guía XML ha ayudado a comenzar el proceso
de toma de decisiones. Ya que nosotros, los desarrolladores, vamos a ser los
que usemos el XML/XSL a diario, es importante elegir una solución con la que
estemos cómodos y cubra todas nuestras necesidades. En mi próximo artículo
debería tener un sistema de documentación XML/XSL que mostrarle.
Demostración tecnológica: pytext
En mayor parte, nuestro sitio Web no está usando ninguna tecnología nueva o
de última moda que merezca la pena nombrar. Sin embargo, hay una notable
excepción -- nuestro pequeño intérprete de Python incrustado: pytext.
Como muchos, soy un grandísimo fan de Python y lo prefiero bastante a
otros lenguajes interpretados, por eso cuando llegó el momento de añadir
algún contenido dinámico a nuestro sitio Web, naturalmente quería usar
Python. Y, como probablemente sabe, cuando se codifica contenido HTML
dinámico, es normalmente más conveniente incrustar los comandos del lenguaje
dentro del HTML, en lugar de hacerlo al contrario. Por eso la necesidad de
un intérprete de Python incrustado para tomar un documento como éste:
Listado de Código 2.2: Documento fuente |
<p>
Sí, claro; tengo algunas preguntas:<br>
<!--code
names=["bob","jimmy","ralph"]
items=["calcetín","almuerzo","acordeón"]
for x in items:
for y in names:
print "¿Alguien ha visto el ",x+"de",y+"?<br>"
-->
Ves, te lo dije.
|
....Y transformarlo en esto:
Listado de Código 2.3: Documento destino |
<p>
Si claro; tengo algunas preguntas más:<br>
¿Alguien ha visto el calcetín de bob?<br>
¿Alguien ha visto el calcetín de jimmy?<br>
¿Alguien ha visto el calcetín de ralph?<br>
¿Alguien ha visto el almuerzo de bob?<br>
¿Alguien ha visto el almuerzo de jimmy?<br>
¿Alguien ha visto el almuerzo de ralph?<br>
¿Alguien ha visto el acordeón de bob?<br>
¿Alguien ha visto el acordeón de jimmy?<br>
¿Alguien ha visto el acordeón de ralph?<br>
Ves, te lo dije.
|
Aquí está el código fuente para pytext:
Listado de Código 2.4: El intérprete incrustado de Python pytext |
#!/usr/bin/env python
# pytext 2.1
# Copyright 1999-2001 Daniel Robbins
# Distributed under the GPL
import sys
def runfile(myarg):
"interprets a text file with embedded elements"
mylocals={}
try:
a=open(myarg,'r')
except IOError:
sys.stderr.write("!!! Error opening "+myarg+"!\n")
return
mylines=a.readlines()
a.close()
pos=0
while pos<len(mylines):
if mylines[pos][0:8]=="<!--code":
mycode=""
pos=pos+1
while (pos<len(mylines)) and (mylines[pos][0:3]!="-->"):
mycode=mycode+mylines[pos]
pos=pos+1
exec(mycode,globals(),mylocals)
else:
sys.stdout.write(mylines[pos])
pos=pos+1
if len(sys.argv)>1:
for x in sys.argv[1:]:
runfile(x)
sys.exit(0)
else:
sys.stderr.write
("pytext 2.1 -- Copyright 1999-2001 Daniel Robbins. ")
sys.stderr.write
("Distributed under the\nGNU Public License\n\n")
sys.stderr.write
("Usage: "+sys.argv[0]+" file0 [file1]...\n")
sys.exit(1)
|
Cómo funciona pytext
Aquí se muestra cómo trabaja. Escanea cada línea de entrada, la mayor parte
del tiempo cada línea de entrada es simplemente enviada a stdout. Sin
embargo, si pytext encuentra una línea que comienza por <!--code entonces
el contenido de cada línea hasta la primera línea que comienza por -->
son añadidas a una cadena llamada mycode. Pytext entonces ejecuta la cadena
mycode usando la función built-in exec(), creando efectivamente un
intérprete de Python.
Hay algo realmente bonito en esta implementación en particular -- llamamos a
exec() de una forma en la que todas las modificaciones a los espacios de
nombres tanto globales como locales son guardados. Esto hace posible
importar un módulo o definir una variable en un bloque incrustado, y
entonces acceder a este objeto creado previamente en un bloque posterior,
como este ejemplo claramente demuestra:
Listado de Código 2.5: Código ejemplo |
<!--code
import os
foo=23
-->
Hola
<!--code
print foo
if os.path.exists("/tmp/mytmpfile"):
print "Existe"
else:
print "No lo veo"
-->
|
Útil ¿no?, pytext es una excelente demostración de la potencia de Python y
es una herramienta extremadamente útil para los fans de Python. En nuestro
sitio actual, llamamos a python desde una tarea cron, usándolo
periódicamente para generar el código HTML para nuestra página principal del
registro de cambios (Changelog):
Listado de Código 2.6: Generando el código HTML para nuestra página principal |
pytext index.ehtml > index.html
|
Eso es todo por ahora; ¡le veré la próxima ocasión en la que echaremos un
vistazo a la primera etapa del rediseño de www.gentoo.org!
3.
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 2,
Daniel nos muestra el nuevo sistema de documentación y pone en
marcha una lista de correo diaria CVS-log (Mayo 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. Encuéntrelo en http://www.python.org.
-
La columna
Site Savvy de Laura Wonnacotr aparece regularmente en
InfoWorld.com.
-
Eche un vistazo a Xara.com, 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 acerca de XSLT en http://www.xslt.com
-
Cuando despierte, pruebe Sablotron, un procesador XSLT rápido disponible
en Gingerall
|
|
Página actualizada 10 de octubre, 2005 |
Sumario:
¿Se ha levantado alguna vez por la mañana y de repente se ha dado cuenta de
que su pequeño y cuco 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 este artículo, Daniel crea un plan de acción
centrado en el usuario e introduce pytext, un intérprete de Python
incrustado.
|
Daniel Robbins
Autor
José María Alonso
Traductor
|
|
Donate to support our development efforts.
|
|
|