Hacking

14 Apr 2022

Hack, hacking, hacker

Negli anni ‘60, al Massachussets Institute of Technology (MIT) alcuni studenti iniziarono a fare scherzi molto vistosi, elaborati e completamente innocui. Una mattina, ai loro colleghi nel campus capitò di svegliarsi e trovare un’auto della polizia obliquamente parcheggiata sulla cupola della cappella universitaria. Un’altra volta, le finestre sulla facciata di una palazzina di uffici furono illuminate in modo da formare uno smile alto decine di metri visibile nella notte in tutto il campus1.

Gli studenti che organizzavano e realizzavano questi scherzi erano detti hacker. Nel tempo la pratica si consolidò, tanto da essere considerata un caratteristica particolare che distingueva il MIT da altre università (nel campus è stato ospitato per diversi anni un museo dedicato agli scherzi più famosi). Gli studenti arrivarono anche a codificare un’etica hacker, che descrive lo spirito - sempre bonario - con cui questi scherzi andrebbero realizzati secondo la tradizione2. Gruppi di hacker si formarono anche in altre università americane, come il California Institute of Technology (Caltech), e in quegli anni i gruppi dei diversi college rivaleggiavano amichevolmente.

Gli studenti che organizzavano gli scherzi impiegavano molto tempo e sforzi, viste le capacità tecniche e logistiche che spesso richiedevano. Gli scherzi venivano chiamati hack, un termine che nel tempo ha acquisito diverse sfumature di significato3. Una definizione abbastanza generale di hack è una soluzione a un problema pratico nella quale si può riconoscere l’ingegno e la creatività di chi l’ha pensata e messa in pratica. Che la soluzione sia elegante e minimale oppure complicata e contorta, l’importante è che funzioni.

Negli anni ‘60 le università occidentali iniziarono ad offrire i primi corsi di Informatica e qualche anno dopo vennero commercializzati i primi PC. Poche persone avevano i mezzi economici e le conoscenze necessarie ad usare un computer. In questo scenario, gli studenti e i ricercatori in Informatica in America formavano vere e proprie comunità, e venivano naturalmente influenzati dai gruppi di hacker che operavano nei campus. Si crearono così gruppi di studenti in cui l’interesse per la tecnologia e lo spirito libertario e creativo dei primi hacker si contaminarono, creando una nuova sottocultura4.

I computer hacker, chiamati inizialmente così per distinguerli dai primi, coltivarono un approccio alla programmazione che avrebbe avuto molto successo. Essi apprendevano con la pratica, mentre risolvevano un problema e proprio grazie all’attività di problem solving. Alle soluzioni arrivavano attraverso sperimentazione e creatività, con un approccio che si potrebbe definire non-lineare. I membri della comunità davano valore alla compentenza, poiché riconoscevano e apprezzavano la qualità di una soluzione ben pensata e realizzata.

I gruppi di hacker iniziarono ad accumulare e tramandare conoscenze che usavano quotidianamente nella loro attività di programmatori5. Parte di questo sapere è materializzato in basi di codice sviluppate decine di anni fa e raffinate nel tempo fino a raggiungere una forma essenziale6. Alcuni di questi programmi sono usati quotidianamente da migliaia di sviluppatori in tutto il mondo, entrando a far parte della vita di milioni di persone.

Simley at MIT

Hack sotto le nostre dita

La sottocultura hacker ha posto le basi pratiche e culturali per la nascita dei due più importanti movimenti legati al mondo dello sviluppo software: il movimento per il software libero, e quello per il software open source.

Per capire meglio le istanze di questi due movimenti è utile avere idea di come si crea un software. Siamo abituati ad interagire con qualsiasi app, sito web o programma per computer attraverso un’interfaccia grafica. Come tutti sanno, esistono i più svariati tipi di programmi: dai fogli di calcolo ai software per editing di immagini o suoni, dai videogiochi alle app per il fitness. A seconda del tipo di programma, l’interfaccia è progettata in modo diverso per facilitarne l’uso. I programmatori, invece, non hanno a che fare con l’interfaccia che useranno gli utenti (tranne quelli che si occupano di progettarla e scriverne il codice). Lo stesso software appare ai programmatori com’è “sotto la pelle”, ossia come un insieme di file scritti in qualche linguaggio di programmazione. Poiché è da questi file che viene generato il programma realmente usato, il codice scritto in essi viene chiamato anche codice sorgente.

Nel caso della maggior parte delle applicazioni che tutti usiamo ogni giorno, il codice sorgente (almeno in parte) non viene reso pubblico, oppure è utilizzabile solo rispettando i termini di una licenza. Ciò accade perché in questo modo le aziende hanno un vantaggio competitivo e un margine di guadagno sui propri prodotti. Per questo motivo, questo tipo di programmi vengono chiamati proprietari.

Gli attivisti del movimento per il software libero sostengono che il codice sorgente di ogni programma debba essere reso pubblico per permettere potenzialmente a chiunque di leggerlo, eseguirlo, modificarlo e ripubblicarlo. Essi affermano che non pubblicare il codice sorgente di un software sia ingiusto ed eticamente scorretto, poiché limita la libertà dell’utente di redistribuire e modificare il software.

Anche il movimento per il software open source, formatosi alcuni anni dopo il primo, sostiene la necessità di pubblicare il codice sorgente, considerando però più i vantaggi pragmatici che gli aspetti etici di questa scelta. Mentre la visione sostenuta dagli attivisti per il software libero è incompatibile con l’idea di software proprietario, questa possibilità è ammessa dagli attivisti per il software open source.

Grazie al contributo di entrambi i movimenti l’approccio hacker allo sviluppo del software è ancora oggi vivo e largamente diffuso tra le comunità di sviluppatori in tutto il mondo. Infatti, poiché questo approccio è fondato sulla libertà di creazione e sperimentazione del programmatore, è chiaro che esso è reso possibile dalla libertà di accedere, modificare e ripubblicare il codice sorgente di un software.

L’impatto delle comunità legate al mondo FOSS (Free and Open Source Software) sul mondo digitale è forte e molto esteso: le tecnologie digitali per come le conosciamo non esisterebbero senza questi due movimenti. Nei decenni, gli sviluppatori e attivisti di entrambe le comunità hanno sviluppato decine di migliaia di software, molti dei quali sono usati ancora oggi da moltissime persone.

Alcuni programmi FOSS molto usati possono essere descritti come prodotti software: sono realizzati per un utente finale non tecnico che vi interagisce attraverso interfacce grafiche. Il browser Mozilla Firefox, il client per e-mail Thunderbird, la suite per ufficio Libre Office o il software per l’editing di immagini GIMP sono programmi molto usati e conosciuti, ma esistono anche moltissimi altri esempi7.

Tuttavia, sono molti di più i programmi scritti dagli sviluppatori nel mondo FOSS che si possono considerare strumenti software. Questi programmi sono pensati per essere usati da sviluppatori per la creazione di altri programmi. L’esempio più eclatante è quello dei sistemi operativi della famiglia Linux: un sistema operativo è il software più basilare, senza il quale si può dire che non sarebbe possibile nemmeno usare un computer. Altri esempi sono le utilities dei sistemi operativi Linux, il software di versionamento Git, i web server Apache o Nginx, o i framework web backend come Ruby on Rails o Django. Questi software, i cui nomi risulteranno sconosciuti e a malapena comprensibili ai non addetti ai lavori, sono usati per far funzionare siti web, social network e app, ed entrano quindi indirettamente a far parte della realtà digitale quotidiana di chiunque.

L’hacking come forma culturale

Non è un caso che i software sviluppati dalle comunità hacker siano principalmente strumenti. La comunità stessa si definisce più interessata a creare software che risolvano problemi generali, piuttosto che impiegare le proprie capacità per creare prodotti che vengono usati per uno scopo specifico8 (anche se abbiamo visto che esistono esempi di prodotti software liberi e open source).

Per capire il motivo di questo interesse può essere utile considerare il particolare approccio alla creazione di sofware adottato dalla comunità hacker. Come ho descritto all’inizio, in questa comunità l’attività creativa è motivata dalla curiosità e spinta dal piacere di risolvere problemi. I suoi membri apprezzano particolarmente le soluzioni ingegnose ed eleganti. Chi aderisce appieno a questa cultura sarà quindi probabilmente più interessato a scrivere programmi che servano a risolvere problemi generali.

Nel suo libro The Craftsman, il sociologo Richard Sennett presenta una storia dell’attività artigianale, discutendone l’importanza come pratica culturale9. Tra le attività considerate da Sennett c’è anche lo sviluppo di software open source, e in particolare lo sviluppo del sistema operativo Linux ad opera della comunità nata attorno ad esso. Sennett è interessato in particolare ad un aspetto dell’attività artigianale: l’interesse a far bene un lavoro per la sola gratificazione che ne deriva. L’autore sostiene che questo interesse sia comune alla maggior parte delle persone, ossia che praticamente chiunque sia bravo nel fare qualcosa, e che possa trarre soddisfazione dal fare ciò in cui è capace perseguendo risultati di buona qualità. Un’idea simile è stata anche ripresa da David Gauntlett nel suo saggio Making is Connecting10. Gauntlett sostiene che le attività artigianali permettano a ciascuno di esprimersi e presentarsi al mondo attraverso il prodotto tangibile della propria creatività. Per questa ragione, le attività artigianali sarebbero in grado di creare legami tra le persone e creare comunità.

Nonostante la sua importanza pratica e sociale il valore delle attività creative e artigianali spesso non è riconosciuto nel mondo accademico e nelle istituzioni educative in generale. Nell’accademia, il sapere pratico è stato tradizionalmente considerato minore. La competenza in un campo del sapere, che determinano di conseguenza il grado di autorità in esso, sono certificati nel mondo accademico da titoli acquisiti una volta e validi per sempre. Nella pratica artigianale, invece, la competenza è dimostrata quotidianamente attraverso i frutti dell’attività di ciascuno.

Non a caso, la cultura hacker nacque in istituzioni tecnologiche e con il significativo contributo della comunità studentesca, distante dagli interessi e dal punto di vista del corpo docenti. Ancora oggi nelle istituzioni accademiche (specie in quelle italiane) il patrimonio di sapere tecnico accumulato in decenni dalle comunità di sviluppatori hacker e open source è sconosciuto a molti dei docenti di discipline tecniche. Raramente esso viene trasmesso o anche solo presentato agli studenti, nonostante la sua grande importanza nel mondo digitale che viviamo.

  1. Hacks al MIT su Wikipedia 

  2. Hacks ethics 

  3. The Jargon File > Meaning of hack 

  4. The Jargon File > Appendix B 

  5. The Jargon File 

  6. Filosofia UNIX su Wikipedia 

  7. Le Alternative 

  8. The Jargon File > Uninteresting, The Jargon File > Toolsmith 

  9. Sennett, Richard. 2009. The Craftsman. 1st edition. New Haven, Conn.: Yale University Press. Ed. it.: Sennett, Richard. 2013. L’uomo artigiano. Tradotto da A. Bottini. Milano: Feltrinelli. 

  10. Gauntlett, David. 2018. Making Is Connecting: The Social Power of Creativity, from Craft and Knitting to Digital Everything. 2nd edition. Cambridge, UK ; Medford, MA: Polity. Ed. it.: Gauntlett, David, e Stefano Micelli. 2013. La società dei makers: la creatività dal fai da te al Web 2.0. Venezia: Marsilio.