<- SL - SecurITy@uniROMA1 - Indice Generale - Copertina - SL - Sentry CD ->

Sistemi Liberi


GNU Mailman: evoluzione di un progetto software

di Simone Piunno

L'articolo


Un' intervista a  Barry Warsaw, leader del progetto Mailman, dove si presenta la sua storia e le possibili future migliorie al sistema


GNU Mailman è un gestore di mailing list scritto in Python e completo di interfaccia web. Il progetto nacque all'università  della Virginia, nel 1996.

John Viega amministrava su majordomo alcune liste molto popolari dedicate ai gruppi musicali locali, ma era abbastanza frustrato a causa della scarsa usabilità  di majordomo da parte dei non tecnici e per via della poca leggibilità  del codice sorgente.
Seguendo l'incoraggiante esempio del suo amico Hal Shneider, che aveva scritto in python un piccolo e semplice prototipo di gestore di liste, John inizia a scrivere una sua versione ripartendo da zero, con l'obiettivo di superare i limiti di majordomo.
Mailman fu da subito rilasciato al pubblico come software libero, ma non c'erano ancora veri utenti. L'anno successivo, nel 1997, Mailman era ancora un progetto personale di John, che sfortunatamente iniziava a perdere l'interesse nella cosa: aveva progettato Mailman solo perchè non aveva un' alternativa migliore. Come se non bastasse, un giorno il suo disco si ruppe e perse i sorgenti a cui aveva tanto lavorato. Non aveva la forza di ricominciare da capo.
Fortunatamente Ken Manheimer qualche tempo prima si era procurato una copia di Mailman e con Barry Warsaw (insieme amministravano le liste di python.org) inizia a lavorarci sopra aggiungendo altre funzionalità a  seconda dei loro bisogni. Lo sviluppo andava avanti ma i veri utenti erano ancora pochi.
Cercando un modo per farsi conoscere maggiormente, John, Ken e Barry parlarono con Richard Stallman ed ottennero di rendere Mailman parte del progetto GNU.

Ricordo che scoprii dell'esistenza di GNU Mailman proprio in questo modo: leggendo un comunicato GNU. Siccome non era ancora 1.0 decisi di tenerlo d'occhio in attesa che fosse maturo (all'epoca co-amministravo alcune liste di FerraraLUG). Nel 1999 Ken fu assunto da Digital Creations e Barry divenne velocemente il nuovo leader del progetto. Nello stesso tempo, essi lavorarono per il completamento della versione 1.0, che fu rilasciata il 30 luglio.

L'interesse intorno a Mailman crebbe immediatamente e una solida comunità di utenti iniziò a discutere di miglioramenti e correzioni sulle liste dove Barry dirigeva uno sviluppo corale con un approccio bazaar simile a quello del kernel di Linux.
La versione 1.1 era pronta a fine anno e si prevedeva principalmente la correzione di alcuni problemi. A quel punto passai tutte le mie liste da Majordomo a Mailman.

Oggi GNU Mailman è cresciuto fino alla versione 2.1: un maturo e completo gestore di liste dotato di tonnellate di funzioni come gli autorisponditori, il gateway per interfacciarsi ai news server, il filtro sui contenuti, una architettura modulare basata su una pipeline dinamica in cui è molto semplice aggiungere un proprio modulo aggiuntivo, conversioni degli allegati HTML e molte altre.
Quando arrivi da Majordomo, il più grande impatto è cambiare dall'amministrazione basata sulle email a quella basata su web, ma immediatamente ti rendi conto di quanto il nuovo sistema sia più potente e semplice per gli utenti novizi (un grande sollievo per gli amministratori di lista!) Comparato con altri gestori di liste largamente usati su internet, come ezmlm o yahoogroups, Mailman non ha praticamente nulla da invidiare. L'installazione è semplicissima e funziona praticamente al primo colpo. La personalizzazione può essere ottenuta editando dei template di testo o html, così da integrare facilmente il tutto con la grafica e lo stile del tuo sito. A partire dalla versione 2.1, GNU Mailman è stato tradotto in italiano oltre ad almeno altre 15 lingue, e questo semplifica ulteriormente le cose per l'utente finale. Barry Warsaw, tutt'ora leader del progetto, ha accettato di concederci un'intervista.

Barry, la versione 2.1 è stata rilasciata il 30 dicembre dopo quasi 2 anni di lavoro dalla versione 2.0. Come mai così tanto tempo? Cos'ha di nuovo 2.1?

Cos'ha di nuovo? Tonnellate e tonnellate di funzioni [sorride]: probabilmente non ho lo spazio per elencare tutto, ma controlla sul sito web per i dettagli. Tra le cose principali abbiamo la completa internazionalizzazione, creazione e cancellazione delle liste via interfaccia web, invii personalizzati, miglior rilevazione delle email non consegnate, filtri per gli allegati MIME, filtri per argomento, nuovi controlli per il moderatore e la conservazione della privacy, supporto per i newsgroup moderati, associazione tra l'indirizzo email e il nome e cognome degli iscritti, migliori controlli per gli iscritti senza richiedere l'uso di password, moderazione d'emergenza, inviti, la pace mondiale, e... Ok, mi son fatto prendere la mano. Mailman 2.1 avrebbe dovuto chiamarsi Mailman 3, ma avevo promesso che la 2.1 sarebbe stata la prima versione internazionalizzata, quindi ho dovuto mantenere la parola!
Ci sono un sacco di ragioni per il lungo tempo che è stato necessario. Prima di tutto l'internazionalizzazione è molto difficile, e tocca tutti gli aspetti di Mailman. Abbiamo dovuto pensare, scrivere e debuggare un nuovo pacchetto per la gestione delle email in Python, necessario per implementare tutti gli standard RFC rilevanti. Abbiamo dovuto implementare un sistema gettext per Python, ed assicurarci che Mailman supportasse correttamente Unicode. Abbiamo dovuto ridisegnare il sistema dei template e trovare gruppi di persone che traducessero i testi, come quello fantastico che ha curato la traduzione italiana. Abbiamo anche riscritto da zero il sistema di processamento dei messaggi, per ottenere una migliore scalabilità , e rimaneggiato quasi tutto il funzionamento interno. E' difficile essere disciplinati rispetto alla voglia di inserire continuamente nuove funzioni quando usi quello stesso sistema tutti i giorni. Io conosco i problemi che hanno gli amministratori di liste, quindi so quello che è utile e quello che non va.
Per ultimo, non sono attualmente pagato per lavorare a Mailman, quindi devo dividere il mio tempo tra la mia famiglia, il lavoro e il mio hobby da rock star [sorride]. La storia di Mailman inizia nel 1996 ed anche se in breve è diventato meglio di Majordomo, c'è voluto molto tempo prima che diventasse un gestore di liste largamente utilizzato.

A cosa credi sia dovuta questa partenza lenta?

Principalmente inerzia. Mi è capitato di parlarne con Eric Raymond alla Spam Conference dove sono appena stato. Lui ha interessanti teorie che riguardano le GUI di Unix e che penso si possano applicare anche ai linguaggi di programmazione e in questo caso ai gestori di liste. Praticamente, devi avere una grande frustrazione nell'uso del software precedente, o devi trovare qualcosa che è migliore di molti ordini di grandezza per decidere di cambiare.
Non per parlar male di Majordomo, e neanche per sostenere che Mailman sia così tanto superiore, ma certamente ha delle caratteristiche che lo rendono più semplice sia per l'utente finale che per l'amministratore di lista. Inoltre, il nostro budget per marketing e relazioni pubbliche si trova da qualche parte a metà  strada tra quello di Microsoft e quello del club di backgammon di mia zia, quindi ci basiamo veramente sul passaparola. Essere associati con il progetto GNU ci ha aiutati molto in questo senso. Spero anche che con il supporto internazionale inserito nella 2.1, noi si possa ottenere una più veloce adozione nei paesi a lingua non inglese.

Il leader di Mailman è cambiato 2 volte in passato: tu hai preso il posto di Ken Manheimer che a sua volta continuò il lavoro di John Viega. Credo che l'opportunità  di continuare il lavoro iniziato da altri sia uno dei punti di forza maggiori nel free software. Sei d'accordo?

Assolutamente. Mailman non esisterebbe senza il lavoro di John e Ken. Entrambi sono miei buoni amici e grandi programmatori, e la loro impronta è ancora evidente nel codice sorgente, non importa quanto io abbia fatto pipì sull'idrante. Ma la soddisfazione è stata anche più grande: io ho una natura molto pigra, come un gatto, e non mi piace molto viaggiare, quindi l'opportunità  di interagire e occasionalmente incontrare dal vivo persone come me che abitano dappertutto nel mondo è stata senza dubbio inestimabile.

Poco prima di 1.0, Mailman divenne parte del progetto GNU. Come ha aiutato questo cambiamento?

Secondo me è stato abbastanza positivo. Essere sotto l'ombrello GNU ci da un sacco di pubblicità.
Non sono un fanatico della GPL, ma credo che ci siano casi in cui è perfetta. Per esempio, credo che sarebbe disastroso per Python passare sotto licenza GPL, e le cose che Zope Corporation sta facendo con la ZPL e la proprietà  condivisa del copyright hanno anch'esse molto senso. Credo che molti altri progetti di software libero e open source dovrebbero guardare quel modello, ma per Mailman la GPL ed essere associato al progetto GNU sembra la cosa migliore. Quali sono i progetti e gli obiettivi per la 3.0? Ho un sacco di grandi idee per la 3.0 ma può darsi che il prossimo rilascio sia un più modesto 2.2.
Sto giocando con l'integrazione di spambayes dentro Mailman, che ci fornirà un potente strumento di lotta allo spam. Inoltre ho alcune strane idee su un meccanismo di collegamento con i blog che potrebbe essere molto carino per le liste di tipo newsletter. Tutte queste cose potrebbero essere in una versione 2.2 Per arrivare a 3.0 ci vorrà anche un database utenti unificato, in modo che tutte le liste condividano lo stesso modello di lista iscritti. Ho alcune idee sull'organizzazione degli iscritti in griglie e griglie in liste di distribuzione, in modo che sia semplice definire liste, sotto liste e superliste composte al volo, così come raccogliere le informazioni sugli iscritti consultando un database esterno tipo LDAP o SQL. Inoltre sto pensando a come ridisegnare il sistema in modo che sia più facilmente integrabile con siti esistenti o ambienti di sviluppo come Zope. Idealmente Mailman dovrebbe essere in maggior parte una libreria standard di Python più una manciata di script che permettano di fornire sofisticate funzioni di gestione della lista ad ogni applicazione Python. E vorrei costruire Mailman su un vero motore database, tipo ZODB o BerkeleyDB. Mi piacerebbe molto trovare il tempo di ridisegnare o rimpiazzare Pipermail, aggiungendo un motore di ricerca o il supporto per webmail. Ma vorrei anche rilasciare la 3.0 prima che il mio bimbo di 5 anni arrivi al college.

Mailman e Python si sono evoluti assieme, aiutandosi a vicenda. Come ti trovi essendo coinvolto in entrambi i progetti?

Credo siano complementari. Lavorando ad una applicazione di largo utilizzo come Mailman riesco ad avere una buona prospettiva sull'utilità del linguaggio e delle sue librerie. Per via della mia esperienza con Mailman, ho scritto nuove librerie e funzioni che poi in alcuni casi sono divenute parte di Python, come il pacchetto email, il modulo gettext e print.

Mi hanno detto che anche se tra le tante lingue che parli non c'è l'italiano, spesso testi il supporto internazionale di Mailman usando la lingua italiana: è vero?

In realtà  probabilmente parlo correttamente circa 0.75 lingue (sorride), ne ho studiate una manciata ma non sono riuscito a trattenere molto. Forse sono state buttate fuori della mia testa dalla musica rock troppo alta.
Ma in ogni caso sì, spesso testo le interfacce i18n usando l'italiano. Credo che sia in parte perchè come lingua latina posso capire alcune parole, ma anche perchè alle mie orecchie l'italiano sembra una lingua così musicale... si attacca al mio senso della melodia e Mailman non sembra più così noioso e smanettone quando parla italiano.

L'autore

Simone Piunno È nato a Ferrara nel 1972, ingegnere elettronico confesso implicato nei progetti FerraraLUG, Deep Space 6 e GNU Mailman, trova pure il tempo per scrivere piccole guide o articoli. Dal 2000 è è complice di una società i mobile internet a Bologna dove si fa chiamare "chief architect".



<- SL - SecurITy@uniROMA1 - Indice Generale - Copertina - SL - Sentry CD ->