Source code

code_da_smallIn un articolo apparso su tuxjournal si parlava di un ipotetico futuro in cui GNU/Linux fosse diventato closed source: gli utenti del pinguino su quali software avrebbero potuto contare, dato che più nessun utente ormai si preoccupa di compilare i programmi partendo dai sorgenti?

A parte che l’articolo è volutamente provocatorio ed è più un’indagine per vedere se gli utenti sono disposti ad usare un software meno all’avanguardia pur di tutelare la propria libertà. Anche perché la GPL impedisce di fatto che si possa chiudere un programma come linux o comunque non si può impedire che da linux nascan nuovi fork liberi.
In ogni caso, in questo articolo vorrei parlare dei sorgenti software. E’ attualmente una pratica attuabile nella quotidianità quella di ricompilare il software che si desidera installare sulla propria linux box?

La risposta non è semplice perché attualmente il software “non è semplice”. A parte il desiderio di ricompilare il software per sperimentazione o per divertimento, bisognerebbe essere comunque guidati da una precisa necessità per eseguire una operazione simile.
Ad esempio la compilazione di Linux, che è la più frequente, è guidata dalla necessità di abilitare talvolta il supporto ad alcune periferiche non riconosciute nel binario distribuito con la nostra distro. Altre volte si ricompila il kernel per ripulirlo e snellirlo, insomma per adattarlo al meglio al nostro hardware reale ma già questo caso è più da smanettoni, per non parlare di altre fisime mentali (io ad esempio lo ricompilavo per impostare il sistema real-time e avere una super-reattività agli input).

La pratica è relativamente lunga e richiede comunque molta documentazione. Spesso e volentieri basta la tripletta (./configure, make e make install) ma non sempre, ed una volta eseguito il make install si è andati ad installare un software scavalcando il gestore di pacchetti, creando probabilmente anche qualche stato di incoerenza nel sistema. Infatti più che altro le distro forniscono tools per compilare automaticamente i sorgenti forniti e costruire pacchetti dalle compilazioni.

code_da_small

un pezzo del sorgente Linux

Tornando a noi, anche volendo compilare il software da se, lo scoglio principale secondo me è la complessità che ha raggiunto il software oggi. E’ semplicemente sproporzionata se confrontata con alcune delle motivazioni che potrebbero spingerti a ricompilarlo.
Qualche anno fa, quando non avevo un collegamento alla rete o quando mi collegavo attraverso il protocollo GPRS la mia unica fonte di software erano i sorgenti ottenibili sui cd e dvd allegati alle riviste dedicate al Pinguino. Allora non c’era altra scelta: mplayer te lo dovevi compilare sulla macchina. Avviavi il processo nel tardo pomeriggio e speravi (come quando si caricava un gioco del commodore 64) che dopo cena il make non avesse ritornato un qualche “fottuto” codice di errore che correggere non sarebbe stato semplice.
Non era una pratica di certo divertente, per me lo era… ma questa è un’altra storia.

Oggi, con una vasta disponibilità di binari che si installano in pochi secondi, è effettivamente impensabile aspettare due ore di compilazione per mettere le mani su mplayer, errori di compilazione a parte. Leggere i sorgenti per controllare che il programma faccia solo quel che deve o per correggere un bug che ne impedisce la compilazione è poi la fantascienza. Libre Office, Firefox, Mplayer, Amarok, Blender tanto per citarne alcuni hanno codici sorgente vastissimi e non si può pretendere si spendere un po’ di serate a capire se c’è qualcosa che non ci piace all’interno del codice: non è così facile guadagnare la comprensione del programma. Raramente ma mi è capitato di aver bisogno di una piccola utility e di doverne correggere leggermente il codice per compilarla sulla mia macchina ma erano sorgenti molto stringati e non dell’ordine delle decine di megabyte; insomma potevo studiare quel sistema e modificarlo in un tempo ragionevole, altrimenti non avrebbe avuto senso ed avrei fatto prima a trovare un’altra soluzione… magari implementando direttamente un programma che portasse a termine il solo compito di cui avevo veramente bisogno.

Il bilanciamento tra i vantaggi della compilazione e gli sforzi per affrontarla (risoluzione delle dipendenze, eventuale configurazione e correzione del codice) è ad oggi troppo a favore degli sforzi. Anche solo usare una distro come la Slackware senza includere funzionalità di risoluzione automatica delle dipendenze tra i binari potrebbe portare parecchi grattacapi a chiunque intendesse installare un software molto complesso.

Nell’ottica del progresso è sato naturale rinunciare alla semplicità in favore delle funzionalità ma continuando ad usare software molto leggeri e comunque dalle grandi capacità (a volte superiori ai loro fratelli blasonati); per questo mi chiedo spesso se in giro non ci sia troppo codice con il solo scopo di allietare gli occhi e l’anima con l’effetto collaterale di creare sorgenti mastodontici, poco stabili ed incomprensibili se non “in piccola parte” per gli addetti ai lavori. A che servirebbe oggi perdere ore se non giorni a ricompilarli se non per la sfida personale di avere quel binario modellato dalla propria macchina?

.

***Ovviamente in quest’articolo ho fatto riferimento agli utenti disposti ad essere più che utenti base ma che non sono hacker puri ne ho fatto riferimento a campi professionali.

Annunci

2 thoughts on “Source code

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...