Gentoo Logo

Disclaimer : La versione originale di questo articolo è stata pubblicata da IBM developerWorks ed è di proprietà di Westtech Information Services. Questo documento è una versione aggiornata dell'articolo originale, e contiene numerosi miglioramenti apportati dal Gentoo Linux Documentation team.
Questo documento non è mantenuto attivamente.


Riprogettare gentoo.org, Parte 2: la rinascita di un sito web

Indice:

1.  Il sistema di documentazione

Se avete letto la prima parte della mia serie di articoli sulla riprogettazione di gentoo.org, sapete che sono il Chief Architect di Gentoo Linux, autonominatomi responsabile del sito web di Gentoo Linux. Allo stato attuale, il sito lascia un po' a desiderare. Si, per certi versi, sembra attraente ma, se guardate dietro la grafica, vedrete che in realtà non risponde alle necessità dei suoi primari destinatari: gli sviluppatori di Gentoo Linux, gli utenti, potenziali e no.

L'ultima volta, ho usato la progettazione orientata all'utente (User-Centered Design) per creare un set di priorità per il sito e usare queste per creare un piano d'azione per migliorare gentoo.org. Due sono in cima alla lista: una nuova documentazione per gli sviluppatori e una nuova mailing list per comunicare agli sviluppatori i cambiamenti fatti nella nostra repository CVS. Mentre aggiungere la nuova mailing list per CVS era relativamente facile (ma più difficile di quanto pensassi, come vedremo), la nuova documentazione per sviluppatori richiedeva molta pianificazione e lavoro.

Inoltre, non solo era necessario creare della documentazione aggiornata (un obiettivo che avevo ignorato per troppo tempo), ma dovevo scegliere una sintassi XML ufficiale che il nostro nuovo modello di documento doveva usare. Vedete, fino a poche settimane fa, la documentazione era scritta solo con HTML. Usare solo HTML è una cosa superata perché i contenuti (le informazioni) sono mischiate con la presentazione (i tag per la grafica HTML). E che cosa avevo ottenuto? Un grande disordine. Era difficile aggiornare la documentazione attuale ed estremamente difficile migliorare il sito scritto in HTML.

In questo articolo, mostrerò con orgoglio la soluzione per la nuova e flessibile documentazione XML del sito, ma prima, descriverò come abbiamo aggiunto una mailing list per CVS al nostro sito.

Una mailing list per i cambiamenti nel CVS

L'obiettivo della mailing list per i cambiamenti nel CVS è informare gli sviluppatori dei cambiamenti fatti nella nostra repository CVS. Poiché avevo già il mailman mailing list manager (vedere Risorse) installato, pensavo che creare una nuova mailing list fosse facile. Prima avrei semplicemente creato la mailing list, poi aggiunto l'appropriato "aggancio" alla repository CVS, cosi che le email sarebbero state automaticamente generate e spedite, descrivendo i cambiamenti fatti ai nostri sorgenti.

Innanzitutto, ho iniziato cercando un file speciale nella mia CVSROOT della repository chiamato "loginfo". In teoria, modificando questo file potevo istruire CVS ad eseguire uno script quando una modifica era aggiunta alla repository ed effettivamente delle email venivano spedite alla nuova mailing list "gentoo-cvs" ogni volta che delle modifiche erano fatte ai nostri sorgenti.

Sfortunatamente questa soluzione non era come speravo che fosse. Prima di tutto generavo molti messaggi email (uno per ogni modifica) e secondariamente i messaggi erano criptici e qualche volta vuoti! Velocemente rimossi il mio script loginfo e bloccai temporaneamente il progetto mailing list gentoo-cvs. Chiaramente l'aggancio al file loginfo di CVS non era appropriato per i miei scopi e ho dovuto lavorare molto per rintracciare tutta la documentazione relativa al loginfo che poteva aiutarmi a risolvere il problema.

cvs2cl.pl

Parecchie settimane dopo ho cominciato a cercato una alternativa al loginfo. Questa volta ho astutamente cercato in http://freshmeat.net dove ho trovato proprio quello che cercavo: il meraviglioso script Perl cvs2cl.pl disponibile in http://red-bean.com (vedere Risorse). Invece di usare un aggancio al loginfo, cvs2cl.pl usa il comando cvslog per collegarsi direttamente alla repository ed estrarre le appropriate informazioni dal log. Inoltre, non utilizza i messaggi relativamente criptici del log CVS, ma fa un grande lavoro di riformattazione in un formato leggibile di ChangeLog:

Codice 1.1: Output generato da 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 può anche essere istruito per generare un output in formato XML e nel mio prossimo articolo mostrerò i vantaggi di questa cosa per generare un aggiornamento del ChangeLog nella nuova sezione del nostro sito.

Lo script cvslog.sh

Di seguito c'è lo script che io uso per generare le email con il ChangeLog giornaliero. Prima cambia la directory di lavoro mettendosi nella repository del CVS da controllare. Poi crea le variabili d'ambiente $yesterday e $today che contengono le date nel formato RFC822. Notate che entrambe le date hanno l'ora fissata alle 00:00. Queste variabili sono, a turno, usate per creare la variabile $cvsdate che sono passate a cvs2cl.pl per specificare il range di tempo che interessa (l'arco di tempo tra la mezzanotte di ieri e di oggi).

Ho anche creato la variabile $nicedate (usata nell'oggetto della email) ed usato mutt, in modo mailx compatibile (vedere Risorse), per spedire le email alla mailing list gentoo-cvs.

Codice 1.2: cvslog.sh script

#!/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, eseguo questo script ogni notte a mezzanotte. Grazie a cvs2cl.pl, ora i miei sviluppatori hanno un accurato e leggibile aggiornamento giornaliero dei cambiamenti in CVS.

Il progetto per la documentazione

Ora il progetto per la documentazione di Gentoo Linux. Oggi il nostro sistema di documentazione coinvolge due gruppi di persone o destinatari: i redattori della documentazione e i lettori. I redattori hanno bisogno di una sintassi XML ben progettata; i lettori, che possono non preoccuparsi dell'XML, vogliono una documentazione in HTML che sia funzionale e attraente. La sfida è realizzare un sistema completo che risolva le necessità di entrambi i destinatari. Oh, supponiamo che ci sia un terzo tipo di persone: le persone che progettano il nuovo sistema, il webmaster ed io. Poiché dobbiamo interagire con il nuovo sistema di documentazione ogni volta che il sito venga aggiornato, abbiamo bisogno che sia sicuro e flessibile.

Html web-ready

Prima parliamo dell'HTML web-ready che sarà generato dal mio modello XML. Per essere una grande documentazione leggibile sarà necessario avere il supporto di adeguati tag XML. Per esempio, deve esserci la possibilità di inserire note, messaggi importanti e avvertimenti nel corpo del testo (ed avere la loro prominente grafica sul restante HTML). Inoltre, si deve essere in grado di inserire blocchi di codice e potrebbe essere bello se l'input potesse essere in qualche modo evidenziato in modo automatico. Si potrebbe perfino aggiungere dei tag che evidenzino il codice sorgente in un colore diverso cosi che i blocchi di codice siano più leggibili.

I documenti dovrebbero avere un indice (con collegamenti ai capitoli), una sinossi, una data di revisione, una versione e una lista degli autori. Certamente ogni documento deve contenere anche un header in cima alla pagina contenente un piccolo logo di Gentoo Linux. Cliccando su questo logo si dovrebbe tornare alla pagina principale di Gentoo Linux. Ultimo ma non meno importante, ogni documento dovrebbe avere un footer che contenga le informazioni di copyright con un indirizzo email per i contatti.

Il nuovo logo

Quella era una pesante lista di richieste e ho deciso di concentrarmi inanzitutto sulla parte più importante: il nuovo logo di Gentoo Linux che appare nell'angolo superiore sinistro della documentazione di Gentoo Linux. Ho usato la "g" grafica di "gentoo" (creata usando l'eccellente e libero programma Blender 3D) della nostra pagina principale come base per il nuovo piccolo logo. Ho manipolato il logo un poco e aggiunto una colorazione cromata, posizionato al meglio le luci e la prospettiva: il nuovo logo era completo. Importato in Xara X (vedere Risorse) e aggiunto il testo, ecco il risultato:


Figura 1.1: The new Gentoo Linux logo

Fig. 1

Ho usato questo nuovo logo come ispirazione per il resto dell'HTML, usando un tema basato sulle tonalità di viola. Ho fatto un largo uso dei CSM (Cascading Style Sheets) per controllare gli spazi e gli attributi dei font. Una volta ottenuto un decente prototipo in HTML, ho iniziato a concentrarmi sui contenuti della nuova documentazione: la nuova sintassi XML. Cercavo una sintassi che potesse essere la più semplice possibile, cosi ho creato abbastanza tag XML per permettere una appropriata organizzazione della documentazione, ma non di più. Infine ho iniziato a lavorare su XSLT per trasformare i file XML nell'HTML desiderato.

Il risultato!

Dopo molto lavoro e commenti favorevoli da parte di alcuni degli sviluppatori, il nuovo sistema di documentazione era pronto per l'uso. Ho iniziato a lavorare immediatamente a lavorare sulla nostra prima nuova guida per lo sviluppo, "The Gentoo Linux Documentation Guide", "Guida alla documentazione di Gentoo Linux", (xml-guide.html), che contiene una completa descrizione del nuovo formato XML. Non solo questa permetteva agli altri sviluppatori di iniziare a lavorare con il nuovo stile della documentazione, ma serviva come un eccellente esempio del nuovo sistema in azione. Assicuratevi di leggere questa guida per comprendere interamente la nostra sintassi XML.

DocBook vs. Guide

Se state lavorando con la vostra documentazione, potreste anche voler considerare i formati DocBook XML e SGML (vedere Risorse). DocBook è molto adatta per grandi raccolte di documentazione tecnica e per libri, molto flessibile, con molte (forse troppe) opzioni. Inoltre ci sono un grande numero di pacchetti esistenti che possono essere usati per convertire DocBook XML/SGML in pagine di man, file di testo, Postscript, PDF, e naturalmente formato HTML.

Io non ho scelto DocBook perché una sintassi XML leggera era migliore per le necessità di Gentoo. Il numero limitato di tag facilitano la trasformazione delle guide XML in un altro formato come HTML, e anche assicurano un certo livello di consistenza dell'intera documentazione, proprio perché il formato è semplice. Poiché ho il mio formato XML, sarà semplice estendere il formato con nuovi tag se necessario. Amo mantenere il controllo. Io intendo XML come una tecnologia che dovrebbe essere usata dalle persone per strutturare i loro dati nel modo che loro trovano più utile. In altre parole, l'abilità di definire i propri elementi e attributi è una cosa preziosa e io dovrei ottenere tutti i vantaggi da esse. Dopo tutto, è la caratteristica per definizione di XML.

Certamente, creare la propria sintassi XML non è sempre la soluzione migliore, specialmente quando lo scambio di dati è importante per voi. Tra tutto il gran parlare di XML, una cosa spesso trascurata è che la conversione tra differenti formati XML può essere estremamente difficoltosa. In molti casi, i due formati non saranno compatibili al 100% e dovrete spiacevolmente scegliere di eliminare dati o metadati, intenzionalmente evitando l'uso di certi elementi, oppure di creare un superformato che accomoderà i dati e i metadati da entrambi i formati. Con la documentazione mondiale, DocBook è una discreta scelta come "superformato" poiché è molto flessibile e può facilmente accomodare documenti importati da diverse fonti.

Tuttavia, la ricchezza e la flessibilità di DocBook può anche creare problemi. Per esempio, ci potrebbero essere centinaia di tag dei quali potreste non avere mai bisogno, e supportare tutti questi tag nel vostro XSLT può rendere la conversione in altri formati più difficile. Cosi, mentre DocBook è un grande contenitore per documenti da convertire in altri formati, la nostra minima sintassi XML sarà quasi sempre più facilmente convertibile in altri formati.

La cosa più importante è valutare con attenzione ogni possibile soluzione quando le necessità dei vostri destinatari vi saranno note.

Messa in servizio

Con il nuovo sistema di documenti pronto, sono stati convertiti tutti i nostri documenti nel nuovo formato e messi nel sito esistente. Inoltre è stato creato un collegamento alla nuova pagina per la sottoscrizione alla mailing list gentoo-cvs. Qui il punto è che ho integrato queste caratteristiche nel sito esistente cosi che gli utenti potessero beneficiare di questi miglioramenti fin da subito.

2.  Risorse

  • Leggete gli altri articoli in questa serie di developerWorks sulla riprogettazione del sito web www.gentoo.org usando tecnologie come XML, XSLT e Python:
    • Nella Parte 1, l'autore crea un piano d'azione orientato all'utente e introduce pytext, un interprete Python integrato (Marzo 2001).
    • Nella Parte 3, crea un nuovo look per il sito (Luglio 2001).
    • Nella Parte 4, Daniel completa la conversione XML/XSLT, fissa un bug di compatibilità del browser Netscape 4.x e aggiunge un autogenerato XML Changelog al sito (Agosto 2001).
  • Se non avete ancora usato python, potete farvi del male da soli. Lo trovate al http://www.python.org.
  • Controllate Xara.com, la home page di Xara X, un eccellente programma per il disegno vettoriale per Windows. Non troppo grosso e velocissimo, ha la mia personale raccomandazione.
  • Impara di più su XSLT
  • Quando ti svegli, controlla Sablotron, un veloce processore XSLT disponibile su Gingerall
  • Puoi trovare il magnifico cvs2cl.pl lo script da CVS a ChangeLog in Red-Bean
  • Impara di più su DocBook in http://www.docbook.org
  • Se stai cercando un ottimo mailing list manager, date sicuramente un'occhiata a Mailman
  • Controllate www.mutt.org per la più recente versione del programma per email Mutt.


Stampa

Aggiornato il 10 ottobre 2005

Oggetto: Vi siete mai svegliati una mattina e improvvisamente realizzare che il vostro piccolo grazioso sito web personale non è proprio bello? Se è cosi, siete in buona compagnia. In questa serie, Daniel Robbins mostra la sua esperienza nella riprogettazione del sito web www.gentoo.org usando XML, XSLT e Python. Durante la lettura, potreste trovare alcuni eccellenti approcci da usare la progettazione del vostro prossimo sito web. In questo secondo articolo, Daniel mostra il nuovo sistema per la documentazione e la nuova mailing list per i cambiamenti del CVS.

Daniel Robbins
Autore

Danilo Bazzani
Traduttore

Donate to support our development efforts.

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