Strumenti per siti complessi

IDE, Version Control e issue tracking

Su un sito di media complessità sicuramente trarrete vantaggio dall'utilizzo di alcuni strumenti per la produzione di software.

Se nel vostro progetto prevedete di effettuare un numero anche basso di modifiche a files css o php (e quindi rientrate nel 5% dei siti joomla che non si limitano a configurazioni automatiche “out of the box” e minimi interventi di css) sicuramente trarrete vantaggio dall'utilizzo di alcuni strumenti per la produzione di software: version control (svn, git) e issue tracking.

Questi strumenti hanno un costo di adozione ed una curva di apprendimento piuttosto basse, cionondimeno accade spesso che nella fretta di avviare un progetto si decida "ancora una volta" di andare avanti con vi o notepad.

La configurazione base

La configurazione base per sviluppare un sito in Joomla richiede un accesso via ftp ad un server sul quale installare il nostro sito, e che configureremo per accedere ad un database.

Molte modifiche ai css e ad altri files minori possono essere fatte direttamente dall'interno di Joomla, e testate subito sul server live.

Altre modifiche a template, template overrides, e viste dei moduli possono essere effettuate in locale ed inviate tramite ftp, oppure tramite accesso shell ssh con vi o con l'editor fornito dal server.

I limiti di questo approccio

Questo sistema risulta sicuramente il più efficace quando un sito molto semplice richiede minime modifiche grafiche, e nessuna modifica funzionale.

Ci si rende rapidamente conto delle limitazioni quando un sito ha pesanti modifiche grafiche rispetto al template originale, modifiche evolutive, modifiche ai template o template overrides, o addirittura codice modificato o scritto ad hoc.

Rapidamente diventa difficile ricostruire l'iter seguito nelle modifiche, ed un errore accidentale può rendere il sito inutilizzabile, ed essere molto difficile da diagnosticare.

Gli strumenti a nostra disposizione

Prima di introdurre gli strumenti che ci aiutano a gestire un sito, è necessario spendere due parole sull'architettura.

Per poter lavorare su un sito in produzione ed effettuare modifiche mentre gli utenti lo stanno usando, è necessario avere la certezza che le modifiche introdotte non contengano errori: questo richiede un secondo sito di test sul quale verificarle prima di portarle in produzione.

Se l'entità delle modifiche è notevole, e coinvolge più aspetti dell'installazione Joomla, sarà probabilmente un team di sviluppo a realizzarle, quindi oltre al server di test, sarà necessario un lavoro di integrazione tra il server di test e le singole macchine di sviluppo dei singoli sviluppatori.

La nostra architettura quindi si complica: avremo una o più macchine di sviluppo, una macchina di test (al minimo), ed una di produzione.  A questo dobbiamo aggiungere necessariamente uno strumento per integrare e sincronizzare il contenuto dei vari server.

La sincronizzazione dei dati: SVN

Subversion, o SVN, è uno strumento di gestione delle versioni del codice che - sebbene sovradimensionato per la realizzazione di un sito Joomla semplice - una volta integrato nel processo produttivo non comporta costi aggiuntivi e ci permette di:

  • gestire le revisioni
  • unire il lavoro di più sviluppatori
  • sincronizzare i files attraverso server diversi

La sincronizzazione dei dati: GIT

Grazie alla straordinaria facilità di adozione, il controllo di versione distribuito ha preso il posto di SVN.

GIT offre un approccio più moderno e decentrato (non necessita di un server per il proprio archivio); questo significa che con un comando posso inizializzare un repository locale e cominciare ad usarlo, senza nemmeno aver bisogno di un server.  Potrò in ogni momento successivo decidere di condividere il mio lavoro con altri.


L'ambiente di sviluppo: IDE (Integrated Development Environment)

Si tratta di un programma che offre alcune pratiche funzionalità per programmare: dal completamento del codice, alla navigazione (ctrl-click su un include() apre il file corrispondente), all'integrazione con SVN ecc.

La famiglia di prodotti non è paragonabile ai più blasonati editor di testo, siano essi vi su *nix, textmate per mac, editplus o notepad++ su windows, per la quantità di funzioni extra che offre; naturalmente ogni cosa ha un suo prezzo, e l'usabilità immediata ne risente all'inizio, soprattutto per la (minima) curva di apprendimento.

Eclipse è l'IDE open source più diffuso e potente e - benché sia nato nel mondo Java - è disponibile anche per PHP ed è semplice configurarlo per l'utilizzo con Joomla.

Naturalmente il presupposto all'utilizzo di un programma del genere, che dovrà avere accesso ai 4000+ files di Joomla, è che questi siano nella vostra rete locale e non su un server remoto.

Issue tracking

L'ultima delle funzioni vitali di cui parliamo in questo mini-articolo è l'issue tracking, ovvero la gestione delle richieste.  Questo può esser fatto con software di Q&A, Issue tracking, bug tracking ecc., non ha importanza lo strumento quanto il concetto: ogni richiesta relativa ad un progetto deve essere scritta, seguire un iter (ad es. inserimento, approvazione, esecuzione, modifiche, accettazione), ed infine venir messa in produzione.  Questo è un iter che seguirebbe comunque, ed uno strumento del genere può sembrare più un ostacolo ed un rallentamento che un vantaggio.

L'utilità di uno strumento simile si vede già su progetti estremamente semplici (10 richieste): permette di avere chiarezza con il cliente, e di ordinare i requisiti secondo l'importanza e l'urgenza.  Inoltre, combinato con l'svn, permette di collegare le richieste (issue tracking) con la relativa esecuzione (svn), ed di allegare documenti e risorse ad esse relative.

Conclusioni

Indipendentemente dai singoli prodotti che sceglierete come revisione del codice, issue tracking, ambiente di sviluppo, la combinazione di questi permette di ottenere un risultato professionale che è pressoché impossibile senza.  I vantaggi sono molteplici già a partire da siti estremamente semplici, ed il costo per sito è pressoché nullo una volta realizzata l'infrastruttura ed acquisito il know-how.  Al di là dei vantaggi in termini di qualità e tracciabilità, questi strumenti permettono anche un concreto risparmio di tempo, e l'investimento viene assorbito rapidamente.

Se avete deciso di fare un altro sito direttamente sul server di produzione, di caricare i files via ftp, e fare copie zippate degli stessi prima di inviarli, state solo cercando guai.  Andatevene da questo sito per piacere.