lunedì 21 dicembre 2009

How to dismantle an adobic bomb


Leggo da più parti, su siti, forum e blog nazionali ed esteri, che una delle cose che frenano l'adozione di GNU/Linux tra i web developers è la mancanza di un software equivalente a Dreamweaver sulla piattaforma del pinguino. Effettivamente DW è davvero un ottimo software, e la potenza della sua interfaccia WYSIWYG ha permesso l'avvicinamento di un mare di persone al web design, senza che queste dovessero confrontarsi con tutte le asperità che le innumerevoli tecnologie per il web possono presentare.
In particolare, però, la feature più cara a chi utilizza DW - feature vistosamente assente in altri software dedicati alla stessa attività - è la gestione dei template e delle library, che permette di costruire elementi comuni a tutte le pagine del sito, e di modificarli senza massicci copia-incolla su decine di file.
Questo post racconta l'esito delle mie disavventure con un progetto di lavoro che, partito come costruzione di un mockup di un portale, è approdato alla dimensione di una vera e propria versione statica di un oggetto altrimenti generato attraverso un CMS - considerando, soprattutto, che per lavoro non faccio il grafico, nè il programmatore web, nè tantomeno il web designer.
Come si può facilmente immaginare, la costruzione di un mockup web di poche pagine dimostrative può essere eseguita con qualunque editor di testi: anche dovendo ripetere porzioni di codice su più pagine, l'overhead dovuto alle modifiche è minimo, per via - perlappunto - della dimensione contenuta. Il disonesto "cambio di scala progressivo" operato dal cliente mi ha messo nell'imbarazzante situazione di dover gestire le modifiche di decine di pagine statiche; dall'imbarazzo si è passati alla palese difficoltà (e ad una conseguente acrimonia), nel momento in cui mi sono state chieste versioni "stagionali" del portale, moltiplicando, di fatto, per 4 lo sforzo necessario.
Alla richiesta di modifiche ai menù della demo statica, mi sono reso conto che l'incarico rischiava di diventare un bagno di lacrime e sangue.
La prospettiva di dover approntare un ambiente Windows-based solo per installarvi DW, peraltro, mi inorridiva.
Attratto dalle sirene dell'Internet, sono stato portato a credere che Quanta+, NVU e Kompozer fossero in grado di risolvere i miei problemi, ma le similitudini tra i due prodotti open e DW si fermavano ad una serie di aiuti nella scrittura del codice (X)HTML, come l'autocompletamento.

Ormai distrutto e disperato mi sono lanciato in una serie di improbabili query su Google; lacrime sono state versate nel constatare l'imminenza della vittoria del duo Microsoft/Adobe.
Fino a scoprire, all'interno del succitato Quanta+, uno script chiamato dwt.pl: sostanzialmente uno script in Perl che, nelle intenzioni del suo creatore, dovrebbe permettere di riprodurre il funzionamento dei template di DW all'interno dell'editor open-source, attraverso l'utilizzo di un markup direttamente derivato dai template in formato .dwt (quelli generati da DW, per intenderci). Feature senza documentazione, abbastanza oscura da necessitare ulteriori ricerche, ma pur sempre feature.
Giubilo ed eccitazione, fino a scoprire in breve che dwt.pl non funziona (perlomeno non la versione inclusa nel programma, nè la spartana interfaccia per gli script offerta da Quanta+). The road had been opened: alla ricerca di una versione funzionante e di qualche howto su dwt.pl, ho avuto la fortuna di imbattermi nelle gloriose parole Template Toolkit, ed il buon senso di approfondire l'argomento.
Template Toolkit è una collezione di script in Perl molto potente per la generazione di documenti di qualunque tipo a partire da template; permette la costruzione di pagine web statiche (attraverso tpage e ttree, script bash che fungono da wrapper per gli script in Perl) e dinamiche (usando scripting CGI). TT è davvero complesso - esiste un libro intero dedicato ad esso, pubblicato da O'Reilly Media - ma, per le esigenze sopra esposte, basta imparare ad utilizzare tpage (tpage [ --define var=value ] header mypage footer > mypage.html ), capire come funziona il markup (che permette anche semplici funzioni condizionali) e seguire alcuni piccoli accorgimenti relativi al naming dei file.
To make a long story short, la riscrittura delle poche pagine del mockup secondo la logica di TT mi ha permesso di risparmiare incalcolabili quantità di tempo, senza dover installare Windows, Wine o Dreamweaver, peraltro aumentando la mia conoscenza del bash scripting, delle regexp, di CSS/XHTML/Javascript e di parecchie buone pratiche del web design.

Niente di troppo user-friendly, ma sicuramente versatile e potente.

Cheers!