Il termine LAMP è stato coniato nel 1998 da Michael Kunze sulle pagine di c't, una nota rivista di informatica in lingua tedesca. E' un acronimo che sta per Linux, Apache, MySQL e PHP e indica al contempo una pratica e le tecnologie necessarie alla costruzione di applicazioni libere, economiche e distribuite.
Si tratta di una pratica che consente di costruire velocemente ed economicamente applicazioni fruibili attraverso un browser web, come Firefox, Opera o Internet Explorer e basate esclusivamente su software libero. L'esempio più comune di applicazioni LAMP sono i numerosi siti web che si avvalgono di queste tecnologie, soprattutto quelli gestiti attraverso noti CMS liberi come PHPNuke o XOOPS. Il rapporto tra CMS e LAMP non a caso è tanto stretto che spesso le due sigle vengono confuse e/o utilizzate scambievolmente, ma l'impiego di LAMP non è affatto limitato alla costruzione di siti web o dei loro backend per la gestione dei contenuti e può anzi essere esteso fino alla costruzione di applicazioni desktop.
I protagonisti di una applicazione LAMP sono appunto il famoso sistema operativo GNU/Linux, Apache il più versatile ed usato web server al mondo, MySQL un potente database relazione che si è imposto come "standard" per tante applicazioni free software e PHP un linguaggio di scripting capace di adattarsi e rispondere alle più disparate esigenze. E' certamente facile trovare informazioni su queste componenti, ma è altrettanto vero che non sono le uniche a poter comporre una applicazione LAMP, anche solo per il fatto che la "P" potrebbe stare per Python o Perl, o che l'acronimo potrebbe mutare in LAPP (PostgreSQL al posto di MySQL), WAMP (Windows al posto di Linux), MAMP (Macintosh al posto di Linux) e altre combinazioni ancora; a questo proposito su Wikipedia è disponibile un breve articolo in inglese che prova una sistemazione terminologica della questione. In questo articolo parlerò soprattutto di LAMP con la definizione data in apertura, seppure poi ognuno farà le proprie scelte.
Al di là delle varianti, quello che importa davvero è il fatto che tutte queste tecnologie sono disponibili come software libero, quindi utilizzabili da chiunque senza restrizioni, e che nel loro complesso formino una vera e propria piattaforma di sviluppo. E' importante capire che sviluppare con LAMP non è scimmiottare altre soluzioni di sviluppo, ma è una alternativa vera e propria, basata su elementi solidi, testati ed ampiamente documentati. Una soluzione che può trovare applicazioni in moltissimi campi, dal sito web, all'ufficio, alla pubblica amministrazione.
Partiamo dalla fine. L'interfaccia più comune per una applicazione LAMP è il browser, ovvero per interagire con una applicazione di questo tipo l'utente non deve installare un software sul proprio PC, ma puntare il browser verso una URL. Da questo esempio emergono due grandi vantaggi di LAMP:
Questa modalità di fruizione richiede che vi sia una struttura client/server, dove il client rapprensenta il PC dal quale l'applicazione è utilizzata, mentre il server il PC dove l'applicazione è installata. Una struttura di questo genere è utilissima nel caso vi sia la necessità di centralizzare i dati, come avviene naturalmente per un sito web e come dovrebbe avvenire nelle LAN aziendali.
Rispetto alle comuni applicazioni grafiche, interagire attraverso il browser non è solo semplice per l'utente, ma facilita molto anche la costruzione dell'interfaccia stessa, che si basa su linguaggi davvero comuni come HTML, CSS e JavaScript, rendendone veloce sia la preparazione, la modifica, la personalizzazione.
La curva di apprendimento di una applicazione LAMP è molto ripida, ovvero le persone imparano facilmente questo tipo di software e sono operative dopo poche ore di formazione. Ciò dipende soprattutto dal fatto che queste applicazioni hanno un numero limitato di funzioni specifiche, strettamente legate al compito che l'applicazione deve svolgere. Contrariamente alla maggioranza dei software desktop è raro trovare in una applicazione LAMP funzioni "inutili", misteriose o utilizzate raramente dagli utenti: proprio per la loro duttilità e l'alto grado di espandibilità questo tipo di applicazione tende ad essere spartano e ad includere solo quello che è funzionale al compito da svolgere. Da questo si può dedurre che una applicazione LAMP è costruita intorno all'utente e ai compiti che questo deve svolgere.
Spartano, non significa povero. A fronte di una interfaccia semplice e funzionale, il software può svolgere trasparentemente all'utente azioni davvero complesse. Si pensi a Google: lo stato dell'arte per quanto riguarda l'archiviazione e la catalogazione del sapere umano si riduce ad un campo di testo in cui inserire la propria domanda e ad un tasto da premere... eppure il risultato è davvero eccezionale.
Certo, Google non è scritto con LAMP, ma il fatto che il risultato sia il medesimo di una applicazione LAMP fa pensare che LAMP possa anche essere utilizzato per ridurre la complessità e rendere più amichevoli altre applicazioni: un interessante caso di sviluppo.
Prerogativa per sviluppare con LAMP è conoscere i quattro ingredienti di base, fatto questo occorre solo avere ben chiaro cosa l'applicazione dovrà fare, quali le funzioni, i limiti, le future espansioni. Non tutto può essere fatto con LAMP, ad esempio se dovete controllare periferiche, o avete bisogno di performance di altissimo livello è meglio ripiegare su altri linguaggi, come il C o il C++, ma per quando riguarda una buona fetta di applicazioni, soprattutto quelle multiutente basate su database relazionali LAMP è davvero la strada giusta.
Le applicazioni LAMP possono raggiungere un livello di raffinatezza paragonabile a quello delle applicazioni desktop più comuni. Con LAMP ad esempio è possibile costruire rubriche, scadenzari, archivi di documenti, client di posta elettronica, client FTP, instant messaging, file manager e molto altro. Che questo tipo di applicazione sia utilizzato all'interno del browser web invece che con un doppio click del mouse è solo accidentale e non deve per nulla essere preso come parametro per giudicarle; le interfacce web, infatti, possono essere complesse e ricche proprio come le GUI, ma avvalendosi di strumenti molto più semplici come HTML, CSS e soprattutto JavaScript.
Per replicare una applicazione desktop con un sistema LAMP è spesso sufficiente studiare bene l'applicazione da sostituire e cercare la strada migliore per renderla con questo sistema. Ho già raccontato ad esempio come sono riuscito a sostituire FileMaker con una applicazione LAMP e anche, modestamente, con grade successo.
Il campo di applicazione naturale per LAMP, però, è proprio un ambiente multi utente, dove i dati hanno la necessità di essere centralizzati e condivisi tra più persone. Fin ora siamo stati abituati a software che pur condivendendo le informazioni (magari dietro il brutto nome di licenza server) avevano bisogno di essere installati - e quindi manutenuti - su ogni macchina della rete (magari dietro il brutto nome di licenza client). Con LAMP questo concetto scompare: dati e applicazione risiedono sul server mentre i client non fanno altro che connettersi al server via web browser. In uno scenario del genere qualsiasi modifica/miglioramento apportato all'applicazione è immediatamente disponibile agli utenti, utenti che per altro non sono legati alla propria postazione, ma possono lavorare ovunque ci sia un collegamento via rete (LAN o Internet) al server e sia installato un browser.
Da sole queste motivazioni dovrebbero indurre aziende e la PA a drizzare le antenne verso LAMP, ma ora gli darò una motivazione in più: il vantaggio economico.
LAMP infatti è davvero economico per realtà di ogni misura. Non solo le singole parti sono software libero, ma la modularità e la scalabilità di questa soluzione lo rendono lo strumento più adatto allo sviluppo di grandi o piccole applicazioni. Per una azienda, soprattutto piccola, sviluppare software non è una impresa facile, il tempo e l'investimento che questa attività richiede rendono più semplice comprare un prodotto già pronto, con tutti i rischi che questo comporta.
LAMP invece dà la possibilità anche alle piccole aziende di sviluppare applicazioni su misura con un investimento tutto sommato limitato. Catagoghi, gestione del magazzino, gestione degli ordini, generazione di preventivi, gestione del personale, agende, rubriche, scadenzari... sono tutte cose che ho visto fare con LAMP.
LAMP ha molti vantaggi, eccone alcuni raccolti per punti.