Diverse volte abbiamo trattato su queste pagine (spesso nei commenti) il tema del codice libero, e delle relative implicazioni, come pure di open source, dell’acquisto di computer già equipaggiati da software proprietario (di cui abbiamo fornito opinioni diverse in questo e quest’altro articolo).
Particolarmente sentito è quest’ultimo argomento, la cui diversità di vedute è vasta, com’è possibile appurare dai commenti scritti dai lettori. D’altra parte hardware e software sono due facce della stessa medaglia: non si può fare a meno dell’uno o dell’altro, per cui un po’ di ferraglia bisogna pur comprarla, per poi metterci sopra del software se non vogliamo utilizzarla come soprammobile.
Ciò che ho notato è che spesso si parla poco dell’hardware, e molto, molto di più del software, delle “filosofie” o stili di vita che stanno dietro a certe scelte. L’hardware generalmente si tira in ballo nelle discussioni per due motivi: o perché vi si trova sopra del software (indesiderato), o quando si parla dei driver per supportarlo adeguatamente.
Insomma, l’hardware rimane pur sempre uno spunto per parlare di software. E il software rimane, di per sé, fonte di bollenti nonché ben noti dibattiti, nei quali si spendono fiumi di parole che, purtroppo, sfociano troppo spesso in un fanatismo che, a prescindere dalla matrice, tanti danni provoca.
Una posizione abbastanza comune è quella legata al software libero, di cui riporto i quattro “pilatri” concepiti da Richard Stallman:
- Libertà 0: Libertà di eseguire il programma per qualsiasi scopo.
- Libertà 1: Libertà di studiare il programma e modificarlo.
- Libertà 2: Libertà di copiare il programma in modo da aiutare il prossimo.
- Libertà 3: Libertà di migliorare il programma e di distribuirne pubblicamente i miglioramenti, in modo tale che tutta la comunità ne tragga beneficio.
Accomunata a ciò è la battaglia contro i brevetti e la brevettabilità, appannaggio delle multinazionali, che sono accusati di limitare la libertà di scrittura e fruizione del codice, l’innovazione, e altro. Come pure comune è la battaglia per l’uso di solo software libero, in una sorta di ricerca della “purezza” del codice utilizzato.
Tutto, però, continua a ruotare attorno al software, ma dell’hardware non si fa cenno. Eppure è quello che fa girare il codice, sia esso libero, open, proprietario, gratuito o a pagamento.
Chi ha esperienza e/o ha studiato approfonditamente gli aspetti teorici e pratici della scrittura del software, e possiede almeno un’infarinatura sul funzionamento delle architetture degli elaboratori e/o di microelettronica, sa bene quanto sia labile il confine fra software e hardware; di come sia facile passare dall’uno all’altro, implementando in hardware parti che prima erano in software, e viceversa, a seconda della convenienza.
Un elemento molto interessante che fa capire quanto sia sottile questo confine è rappresentato dal microcodice. Al giorno d’oggi le CPU x86 eseguono per lo più direttamente la maggior parte delle istruzioni, relegando una piccola parte all’esecuzione tramite il citato meccanismo a causa degli opcode “legacy”.
A causa della notevole complessità che i chip hanno assunto da un po’ di anni a questa parte, al boot il BIOS provvede e riconoscere la CPU e a caricarvi il microcodice aggiornato. In questo modo è possibile sistemare dei bug che possono essere presenti in quello presente internamente nella CPU, quindi fornito “di fabbrica”.
Di fatto il microcodice è software che viene eseguito all’interno della CPU; una sorta di ponte fra i due mondi. Ma il software, come abbiamo visto, è possibile classificarlo come libero o non. In questo caso non penso che Intel o AMD abbiano rilasciato il loro microcodice con licenza GPL o simile.
Salta fuori, quindi, una domanda: si potrebbe applicare all’hardware quanto è stato definito per il software? A mio avviso la risposta dovrebbe essere affermativa, proprio per quanto scritto qui sopra. D’altra parte anche l’hardware viene programmato con appositi linguaggi (quindi c’è del codice che, opportunamente “compilato”, genera poi lo schema del chip), per cui c’è un codice sorgente. Inoltre astrattamente l’hardware è assimilabile a una funzione che riceve un input e restituisce un output; al pari del software.
Sostituendo nei quattro pilatri del software libero “il programma” con la parola “l’hardware” l’espressione a volte può far sorridere, ma sostanzialmente il significato regge, tenendo conto del preciso contesto per le rispettive parole. Per essere chiari: il programma che si esegue è quello binario, mentre quello che si studia è il sorgente; per l’hardware, quello “in esecuzione” è il circuito, mentre quello studiato è il sorgente. E così via per i concetti di “copia”, “miglioria”, e “distribuzione”.
Pertanto ha senso parlare di “hardware libero“, e in giro si trovano già siti che riportano definizioni, pensieri, e quant’altro, compreso un equivalente della FSF che si presenta come Free Hardware Foundation che, però, punta l’attenzione sul concetto di hardware “trusted” e “untrusted” (ma di cui al momento non voglio parlare).
Riprendo pertanto il titolo dell’articolo: perché non parlare di codice libero che gira su hardware altrettanto libero? Non penso che chi ha deciso di abbracciare la filosofia del software libero troverà difficoltà nel fare altrettanto con l’hardware libero. Un hardware che si possa studiare, migliorare, aiutare a costruire (qui la copia è un concetto un po’ più difficoltoso da applicare), e soprattutto libero da quei brevetti che appaiono come l’origine di tutti i mali.
Un sistema “coerente”, se mi fate passare il termine, che dovrebbe far felice chi ricerca la “purezza” del proprio sistema, concetto di cui avevo parlato prima. Un PC completamente “libero”, tanto nel software quanto nell’hardware, insomma.
In questi giorni si parla molto di un PC “open” che utilizza soltanto software libero, ma non è esattamente la stessa cosa: un PC simile è assemblabile da chiunque abbia un minimo di esperienza; idem per installarci sopra del software libero. Ma l’intero sistema non è classificabile come “libero”, perché fa uso di BIOS e hardware proprietario (CPU, chipset, sottosistema grafico).
Un PC completamente libero oggi è abbastanza difficile da realizzare, ma non impossibile. Esistono diversi progetti di CPU, e persino schede video open source e completamente libere. La difficoltà sta nel trovare qualcuno con sufficiente competenze per poterne realizzare qualcuno, ma se la domanda cresce è ipotizzabile che lo sarà anche la disponibilità e l’accessibilità.
Quanti sostenitori del software libero sarebbero disposti a seguire questa strada? E, soprattutto, ad affrontarne le maggiori spese (come per tutti i prodotti di nicchia), ottenendo in cambio hardware non esattamente all’ultimo grido in termini di prestazioni e funzionalità?
Spendere poche decine di dollari / euro per una licenza non voluta è una cosa che dà fastidio e per la quale si dà battaglia per una questione ideologica. Spenderne qualche centinaio di più per ritrovarsi con hardware mediocre è sostanzialmente la stessa cosa, perché si perseguirebbe sempre lo stesso ideale. Ma in questi casi i conti bisogna farli anche col portafogli, e non soltanto con la propria coscienza…