last update: 14/ november / 2006

Tao e Open Source

utopia

Alcuni anni fa ho scritto un articolo intitolato "Lo Zen e l'arte della stabilità dei personal computer" che tentava, in maniera non tecnica, di dare una risposta a chi poneva interrogativi sull'instablità dei PC. Questo nuovo scritto, ha caratteristiche similari nella sua natura non tecnica e nella filosofia di base, ed affronta i punti di contatto fra il Tao e l'informatica in generale ( e l' Open Source in particolare).

E' doverosa una premessa: se cercate un articolo tecnico o siete troppo presi dal vostro lavoro saltate pure a piè pari la lettura di questo articolo: non vi porterà nulla e vi farà perdere del tempo prezioso.
Per tutti gli altri questo articolo può essere una lettura atipica, con la quale non ho la presunzione, o la speranza, di insegnare qualcosa di nuovo ma spero comunque di fare tornare a tutti un pezzo di sorriso.

Penso che a tutti coloro che hanno a che fare con l'informatica sia capitata, prima o poi, almeno una giornata nera. Ma veramente nera! L'idea di base per questo articolo nasce da una di queste giornate. Alcuni utenti avevano involontariamente distrutto mesi di lavoro di alcuni sistemisti (compreso il sottoscritto).
Una volta rientrato dal lavoro non avevo, di conseguenza, molta voglia di passare la serata leggendo riviste di informatica. Avendo appena terminato la lettura di un libro non avevo nuove letture disponibili, così sono andato recuperare una lettura non ancora conclusa: un vecchio libro di Bruce Lee intitolato "The Tao of Jet Kune Doo".
Il giorno dopo, ripensando ad alcuni passi letti, mi sono reso conto che non avevo mai approfondito il significato della parola Tao usandola in senso generico (ed errato); quindi ho curiosato su wikipedia e su qualche altro sito per saperne almeno un po di più.

Man mano che procedevo nella lettura delle definizioni, di Tao e Taoismo, trovavo dei precetti, dei principi e delle definizioni che potevano essere calati nel contesto dell'informatica. Devo subito spiegare che la pagina che potete trovare oggi su wikipedia è diversa da quella da me letta per la prima volta un anno e mezzo fa, e che, io stesso, ne ho, nel tempo, stampate almeno tre revisioni completamente diverse fra di loro nella forma anche se, sostanzialmente, di uguali contenuti. Tali diverse revisioni in alcuni casi hanno cancellato quelle espressioni che più mi avevano colpito, per cui cercherò di riportarle partendo sia dal materiale che troverete in rete, sia da quanto avevo stampato, sia da altre fonti che nel frattempo ho consultato.

La traduzione letterale di Tao non é univoca. A questa parola vengono attribuiti molti significati in quanto é una parola in cinese antico che può essere tradotta più o meno come "La Via", "Il percorso" o "La ricerca". Quasi unanimamente si concorda che la destinazione di tale percorso é la saggezza; si tratta quindi di un percorso, un cammino, in cui la cosa più importante non è la destinazione ma il cammino stesso inteso come crescita fisica e spirituale.
Quando si desidera entrare in un progetto open source spesso viene richiesto di iniziare sottoponendo delle piccole patch, per poi passare ad una partecipazione sempre più attiva nel progetto, tale processo è appunto un percorso di crescita che, al di là del valore del progetto stesso, assume valore in quanto ci richiede di progredire superando i nostri limiti. Non si tratta di un analogia con quanto esposto per il Tao si tratta proprio dello stesso percorso e tale affermazione sarà più chiara proseguendo nella lettura.

Nella filosofia taoista tradizionale cinese, il Tao ha come funzione fondamentale quella di rappresentare l'universo nella sua totalità ed i suoi precetti sono poi stati riversati nel buddismo e nella filosofia zen.
Alcuni dei precetti fondamentali asseriscono che:

Se i precetti fin qui riportativi confondono sappiate che è nella natura del Tao di essere sfuggente fin dalla definizione. Tale condizione viene complicata dal fatto che i testi base del Tao sono scritti in cinese antico. Tale lingua, a quanto pare, veniva scritta senza le vocali e senza segni di punteggiatura per cui la stessa parola può assumere vari significati a seconda delle vocali attribuite ad essa, ed una frase può avere senso diverso in base a come le parole vengono ragruppate.

Il Tao è, quindi, totalmente astratto ed indefinito e viene sempre spiegato con metafore. Una delle più comuni nelle sue varie forme riguarda il concetto di vuoto. Il vuoto non ha la stessa valenza che assume nelle filosofie occidentali, ove rappresenta una assenza, una mancanza ed ha conotati negativi; al contrario nel Tao il vuoto è più importante dell' opera o dell' ogetto compiuto in quanto nella filosofia taoista esso rappresenta il "potenziale ancora da esprimere".
In tale contesto un vaso viene ritenuto importante per la sua capacità di contenere (il suo vuoto) più che per la sua estetica di oggetto finito.
Il foglio bianco ha valore in quanto può essere riempito con un' opera d'arte.
A questo punto tento una prima analogia con l'informatica: il programma che state iniziando a scrivere potrebbe essere, e potenzialmente lo è, il migliore del mondo. L'opera compiuta verrà valutata, invece, per ciò che avrete ottenuto e potrebbe assumere valore minore a quello potenziale.
Quindi la prossima volta che iniziate un nuovo lavoro provate a guardare non tanto il traguardo da raggiungere, magari con tempi stretti e obiettivi assurdi, ma la potenzialità di fare un qualcosa di eccezionale.
Tenete inoltre sempre presente che il nuovo lavoro potrebbe portare con se delle innovazioni e quindi una fase di crescita che come già enunciato ha comunque un valore intrinseco che và apprezzato.

Proseguendo con la lettura di wikipedia si trova il seguente passo:
- Un'idea ricorrente nel Libro della Via e della Virtù, una delle opere fondamentali sul Tao, è quella del lasciar fare. Se si lascia che la natura faccia il suo corso e i suoi diecimila esseri seguano la propria strada, essi cresceranno e si moltiplicheranno. Se non si cerca di governare gli uomini, loro si organizzeranno nel modo migliore possibile. Questo mi ricorda l'Open Source nella sua natura di autogoverno, nella quale si cala anche l'abilità dei responsabili di progetto di lasciare che il loro gruppo si organizzi secondo la sua natura. Il concetto di assecondare il corso delle cose e lasciare che esse seguano il loro percorso naturale è un concetto molto forte nel Tao ed è chiamato il principo del wu wei (azione tramite inazione). La flessibilità dei gruppi di sviluppo Open source permette di assecondare tale principio molto più facilmente di quanto avvenga nelle aziende nelle quali si sviluppa codice proprietario in quanto quest'ultime sono spesso condizionate da necessità di mercato che obbliga a volte il progetto su vincoli molto restrittivi.

Un'altra definizione che mi ha colpito è la seguente:
- "La ricerca del Tao è la ricerca dell'essenziale..."
Non so voi ma a me questa frase, che in molti passi è riportata in senso assoluto così com'è, ha fatto venire subito in mente l'acronimo KISS che stà per Keep It Simple, Stupid, ossia "mantienilo semplice, stupido" che è anche uno dei concetti base dell'extreme programming e che viene riportato anche da Eric S. Raymond nel suo "The Cathedral and the Bazaar" nel passo che segue:
"La perfezione (nel design) si ottiene non quando non c'è nient'altro da aggiungere, bensì quando non c'è più niente da togliere.
Quando il codice diventa migliore e più semplice, allora vuol dire che va bene".
Voglio far notare, in proposito, che codice semplice non vuole dire codice banale. Chi programma da molto tempo sà benissimo che il codice semplice è difficile da ottenere ed è tutt'altro che banale.

Chi pensa che i miei paragoni siano azzardati sappia che non sono una novità o una mia invenzione e che l'informatica e Tao sono spesso stati accomunati in passato. Voglio citare ad esempio "The Art of Unix Programming" sempre di Eric Raymond. Questo libro, che è un testo sacro per molti programmatori, in origine si intitolava "The Tao of Unix Programming" e il suo contenuto è infarcito di riferimenti alla filosofia zen tanto che il sesto capitolo ha un paragrafo intitolato "The Zen of Transparency" ed esalta il minimalismo di una programmazione chiara e trasparente nell'ottica di ottenere un facile debug successivo. Minimalismo che ci riconduce fra l'altro all'essenzialità di cui si diceva sopra.

In lingua italiana trovate, invece, uno scritto più specifico intitolato Zen e arte della programmazione ove ritrovate, accanto ad una buona introduzione generale, un analisi di alcuni frammenti di codice dal punto di vista della filosofia Zen. E' interessante notare come un buon codice sia riconoscibile da fattori quali ritmo e equilibrio, termini che è molto difficile incontrare in libri di testo di programmazione canonici.

Un'altra fonte illustre è Larry Wall, l'inventore del Perl che in Open Sources afferma che il "Perl ha il Tao" per via della sua sintassi, concetto ripreso anche nell'articolo "The great Tao of Perl" di vilk.
In questo caso i paragoni sono, a mio parere, un po' forzati e mostrano (ancora una volta) l'ecletismo di Larry Wall che è famoso tanto quanto la sua abilità di programmatore.

Un'altro paragone fra i due mondi viene da un bellissimo articolo di Chen Nan Yang intitolato "Il Taoismo dell'Open Source". In tale scritto si evidenzia che il potere del movimento open source è come quello delle gocce d'acqua. Una singola goccia non fa nulla ma migliaia di gocce scavano la roccia e contribuiscono, alla fine del loro percorso, a formare il mare la cui potenza è immensa se paragonata alla goccia iniziale.
Allo stesso modo il contributo di migliaia di programmatori volontari è in grado di erodere il potere delle industrie del software proprietario (la roccia) e di creare un "mare" di programmi (immagine, a dir poco, poetica).

Una fra le cose che mi è piaciuto notare durante queste letture è che il TaijituTaijitu, il simbolo del Tao (o meglio dello Yin e Yang) è un simbolo duale che rappresenta "la dualità, l'opposizione e combinazione dei due principi base dell'universo Yin e Yang è riscontrabile in ogni elemento della natura: maschio e femmina, luce e oscurità, attività e passività, movimento e staticità". Un simbolo binario quindi :-) e pertanto facilmente riconducibile al mondo informatico.
Una simile rassomiglianza con i linguaggi binari si può notare anche nei trigrammi che spesso accompagnano tale simbolo o meglio ancora negli esagrammi del Libro dei mutamenti meglio noto a noi come I Ching. Tali esagrammi sono infatti composti esclusivamente da linee intere o spezzate e costituiscono una specie di indice in linguaggio binario per la consultazione dell'oracolo.

Concludo questa carellata di perle con un commento tratto dal libro "Lo Zen e la cerimonia del te":
"La prima cosa che uno nota nell'apprendimento della 'via del te' è che nulla viene fatto arbitrariamente; sembra esserci una regola per ciascun movimento della mano o del piede [...] lo studente è forzato a divenire cosciente di ogni movimento che esegue e del posizionamento di ciascun utensile."
Rileggendo questo passo mi sono ritrovato a sorridere mentre pensavo che un simile rigore farebbe molto bene anche nell'informatica :-)

Aspetto vostri commenti e le vostre opinioni su queste riflessioni; penso che su questo argomento ci potrebbe essere ancora molto da dire...

[reference]

  1. Wikipedia: Taoismo
  2. Wikipedia: Tao
  3. Extreme programming simple rule
  4. Tao Te Ching (Il libro della via e della virtu) di Lao Tse
  5. The art of Unix Programming di Eric S.
  6. Open Sources
  7. "The great Tao of Perl" di vilk
  8. "Il Taoismo dell'Open Source" di Chen Nan Yang
  9. I Ching (Il libro dei mutamenti)
  10. Zen e arte della programmazione
  11. Lo Zen e la cerimonia del te di Kazuko Okakura (1957) ISBN 88-07-81450-1
  12. The Tao of Jet Kune Doo by Linda Lee (1975) ISBN 0897500482

di Rudi Giacomini Pilon


articoli