A Ovest Di Paperino

Welcome to the dark side.

Codice sorgente

Avevo pensato di intitolare il post "open source" ma purtroppo è diventata un'espressione ambigua che indica diverse cose, anzi troppe. Invece vorrei parlare di software con "codice sorgente" e semplicemente dal punto di vista «tecnico».

Quanto incide l'avere il codice sorgente nella scelta del software che io uso?

Dipende: spesso niente (Premiere Elements) ma molto raramente tanto (password managers). Penso che il software sia valutabile come qualsiasi altro prodotto o, meglio ancora, servizio. Provo a chiarire con una stupida metafora. Se vado al ristorante, non mi interessa sapere la ricetta di quello che mangio (codice) ma semplicemente gli ingredienti/caratteristiche (feature). Non sceglierei un ristorante indiano solo perché da la ricetta: frequento ristoranti messicani perché mi piace quello che preparano. Stessa cosa per una macchina: non mi interessa se posso accedere facilmente al bullone più antipatico della cinghia di distribuzione perché vi ci penserà il mio meccanico; mi interessa che la macchina mi porti a destinazione e possibilmente incida sulle mie finanze il meno possibile. Certo il fai da te può in alcuni casi far risparmiare: ma solo se il fai da te «meccanico» è il nostro hobby preferito, perché considero il tempo da allocare ai miei hobby (risorsa scarsa) quasi più prezioso di tutto il resto del mio tempo; e siccome guardare codice non è più il mio hobby, il fai da te software non mi conviene: preferisco per questo soluzioni collaudate(*).

spaghetti Quando valuto se un software è appropriato per i miei scopi, mi assicuro che tutto finisca nel calderone: se taluni scelgono di fermarsi al costo della licenza, io metto in conto anche il tempo speso spesso inutilmente. Se alcuni ritengono che avere codice sia "fondamentale", per me tale aspetto può arrivare ad essere totalmente irrilevante: riprendendo la metafora del cibo i primi sono come i vegetariani, per i quali nutro profondo rispetto, condannati ad avere meno "scelta" a disposizione degli onnivori come me, che nella dieta giornaliera includo anche una buona dose di vegetali (la dietologa mi legge Stick out tongue). Nel mio menù software tutte le alternative vengono considerate: con o senza sorgente, gratis o a pagamento.

Un'altra teoria sul codice sorgente è quella che afferma che, guardando il lavoro degli altri, si impara più in fretta o si evita di re-inventare la ruota. Su questo discordo: gli algoritmi di ordinamento sono gli stessi da sempre e guardare un'implementazione in Pascal basta e avanza. Semmai bisognerebbe sapere qual è l'algoritmo di ordinamento usato dal prodotto X nel contesto Y: il codice sorgente a volte aiuta a volte no; ma la buona documentazione aiuta sempre. Per esempio si impara molto più in fretta sui dettagli interni di Windows leggendo "Windows Internals" che guardandone direttamente il codice e lo dico basandomi su esperienza personale diretta. In quanto a re-inventare la ruota, non mi sembra che il codice sorgente serva a molto: ai programmatori piace spesso ripartire da zero creando una piattaforma di blogging ex-novo (mea culpa! mea culpa!), che armarsi di santa pazienza cercando di migliorare quanto già disponibile. Lo stesso motivo per cui, secondo me, per certi tipi di software "con sorgente" ci siano diverse "varianti": Gnome/KDE, Evolution/Thunderbird, Mozilla/Konqueror, ecc. Attenzione: non critico il fatto che ci sia «troppa» scelta, ma l'argomento che secondo taluni il "codice sorgente" sia quasi garanzia di riuso.

Infine c'è una scuola di pensiero che pensa che il software con codice sorgente abbia una qualità «intrinsecamente» superiore. Anche qui discordo perché nella mia piccola/grande esperienza quotidiana non ho potuto osservare nessuna correlazione. C'è software terribile con e senza sorgente, come c'è software terribile sia gratuito che a pagamento. Si potrebbe pensare che pubblicare il codice sorgente lo renda più sicuro: ma casi recenti hanno mostrato è possibile infilare backdoor dappertutto; anzi qualcuno pensa che il "codice sorgente" possa instillare un senso di falsa sicurezza: tutti pensano che c'è qualcuno che prima o poi lo guarderà ma nessuno in realtà poi lo fa. Di questo ho già discusso ampiamente in passato.

Il mio consiglio è di scegliere in base alle proprie esigenze reali (ed in alcuni casi avere il codice sorgente può esserlo!) e di valutare seriamente gli effetti catastrofici del bad software sul proprio bilancio

-enjoy

(*) In passato ad esempio ho usato per il videoediting, che di per se già assorbe quantità di tempo industriali, un programma poco «costoso» che dopo 8 ore di lavoro ha letteralmente rasato a zero il mio progetto da piccolo Spielberg; ho risparmiato una manciata di dollari sul costo della licenza ma ho buttato al vento 8 ore «pregiate» della mia vita.

Technorati tags: