Di seguito trovate un articolo di Antonio Dini pubblicato su Wired, commentato in maniera puntuale e competente da M.M. (i cui commenti appaiono in viola nel testo). M.M. con Linux…ci lavora sul serio (gestione di reti a livelli altini…), gli ho girato questo articolo per avere una sua autorevole opinione….

5 vittorie e 5 sconfitte dei primi trent’anni di Linux

Il sistema operativo open source ha cambiato per sempre internet e l’industria del software ma non è riuscito a vincere alcune delle sue sfide più importanti

Trent’anni fa, il 25 agosto del 1991**, un giovane studente finlandese mandò una storica email a un gruppo di sviluppatori hobbysti intitolata “Cosa vi piacerebbe vedere di più in Minix?*”. Il giovane studente era Linus Torvalds e quell’email è considerata l’atto di nascita di Linux, il sistema operativo open source che da piccolo hobby di un gruppo di giovanissimi hacker all’alba di internet è diventata l’architrave della rete e uno dei tre progetti open source più di successo al mondo oltre che uno dei più grandi. Infatti, il kernel di Linux, cioè il motore del sistema operativo (e la parte comune a tutte le varie distribuzioni gratuite disponibili) è diventato un progetto da poco più di 27.8 milioni di righe di codice, a cui contribuisce un’armata di 14mila sviluppatori sparsi in tutto il mondo.

La storica email di Linus Torvalds per presentare la sua versione di Minix. L’idea di chiamare il sistema operativo Linux non è stata sua ma di alcuni volontari.

La scelta di Torvalds di sviluppare in maniera free, open e collaborativa il kernel di Linux ha consentito a un altro grande progetto open source, il sistema operativo Gnu, pensato da Richard Stallman ma che non riusciva a decollare, di trovare il suo motore e diventare un rimpiazzo gratuito per Unix, all’epoca “il” sistema operativo (a pagamento) usato sui server e nei centri di calcolo.

Pignolerie: (Unix)[https://en.wikipedia.org/wiki/Unix] è una famiglia di sistemi operativi basati su UNIX (marchio registrato) che è lo Unix originale sviluppato ai Bell Labs a partire dal 1969. Non è un singolo SO.

Trent’anni dopo, però, cos’è successo? Si fa presto a dire che Linux ha vinto: in realtà ha anche perso alcune grandi battaglie. La sua valutazione di mercato era di 3,89 miliardi di dollari nel 2019 (secondo Fortune), il suo valore cresce del 19,2% all’anno (Cagr) e nel 2027 raggiungerò il traguardo dei 15,64 miliardi di dollari. Al tempo stesso, la sua quota di mercato nel settore desktop e portatili è attorno al 2,38%, il doppio di Chrome Os (che non sommiamo perché pur essendo basato su Linux ha uno strato proprietario di servizi di Google) ma molto sotto i due principali sistemi operativi “closed source”: Windows (73%)e macOs (15,4%). Insomma, dopo trent’anni Linux ha sicuramente vinto ai punti ma non per ko. Vediamo perché.

La mappa del kernel di Linux (fonte Wikipedia)
La mappa del kernel di Linux (fonte Wikipedia)

(Chrome OS)[https://en.wikipedia.org/wiki/Chrome_OS] è open come lo è Android, poi Google ha la sua distro con delle personalizzazioni e applicazioni proprietarie, non che questo vada a cambiare moltissimo, almeno per il momento: I Chromebook stanno entrando pesantemente nelle scuole Americane: costano molto meno dei Mac, ci sono modelli con batterie che durano una giornata, etc.

Le 5 grandi vittorie

1 – Il sistema operativo più diffuso oltre al pc

Linux ha sdoganato l’idea che possa esistere un sistema operativo open. Nel mondo del software questa è stata la seconda grande rivoluzione dopo quella di Microsoft degli anni Settanta (cioè che il software ha più valore dell’hardware). L’importanza di essere aperti fin nei dettagli (e non fornire solo delle Apie delle specifiche di sviluppo per le terze parti) è la ricetta segreta del successo di Linux e la cosa che gli ha permesso di essere estremamente efficace per la costruzione di strumenti sofisticatissimi.

Non a caso Linux è la piattaforma standard per una marea di apparecchi e strumenti digitali oltre ai pc e ai server: dal router di casa all’auto della Tesla, dalla webcam alle fotocamere digitali. Il mondo dell’embedded è quasi totalmente Linux e questo è possibile perché tutti hanno potuto lavorare al suo sviluppo e verificare che funzioni. Oggi i grandi sviluppano linguaggi di programmazione (Go, Swift), framework, middleware open source per continuare a sfruttare il valore di essere open. L’apertura completa è la versione “fatta bene” della cosiddetta Api Economy, che invece si basa sul monopolio dei servizi esposti dai fornitori.

2 – Linux è Gnu

L’idea del free software o del software open arriva prima di Linux: Richard Stallman è stato il suo ideologo ma non è riuscito a trasformarla in una proposizione vincente sul mercato. C’è riuscito Torvalds con Linux, che ha ridato vita al progetto Gnu di Stallman diventandone il motore e insieme ad Apache è il vero grande diffusore dell’idea del free software (ma non chiedetelo a Stallman perché lui vi dirà di no).

(Hurd)[https://en.wikipedia.org/wiki/GNU_Hurd], il kernel di GNU ha avuto una vita difficile, è cominciato in ritardo e quando è partito, Linux aveva già fatto il primo vagito. Sarebbe stata una soluzione tecnicamente migliore probabilmente (Dini ne accenna più giù quando parla di microkernel)

Linux ha sdoganato l’idea che i software open non sono solo degli hobby ma anche degli strumenti scientifici e industriali sofisticati.

Sort of… Unix è cresciuto ed è diventato il riferimento anche perché il codice sorgente originale, era stato condiviso con molte università tra il 1974 e il 1980. Le università dovevano solo fare richiesta, inviare i soldi per il nastro che tornava con il SO, i suoi sorgenti e un bigliettino con su scritto “Love, Ken”. Ken è ovviamente Sua Maestà Ken Thompson, autore originale di Unix che scrisse in un mese, in assembler, per il (PDP-7)[https://en.wikipedia.org/wiki/PDP-7] A Berkeley era nata la BSD (Berkely Software Distribution) che diverge dallo Unix originale ed è la base per molti commerciali e non. Lo stack TCP/IP per BSD che era stato scritto da (Bill Joy)[https://en.wikipedia.org/wiki/Bill_Joy], all’epoca studente universitario, era talmente ben scritto e ad alte prestazioni da smerdare tutti gli altri. Fun fact: è stato lo stack usato delle prime versioni di Windows. Nel 1984 poi all’MIT era stato sviluppato Project Athena, diventato poi X11, il gestore grafico delle interfacce, usato anche dai software commerciali con aggiunte varie. Le università, in particolare quelle a carattere scientifico, hanno sempre preferito software in qualche modo open.

3 – Internet ama Linux

L’infrastruttura di internet è storicamente basata su server Unix e sistemi di routing dei dati che hanno utilizzato Unix o altri sistemi operativi proprietari. Tuttavia, è con l’arrivo di Linux che si è sviluppato il “vero” paradigma di internet: senza Linux milioni di startup non avrebbero potuto entrare in affari, da piccolissimi provider che hanno portato per la prima volta la connettività nelle case di milioni di persone negli anni Novanta ai primi servizi e aziende online.

Per esempio, il motore di ricerca di Google esisterebbe solo come tesi di dottorato se non fosse stato possibile riciclare migliaia e migliaia di vecchi pc con Linux per trasformarli nella prima, grande “server farm”. Se Microsoft o Apple volessero sviluppare da zero Linux dovrebbero investire almeno 14,7 miliardi di dollari in stipendi di programmatori per riuscirci.

Non sono del tutto sicuro che Google abbiamo mai usato “migliaia e migliaia di vecchi pc”. La prima incarnazione a Stanford, (25 anni fa)[https://twitter.com/MIT_CSAIL/status/1431990522130882560], in effetti usava un paio di Pentium ma soprattuto IBM Rs/6000 e (Sun Ultra)[https://twitter.com/MIT_CSAIL/status/1431990522130882560] e un pacco di dischi messi un (blocco di Lego)[http://infolab.stanford.edu/pub/voy/museum/pictures/display/0-4-Google.htm] (Elenco esatto qui)[https://en.wikipedia.org/wiki/Google_data_centers#Hardware] (Foto e descrizione)[https://www.datacenterknowledge.com/archives/2014/07/23/from-112-servers-to-5b-spent-on-google-data-centers-per-quarter] di uno dei primi Rack usati da Google nel 1999. Dopo di che hanno cominciato ad usare design particolari invece di comprare server di fascia alta, ma PC proprio no.

4 – Un mondo standard

Trent’anni fa, quando è nato Linux, c’erano decine di versioni di Unix incompatibili tra loro. È una fase dello sviluppo della tecnologia che viene chiamato “guerra degli Unix” e che ha segnato profondamente quella storia che non si studia sui banchi di scuola o all’università, e tuttavia è critica per lo sviluppo di interi settori industriali oggi dipendenti dal digitale. Linux ha introdotto una varietà di possibili utilizzi con un unico sistema operativo sempre aperto e compatibile, a cui tutti hanno potuto contribuire. Qualcosa di più di uno standard aperto.

La guerra degli Unix era più sul lato commerciale, già dal 1984 il consorzio (X/Open)[https://en.wikipedia.org/wiki/X/Open] aveva cercato di creare una serie di standard tra le varie versioni e ancora di più dopo nel 1988 con l’introduzione dello standard Posix a cui anche Linux fa riferimento. Il fatto di avere li codice del kernel e di poterlo modificare e potendo mettere e togliere component a piacere ha avuto un grande impatto. Lo standard aperto comunque è POSIX più che Linux IMO.

5 – Il futuro del cloud

L’idea di “macchine virtuali” è molto vecchia, è nata negli anni Sessanta in Ibm. E quella di internet come sistema operativo è dei geni di Sun Microsystems (“The network is the computer“). Ma se guardiamo a tutte le tecnologie del cloud che negli ultimi cinque anni hanno radicalmente trasformato internet, cioè i container e i microservizi, l’unico punto in comune è che sono tutte basate su Linux.

Intanto andrei sui 15 anni, alcune come i container hanno origini lunghe e in altre versioni (chroot nel ’79 in Unix, le Jail in BSD nel 2000), la diffusione di Linux e in particolare alcuni suoi utenti tipo Google ne hanno determinato il successo.

La piattaforma creata da Torvalds è quella che permette anche la trasformazione nel modo con il quale si costruisce il software online e offline: DevOps, Ci/Cd (le pratiche combinate di integrazione continua e distribuzione continua del software) e tutti i flussi di lavoro e le tecnologie che oggi permettono il funzionamento di servizi come Google Cloud e Netflix si basano su innovazioni rese possibili, in ultima analisi, da Linux.

A 21 anni, Torvalds era un vero geek e come tale si è comportato: ha creato il suo sistema operativo, lo ha messo in Rete e ha chiesto ai suoi simili di partecipare al suo sviluppo. Parliamo di Linux, ovviamente (foto: AFP)

Le 5 sconfitte di Linux

Le sconfitte di Linux sono politiche, non tecnologiche. Ma non per questo bruciano meno. E in alcuni casi ci vuole un attimo per capire perché il sistema operativo nato per essere il campione del mondo open source sia in realtà diventato lo strato gratuito di alcune delle più grandi piattaforme proprietarie

1 – Pochissimo mercato desktop

Nonostante lo sforzo dei volontari e la passione europea (soprattutto in Germania) per l’uso dei sistemi operativi e dei software open source per la pubblica amministrazione, in realtà Linux non ha mai sfondato nel mondo dei personal computer, cioè dei sistemi operativi per la produttività personale. La sua quota di mercato è relativamente molto piccola ed è poco diffuso.

Ed è un vero peccato, perché ci sono distribuzioni mirate che sono più facili da usare di Windows, ambienti con desktop manager e gestori del sistema strutturati per essere come, se non meglio, di quelli di macOS. Però alla fine chi compra un pc lo fa con Windows già caricato a bordo, oppure prende un Mac. Che, oggi, con il nuovo chip proprietario Apple Silicon, è diventato un po’ meno compatibile con Linux di prima (ma non temete: la community ci sta lavorando). In conclusione: la promessa di avere Linux nei personal computer della metà degli utenti del pianeta non si è realizzata. Peccato.

Beh Microsoft si sta trasformando in una distro Linux per cui mi spiace relativamente, Chrome OS per me è un Linux, ho lavorato con distro più ridotte, e con quello siamo decisamente più ben messi (Usage share of operating systems)[https://en.wikipedia.org/wiki/Usage_share_of_operating_systems], dipende anche dal mercato di riferimento, e comunque se mi dici solo PC forse, ma oggi il PC non è il dispositivo più comune. 😉 😉

2 – Non è più veramente “open”

Linux ha perso anche una battaglia ideologica molto importante: il sistema operativo “open” e “free” per definizione, alfiere di un sistema in cui tutti possono vedere il codice sorgente del software e modificarlo a piacimento, è diventato la base di una serie di piattaforme chiuse. E questo non è un bene.

Non è vero: Linux è ancora totalmente Open, ci sono eventualmente moduli (driver) chiusi ma non sono parte del Kernel…

La licenza di distribuzione e d’uso di Linux non è stata pensata per impedire che, per esempio, Google lo usi sui suoi server e sui telefoni Android, Amazon sul suo cloud, Ibm sui suoi server. Però gli utilizzatori di Linux in questo caso lo sfruttano per costruire piattaforme proprietarie. Il lavoro gratuito di migliaia e migliaia di sviluppatori volontari è stato usato per arricchire i proprietari del codice e Linux è diventato (anche) una commodity che fa il gioco dei big tech, senza ricevere niente in cambio.

Commento più sotto questo

3- L’influenza (negativa) dei big del tech

Chi sono i più grandi contributori del codice del kernel di Linux e delle varie componenti open source? La leggenda vuole che siano studenti e giovani programmatori volontari di tutto il pianeta che, mossi dalla loro etica, si dedicano gratuitamente al grande progetto “open”. Non è più così.

La realtà invece è che grandi aziende come Intel, Ibm, Samsung, Oracle, Google, Amazon e da qualche tempo anche Microsoft (ma non dimentichiamoci di Hp e decine di altri) pagano i loro dipendenti per lavorare in orario di ufficio a Linux e completare una serie di componenti del kernel e di altre parti del sistema operativo open. Diventando anche responsabili di determinate aree o di nuovi progetti. Lo scopo? È riassunto nel vecchio detto: “Se non puoi combatterli, unisciti a loro“.

Intel, Ibm, Microsoft e tutti gli altri vogliono che Linux vada nella direzione tecnologica che conviene a loro, che supporti le loro tecnologie e hardware, che insomma sia un sistema fatto a loro immagine e somiglianza. Così, i Linux Day (e gli Install Day), i vecchi appassionati che girano a fare proseliti e insegnare ai “newbie” come installare Ubuntu o la Debian e le altre attività della community di volontari (compresi gli adesivi gratuiti che gli studenti appiccicano sul coperchio del loro pc) sono diventati una specie di facciata folkloristica.

Ma anche no: il grosso degli sviluppatori core del Kernel sono si pagati da grandi aziende, ma non cambiano direzione tecnologica, al limite la espandono e comunque essendo open, ne beneficiano tutti. Linux non sarebbe dov’è ora senza questi contributi. In molti casi, aziende come IBM o SUN, hanno reso open source pezzi di codice che avevano sviluppato internamente, un lavoro per altro lungho e complesso. C’è uno spettacolare talk di Bryan Cantrill che parla del lavoro fatto per rendere open source Solaris (di Oracle che ci ha cacato sopra), con contorno di storia di Unix: (LISA11 – Fork Yeah! The Rise and Development of illumos)[https://www.youtube.com/watch?v=-zRN7XLCRhc] I Linux Day e gli sviluppatori del Kernel hanno una relazione tenue, tra le altre cose, lo sviluppo del core del Kernel richiede ormai degli specialisti di altissimo profilo, è ancora possible contribuire sui moduli probabilmente. In ultima analisi, Linux e le distribuzioni sono due cose diverse ma complementari.

4 – *Spaghetti code*

L’espressione, chiariamolo subito, è provocatoria e palesemente esagerata: “spaghetti code” era il termine usato negli anni Settanta e successivi per indicare programmi il cui codice sorgente era confuso e confusionario, soprattutto per l’uso del *goto* al posto dei costrutti della programmazione strutturato. Lo sviluppo di Linux gestito ancora da Linus Torvalds è fantastico, ma non così il mondo delle distribuzioni e soprattutto la documentazione per gli utenti finali. Là regna il caos.

Accanto ad alcune distribuzioni “maggiori” che curano particolarmente la documentazione, c’è un vero e proprio spezzatino in cui trovare la tecnologia o l’informazione che serve diventa un incubo. Senza contare che le distribuzioni e i software open collegati vanno a mode: per un periodo hanno centinaia di sviluppatori e poi vengono abbandonate, lasciando gli utenti finali nei pasticci.

5 – Il *kernel* sbagliato

Quando Linus Torvalds ha deciso di creare Linux, era all’università e l’ha fatto in polemica con un famoso professore di sistemi operativi, Andrew S. Tanenbaum, una specie di superstar del settore nonché il creatore del sistema operativo “didattico” Minix, che era una alternativa accademica nettamente migliore di Unix. Al centro della scelta per l’architettura di Linux fatta da Torvalds c’è stata quella di sviluppare un kernel di tipo monolitico (anche se poi modularizzato).

Invece, Tanenbaum aveva e ha dimostrato che l’approccio opposto, cioè con un *micro-kernel*, è superiore e avrebbe reso Linux molto più efficace e più adatto sia ai processori multicore (che nel 1991 non erano ancora una opzione) e in prospettiva per i servizi distribuiti nel cloud. Linux ha vinto una battaglia che sarebbe stato meglio aver perso.

Su questo posso essere d’accordo, il fatto è che all’epoca era più efficiente un approccio monolitico, nessuna soluzione è solo buona e giusta. In effetti ha lasciato un mercato per altri, compreso Minix che oggi è usato in particolari contesti, per dire, ce n’è uno in certe (CPU Intel)[https://www.networkworld.com/article/3236064/minix-the-most-popular-os-in-the-world-thanks-to-intel.html]