Capitolo 3. L'Infrastruttura Tecnica

Indice

Di cosa ha bisogno un progetto
Mailing Lists
Prevenire lo spam
Filtrare i messaggi
Nascondere gli indirizzi presenti negli archivi
Identificazione e gestione degli header
Il grande dibattito sul 'Rispondi A'
Due fantasie
Archiviazione
Software
Controllo di versione
Vocabolario del controllo di versione
Scegliere un sistema di controllo di versione
Usare un sistema di controllo di versione
Tenere tutto sotto controllo di versione
Navigabilità
Email di commit
Use branch per evitare colli di bottiglia
Singolarità dell'informazione
Autorizzazione
Tracciamento dei bug
Interazione con le mailing list
Pre-Filtraggio del Bug Tracker
IRC / Sistemi di Chat in tempo reale
Bot
Archiviazione di IRC
Wiki
Web Site
Canned Hosting
Scegliere un sito di canned hosting
Anonimità e coinvolgimento

I progetti di software libero poggiano su tecnologie che supportano la cattura e l'integrazione dell'informazione. Più esperti sarete nell'usare queste tecnologie, e nel persuadere gli altri a usarle, più il vostro progetto avrà successo. Ciò diventa vero quando il progetto cresce. La buona gestione dell'informazione è ciò che previene dal collasso del progetto sotto il peso della legge di Brooks ,[12] che stabilisce che aggiungere forza lavoro a un progetto avanzato lo rende più avanzato. Fred Brooks osservò che la complessità di un progetto cresce con il quadrato del numero dei partecipanti. Quando sono coinvolte solo poche persone, ognuno può parlare facilmente all'altro, ma quando sono coinvolte centinaia di persone, non è ulteriormente possibile per una persona essere messa al corrente di ciò che ciascun altro sta facendo. Se una buona gestione di software libero sta facendo in modo che ognuno si senta al lavoro con gli altri nella medesima stanza, la domanda ovvia è: cosa avviene quando ognuno in una stanza affollata cerca di parlare simultaneamente?

Questo problema non è nuovo. In stanze non-metaforicamente affollate la soluzione è una procedura parlamentare : linee guida formali su come avere discussioni in tempo reale in grandi gruppi, come assicurarsi che importanti dissensi non si perdano nelle inondazioni dei commenti “anch'io” , come dar forma a sottocommissioni, come riconoscere quando le decisioni vengono prese, ecc.. Una parte importante della procedura parlamentare è specificare come il gruppo interagisce con il suo sistema di gestione delle informazioni. Alcuni rilievi vengono fatti “per registrazione” , altri no. La registrazione stessa è soggetta a una manipolazione diretta ed è scambiata per una trascrizione letterale di ciò che è avvenuto, non per ciò su cui il gruppo concorda che sia avvenuto. La registrazione non è monolitica, ma assume forme differenti a seconda del fine. Essa comprende i minuti degli incontri individuali, l'insieme di tutti i minuti di tutti gli incontri, i sommari, le agende e le loro annotazioni, i rapporti della commissione, i rapporti dei corrispondenti non presenti, gli elenchi delle azioni, ecc..

Poichè Internet non è una stanza reale, noi non dobbiamo preoccuparci di riprodurre quelle parti della procedura parlamentare che mantengono le persone ferme mentre altre stanno parlando. Invece quando fanno propria la tecnica dell'organizzazione delle informazioni, i progetti open source che vanno bene sono una forma molto amplificata di procedura parlamentare. Poiché quasi tutte le comunicazioni nei progetti open source avvengono scrivendo, i sistemi elaborati si sono evoluti per l'instradamento e l'etichettatura dei dati; per evitare ripetizioni, come per evitare divergenze spurie; per immagazzinare e recuperare dati; per correggere informazioni cattive ed obsolete; e per associare pezzi di informazione con ogni altra nella misura un cui vengono rilevate nuove connessioni. I partecipanti attivi nei progetti open source fanno proprie molte di queste tecniche e metteranno a punto complesse operazioni manuali per assicurare all'informazione di essere instradata correttamente. Ma l'intero sforzo spesso dipende da un sofisticato supporto di software. Quanto più possibile, i mezzi di comunicazione non realizzano l'instradamento, la classificazione e la registrazione, e dovrebbero rendere disponibile l'informazione agli uomini nella maniera più pratica. In pratica, gli uomini avranno ancora bisogno di intervenire in molti punti del processo, ed è importante che il software renda tali interventi anche pratici. Ma, in generale, se gli uomini hanno cura di classificare e di instradare l'informazione al suo primo ingresso nel sistema il software sarà configurato in modo da fare uso di gruppi di dati il più possibile.

Il consiglio in questo capitolo è intensamente pratico, basato su sull'esperienza con software specifici e su esempi d'uso. Ma il punto non è solo insegnare un particolare insieme di tecniche. E' anche quello di dimostrare, con l'aiuto di molti piccoli esempi, l'attitudine complessiva che che meglio incoraggerà la buona gestione dell'informazione nei vostri progetti. Questa attitudine coinvolgerà una combinazione di capacità tecniche e capacità umane. Le capacità tecniche sono perchè la gestione delle informazioni spesso richiede la configurazione, più una certa quantità di manutenzione in corso e di nuove regolate nelle misura in cui nuovi bisogni sorgono (come esempio vedere la discussione su come trattare un progetto cresciuto in sezione chiamata «Pre-Filtraggio del Bug Tracker» più in là in questo capitolo). Le abilità delle persone sono necessarie perché la comunità umana anche richiede manutenzione: non è sempre immediatamente ovvio come usare questi strumenti con profitto, e in alcuni casi i progetti hanno delle convenzioni in conflitto (per esempio vedere la discussione sul predisporre le intestazione Rispondere-a nei posts in uscita in sezione chiamata «Mailing Lists»). Chiunque sarà coinvolto nel progetto avrà bisogno di essere incoraggiato, al momento giusto e nella giusta maniera, per fare la sua parte nel mantenere l'informazione del progetto ben organizzata. Più sarà coinvolto il collaboratore, più saranno complesse e specializzate le tecniche che ci si aspetterà che possa imparare.

La gestione delle informazioni non ha una soluzione dal taglio secco. Ci sono molte variabili. Potete aver configurato definitivamente ogni cosa giusto nel modo che voi volevate, ed avere la maggior parte della comunità che partecipa, ma la crescita del progetto renderà alcune di quelle pratiche non accessibili. O la crescita del progetto si può stabilizzare, e le comunità degli sviluppatori e degli utilizzatori si possono comporre in una comoda relazione con l'infrastruttura, ma allora qualcuno si muoverà e inventerà un servizio di gestione delle informazioni completamente nuovo, e ben presto i nuovo arrivati si chiederanno perché voi non lo usiate —per esempio ciò sta avvenendo per un sacco di progetti di software libero che anticipano l'invenzione del wiki (vedere http://en.wikipedia.org/wiki/Wiki). Molte questioni sono materia di giudizio, riguardando un compromesso tra la convenienza di quelli che producono informazione e la convenienza di quelli che la utilizzano, o fra il tempo richiesto per configurare il software per la gestione l'informazione e i vantaggi che porta al progetto.

Guardarsi dalla tentazione di una super automazione, cioè, automatizzare cose che richiedono attenzione umana. L'infrastruttura tecnica è importante, ma ciò che fa si che il progetto di software libero funzioni è la cura e l'intelligente manifestazione di quella cura, immessavi dagli uomini. L'infrastruttura tecnica consiste nel dare agli uomini modi convenienti di realizzare ciò.

Di cosa ha bisogno un progetto

La maggior parte dei progetti open source offrono almeno un minimo insieme standard di strumenti per la gestione dell'informazione:

Sito Web

Principalmente un canale di informazione centralizzato e a senso unico, dal progetto verso il pubblico. Il sito web può anche servire come interfaccia di amministrazione di altri strumenti del progetto.

Mailing list

Solitamente il forum di comunicazione più attivo, e il mezzo di memorizzazione ("mezzo di registrazione").

Controllo di versione

Permette agli sviluppatori di gestire adeguatamente le modifiche nel codice, compresi i passi indietro e il cambio di portabilità. Permette a tutti di vedere cosa sta succedendo al codice.

Tracciamento dei bug

Permette agli sviluppatori di tenere traccia di quello su cui stanno lavorando, coordinarsi l'uno con l'altro e pianificare i rilasci. Permette a tutti di fare interrogazioni sullo stato dei bug e di memorizzare informazioni (per esempio istruzioni per la soluzione di certi tipi di problemi) riguardanti particolari bug. Può essere usato non solo per i bug ma anche per attività, rilasci, nuove funzionalità, eccetera.

Chat in tempo reale

Un posto per scambi di botta—e—risposta e discussioni veloci e leggere. Non sempre completamente archiviata.

Ognuno di questi strumenti affronta un bisogno specifico, ma le loro funzioni sono anche correlate, e gli strumenti devono essere fatti per lavorare insieme. Più avanti esamineremo come possono farlo, e ancora più importante, come fare in modo che la gente li usi. Il sito web non sarà discusso fino alla fine dato che funziona più come collante per le altre componenti che come uno strumento in sè.

Dovreste essere in grado di evitare molti mal di testa scegliendo e configurando questi strumenti usando un sito di cossiddetto canned hosting: un server che offre aree web preconfezionate, con stile coerente e con tutti gli strumenti necessari a portare avanti un progetto di software libero. Vedi sezione chiamata «Canned Hosting» più avanti in questo capitolo per una discussione su vantaggi e svantaggi del canned hosting.



[12] Dal suo libro Il mitico mese dell'uomo , 1975. vedere http://en.wikipedia.org/wiki/The_Mythical_Man-Month and http://en.wikipedia.org/wiki/Brooks_Law.