Nel panorama delle distribuzioni Linux è relativamente facile imbattersi in un nuovo progetto. Molto più raro è incontrarne uno che cerchi realmente di costruire qualcosa di diverso alla base, invece di prendere una distribuzione già esistente, modificarne l'ambiente grafico, aggiungere alcuni programmi e pubblicare una nuova immagine ISO.
FreeLinX appartiene decisamente alla seconda categoria.
Il progetto si presenta infatti come una distribuzione Linux indipendente, costruita praticamente da zero, basata sul kernel Linux ma progettata deliberatamente per fare a meno di alcuni componenti che, da decenni, siamo abituati ad associare quasi automaticamente a un sistema GNU/Linux: GCC, glibc e buona parte dell'ambiente GNU.
Al loro posto troviamo una combinazione decisamente meno comune: userland derivato da NetBSD, libreria C musl e toolchain LLVM/Clang.
È proprio questa scelta a rendere FreeLinX interessante anche per chi non ha alcuna intenzione di installarlo sul proprio computer. Il progetto pone infatti una domanda tutt'altro che banale: quanto di ciò che normalmente chiamiamo "Linux" è realmente indispensabile e quanto, invece, deriva semplicemente da scelte tecniche consolidate nel corso di decenni?
Linux non significa necessariamente GNU/Linux
Per comprendere FreeLinX bisogna partire da una distinzione che spesso, nell'uso quotidiano, passa inosservata.
Linux, in senso stretto, è il kernel, cioè il nucleo del sistema operativo: gestisce processore, memoria, dispositivi, processi e molte delle funzioni fondamentali necessarie al funzionamento della macchina.
Un sistema utilizzabile ha però bisogno di moltissimo altro: una shell, comandi per copiare e cancellare file, librerie, compilatori, strumenti di amministrazione, programmi e infine, nel caso di un computer desktop, server grafico, gestore delle finestre e applicazioni.
Storicamente gran parte di questi componenti, nelle distribuzioni Linux, proviene dal progetto GNU. Da qui nasce anche la denominazione GNU/Linux.
FreeLinX prova invece a separare le due cose: conserva il kernel Linux, ma costruisce intorno ad esso un ambiente differente.
Gli stessi sviluppatori definiscono infatti FreeLinX una distribuzione "non-GNU".
Al posto di glibc c'è musl
Una delle differenze più importanti riguarda la libreria C.
La maggioranza delle distribuzioni Linux utilizza glibc, la GNU C Library. È uno dei componenti fondamentali dell'ecosistema GNU/Linux e moltissimi programmi dipendono da essa.
FreeLinX utilizza invece musl libc.
Per chi usa normalmente il computer la differenza può sembrare puramente tecnica, perché nessuno apre un elaboratore di testi chiedendosi quale implementazione della libreria C stia funzionando sotto di esso. Dal punto di vista della costruzione di un sistema operativo, però, la scelta è fondamentale.
musl è una libreria C progettata con particolare attenzione alla semplicità, alla conformità agli standard e alla possibilità di produrre software relativamente compatto. Non è peraltro una scelta completamente inedita nel mondo Linux: viene utilizzata anche da altre distribuzioni, tra le quali Alpine Linux.
FreeLinX, tuttavia, non si limita a sostituire glibc.
Niente GCC: si usa LLVM/Clang
Un'altra scelta caratterizzante riguarda il compilatore.
Per decenni GCC, GNU Compiler Collection, ha rappresentato uno dei pilastri dello sviluppo dei sistemi Linux. Anche lo stesso kernel Linux è stato storicamente associato in maniera strettissima a GCC.
FreeLinX sceglie invece Clang come compilatore e LLD come linker, entrambi appartenenti all'ecosistema LLVM.
Il progetto vuole quindi costruire l'intero sistema attraverso una toolchain basata su musl + Clang/LLVM, evitando la dipendenza da GCC e glibc.
Non significa che GCC o glibc siano diventati improvvisamente strumenti inadeguati, né avrebbe molto senso presentare la scelta in questi termini. Si tratta piuttosto di dimostrare concretamente che un sistema Linux può essere costruito seguendo una strada differente.
Ed è probabilmente questo l'aspetto culturalmente più interessante dell'esperimento: nel Software Libero la possibilità di scegliere tecnologie differenti e costruire alternative non è un'anomalia, ma uno dei meccanismi attraverso i quali l'ecosistema continua ad evolversi.
Un po' di NetBSD dentro Linux
C'è poi un'altra scelta particolarmente interessante.
FreeLinX utilizza un userland derivato da NetBSD.
NetBSD non è una distribuzione Linux, ma appartiene alla famiglia dei sistemi operativi BSD. FreeLinX realizza quindi una combinazione insolita: il kernel rimane Linux, mentre una parte degli strumenti che costituiscono l'ambiente operativo proviene dal mondo BSD.
Questo permette anche di comprendere meglio cosa significhi realmente parlare di "sistema Linux": il kernel e gli strumenti che lo circondano non costituiscono necessariamente un blocco indivisibile.
FreeLinX prende componenti provenienti da tradizioni differenti e cerca di costruire con essi un sistema coerente.
Un proprio gestore dei pacchetti
L'indipendenza del progetto arriva anche alla gestione del software.
FreeLinX non utilizza apt, dnf, pacman o gli altri gestori di pacchetti delle distribuzioni più conosciute, ma sviluppa un proprio sistema chiamato xpkg.
Secondo quanto dichiarato dagli sviluppatori in occasione della pubblicazione della versione 1.0, il repository dispone già di circa 400 pacchetti.
È un numero naturalmente molto piccolo se confrontato con gli enormi archivi di Debian, Fedora o Arch Linux, ma il paragone sarebbe poco corretto: FreeLinX è un progetto appena nato e costruire una distribuzione indipendente significa anche dover creare e mantenere progressivamente l'intera infrastruttura necessaria per compilare, confezionare, distribuire e aggiornare il software.
È disponibile anche un'interfaccia grafica per la gestione dei pacchetti.
E sul desktop?
Una distribuzione sperimentale costruita con questi presupposti potrebbe sembrare destinata esclusivamente a sviluppatori e appassionati della riga di comando. FreeLinX prova invece a presentarsi fin dalla prima versione anche come sistema desktop.
L'ambiente è volutamente leggero e utilizza Openbox come window manager.
Il progetto comprende Xorg e i componenti necessari all'ambiente grafico, mentre la versione 1.0 viene distribuita con Firefox ESR, installatore grafico e gli strumenti fondamentali per utilizzare il sistema.
La documentazione del progetto mostra inoltre alcuni piccoli strumenti sviluppati specificamente per FreeLinX, tra cui un file manager e un gestore grafico della rete.
Per la gestione dell'avvio dei servizi viene utilizzato runit, un'altra scelta che distingue il sistema dalla grande quantità di distribuzioni moderne basate su systemd.
Non soltanto una ISO
Un elemento che merita attenzione è la struttura stessa del progetto.
Nel repository pubblico è possibile seguire la catena utilizzata per costruire il sistema: toolchain → ports → kernel → root filesystem → immagine finale.
I pacchetti vengono costruiti attraverso il sistema ports; il kernel dispone della propria configurazione; gli script assemblano successivamente il filesystem e l'ambiente grafico fino alla produzione dell'immagine avviabile.
Non siamo quindi semplicemente davanti a una personalizzazione grafica di una distribuzione preesistente.
Questo è probabilmente il punto fondamentale per valutare FreeLinX: il progetto sta cercando di controllare l'intera catena di costruzione del proprio sistema operativo.
La licenza
Anche la scelta della licenza è coerente con l'impostazione generale del progetto.
Il repository desktop di FreeLinX indica la BSD 2-Clause, una licenza libera estremamente permissiva.
Questo elemento è particolarmente interessante perché FreeLinX nasce dall'incontro tra due grandi tradizioni del Software Libero: utilizza il kernel Linux, storicamente legato al copyleft della GPL, ma costruisce buona parte del resto del sistema privilegiando componenti provenienti dal mondo BSD o comunque distribuiti attraverso licenze permissive.
Naturalmente questo non significa che ogni singolo componente installabile nel sistema abbia la medesima licenza: una distribuzione contiene software proveniente da numerosi progetti indipendenti e ciascuno conserva le proprie condizioni di licenza.
È già pronto per sostituire Debian, Fedora o Ubuntu?
No, e sarebbe probabilmente ingiusto giudicarlo utilizzando questo metro.
La versione 1.0 è la prima release desktop e gli stessi sviluppatori avvertono che il sistema presenta ancora aspetti da perfezionare. Gran parte delle prove è stata effettuata in macchine virtuali e l'utilizzo su hardware reale può evidenziare problemi, in particolare con alcune schede Wi-Fi, dispositivi audio o GPU.
È quindi molto più sensato considerare FreeLinX, almeno per ora, come un progetto giovane destinato agli sperimentatori, agli sviluppatori e alle persone interessate all'architettura dei sistemi operativi.
Chi cerca semplicemente una distribuzione da installare sul computer di lavoro farebbe bene a rivolgersi, almeno in questa fase, a sistemi molto più maturi.
Ma ridurre per questo FreeLinX a una curiosità sarebbe altrettanto sbagliato.
Perché FreeLinX è interessante
Il valore di FreeLinX non sta necessariamente nella possibilità che milioni di persone decidano un giorno di utilizzarlo.
Sta innanzitutto nell'esistenza dell'esperimento.
Il Software Libero ha permesso la nascita di un ecosistema nel quale è possibile prendere il kernel Linux, affiancargli strumenti provenienti da NetBSD, sostituire glibc con musl, GCC con LLVM/Clang, scegliere runit per la gestione dei servizi e costruire persino un nuovo gestore dei pacchetti.
È una dimostrazione concreta di qualcosa che rischiamo talvolta di dimenticare quando utilizziamo sistemi ormai estremamente maturi: un sistema operativo libero non è un prodotto immutabile, ma un insieme di componenti che possono essere studiati, sostituiti, modificati e ricombinati.
E la diversità tecnologica ha un valore che va oltre il singolo progetto. Avere implementazioni differenti significa sperimentare altre soluzioni, verificare altre architetture e impedire che l'intero ecosistema finisca per dipendere da un'unica combinazione di tecnologie.
FreeLinX è ancora molto giovane e soltanto il tempo dirà se riuscirà a costruire una comunità sufficientemente ampia da garantire continuità al progetto. Mantenere una distribuzione indipendente è enormemente più difficile che realizzare una nuova variante di una distribuzione esistente: occorre seguire pacchetti, aggiornamenti, vulnerabilità, hardware, compatibilità e infrastruttura.
Proprio per questo vale la pena seguirne l'evoluzione.
Non perché FreeLinX rappresenti già oggi "il futuro di Linux", affermazione che sarebbe decisamente prematura, ma perché rappresenta bene uno dei principi più fertili del Software Libero: se pensiamo che un sistema possa essere costruito diversamente, abbiamo la libertà di provare a costruirlo.