Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.1
Lezione 4Nascita ed evoluzione di Linux
Linux avanzato
20 marzo 2013
Marco Cesati
System Programming Research GroupUniversità degli Studi di Roma Tor Vergata
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.2
Di cosa parliamo in questa lezione?
Nascita ed evoluzione del kernel Linux
1 La nascita del kernel Linux2 Il kernel Linux oggi3 Le ragioni del successo di Linux
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.3
La nascita del kernel Linux. . .
Agosto 1991: appare un nuovo SO per PC Intel 80386
From: [email protected](Linus Benedict Torvalds)
Newsgroups: comp.os.minixSubject: What would you like to see most in minix?Summary: small poll for my new operating systemDate: 25 Aug 91 20:57:08 GMTOrganization: University of Helsinki
Hello everybody out there using minix -
I’m doing a (free) operating system (just a hobby,won’t be big and professional like gnu) for 386(486)AT clones. This has been brewing since april, andis starting to get ready. I’d like any feedback onthings people like/dislike in minix, as my OSresembles it somewhat [...]
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.4
Le prospettive di Linux nel 1991
Linus Torvalds era uno studente diinformatica, senza (ancora) alcuna seriaesperienza di programmazione
Inizialmente il progetto di SO era focalizzatosu architettura Intel 80386Interrogato sulla portabilità del progetto, Linus scriveva:
Simply, I’d say that porting isimpossible. It’s mostly in C, but mostpeople wouldn’t call what I write C. Ituses every conceivable feature of the386 I could find, as it was also aproject to teach me about the 386. Asalready mentioned, it uses a MMU, forboth paging (not to disk yet) andsegmentation. It’s the segmentationthat makes it REALLY 386 dependent[Linus Torvalds, comp.os.minix, 25 Aug 1991]
All’epoca non esistevano piani per la conquista del mondo!
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.5
Versioni iniziali
Versione Data Note
0.01 Set. 1991 Annuncio in comp.os.minix
0.02 Ott. 1991 “Do you pine for the nice days of minix 1.1,when men were men and wrote their owndevice drivers?”
0.03 Ott. 1991 “Pretty useable”
0.10 Dic. 1991 ISA+AT disks, no login, no SCSI. . .
0.11 Dic. 1991 VGA, EGA, floppy disk, tastiere internaz.
0.12 Dic. 1991 Swapping su disco, licenza diventa GPL
0.95 Mar. 1992 Link simbolici
0.96 Lug. 1992 FIFO
. . . . . . (varie decine di versioni)
1.0.0 Mar. 1994 Prima versione “stabile”
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.6
Il kernel Linux ieri ed oggi
Nel 1991 (versione 0.01): 76 file, 512 KB su disco,< 8500 linee di codiceNel 2013 (versione 3.9-rc2): ∼ 43 000 file, 564 MB sudisco, 15 557 000 linee di codice
Le domande cruciali
Quali sono stati i progressi più importanti nel kernelLinux?
Chi condivide i meriti della velocissima e continuaevoluzione di Linux? È unicamente un successopersonale di un programmatore eccezionale comeLinus Torvalds?
Come è accaduto che un SO giocattolo di uno studentedi secondo anno di informatica è diventato un SO disuccesso che compete con quelli delle più importantiaziende di IT?
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.7
Gli schemi di numerazione delle versioni di Linux
La gestione delle versioni è cambiata nel corso degli anni
1994–2005
versioni stabili: serie 1.0, 1.2, 2.0, 2.2, 2.4, 2.6versioni di sviluppo: 1.1, 1.3, 1.99, 2.1, 2.3, 2.5, . . .
2005–2013
versioni stabili: serie 2.6, 3versioni di sviluppo: 2.6-rcX, 2.6-next, 3-rcX, 3-next,. . .
21 luglio 2011: dalla versione 2.6.39 si passa alla 3.0
Nessun “salto” nelle caratteristiche di LinuxÈ solo una razionalizzazione dello schema di versioni
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.8
Le versioni stabili di Linux
Sono contate anche le versioni minori (“bug fix”)
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.9
Dimensione del codice sorgente
La dimensione del codice sorgente non è di per se unparametro direttamente legato alle qualità e caratteristichedel kernel
Tuttavia la dimensione del codice sorgente è legata a:
la complessità di progetto del kernel
la difficoltà di gestione del progetto
Metriche sostanzialmente equivalenti per il kernel Linux:
numero di linee di codice
numero di funzioni
numero di file sorgenti
dimensione del codice sorgente su disco
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.10
Dimensione del codice sorgente (2)
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.11
Disponibilità di driver per i dispositivi hardware
Critica ricorrente nei confronti di Linux:“molti dispositivi hardware non sono supportati!”
In realtà Linux ha il più ampio spettro di dispositivisupportati: ogni driver è
indipendente dall’architettura
mantenuto e aggiornato “per sempre”
Esistono problemi solo per dispositivi il cui costruttore
non rilascia specifiche tecniche dettagliate
non rilascia un driver open source
Negli ultimi anni sempre più costruttori mostrano unatteggiamento positivo verso la comunità Linux
I SO commerciali integrano driver solo per i dispositivi piùadottati; negli altri casi il costruttore fornisce il driver soloper la versione corrente del SO commerciale più adottato
La maggior parte dei sistemi sono oggi a 64 bit, e tutti idriver Linux sono 64-bit compatibili. Vale per altri SO?
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.12
Diffusione per tipologie di utilizzo
Sistemi integrati
Linux 60%MS Windows 10%
custom 7%VxWorks 6%
Mobile (smartphone)
Linux (Android) 49%Apple iOS 19%Blackberry 13%
MS Windows 11%altri 8%
Tablet
Apple iOS 57%Linux (Android) 41%MS Windows 1.5%
Laptop & desktop
MS Windows 92.2%Apple OS X 6.4%
Linux 1.4%
(Stime approssimate ed indicative, da fonti diverse e non omogenee)
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.13
Diffusione per tipologie di utilizzo (2)
E combinando insieme mobile, tablet, laptop e desktop PC?
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.14
Diffusione per tipologie di utilizzo (3)
Server di rete
Linux 60%MS Windows 35%
Mainframe
Linux 95%altri 5%
Supercalcolatori (lista TOP500, nov. 2012)
Linux 93.8%Unix 4.0%
mixed 1.4%MS Windows & altri 0.8%
(Stime approssimate ed indicative, da fonti diverse e non omogenee)
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.15
Le chiavi del successo di Linux
Le domande cruciali
Il successo di Linux sarà duraturo?Riuscirà a conquistare il mondo?
Le ragioni del successo di Linux
1 Dammi indietro il tuo codice: la licenza GPL2 Il codice cambia rapidamente: flessibilità3 Responsabilità delegate: gestione intelligente del
progetto4 Personalità dei kernel hacker : programmatori
professionali che amano il loro mestiere5 Contributi dall’industria: supporto essenziale da tante
industrie IT
Tutte queste ragioni sono fortemente correlate tra loro
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.16
Il progetto GNU e la licenza GPL
Il successo di Linux è radicato nel progetto GNU diRichard Stallman (GNU’s not UNIX) per un SO free (nelsenso della libertà di parola)
Il progetto GNU ha fornito molti strumenti essenziali perLinux: il compilatore GCC, la libreria standard C, i comandidi sistema, . . .La licenza GNU GPL è un ingrediente chiave per ilsuccesso di Linux
La GPL in sintesi
Chiunque può liberamente leggere e modificare ilcodice sorgente del kernel a condizione che, se il nuovoprodotto è distribuito, il codice sorgente modificato èreso disponibile agli utenti finali ed agli sviluppatori delkernel con la stessa licenza
Comunque il successo di Linux è dovuto anche ad altrifattori oltre ai meriti del progetto GNU
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.17
Velocità con cui Linux si evolve
Il codice del kernel viene modificato con un ritmoimpressionante: una major release ogni 2 o 3 mesi
Statisticheper il 2012:
Versioni Changeset Linee di codiceaggiunte modificate
3.3 10 550 555 037 155 3563.4 10 899 450 300 183 3393.5 10 957 571 987 135 8483.6 10 247 459 722 130 4353.7 11 990 1 552 034 147 307
Totale 54 643 3 589 080 752 285
Statisticamente, in ciascuna ora dell’anno 2012 gli sviluppatoridel kernel hanno aggiunto 410 linee di codice e modificato altre86 linee!
Ma quanti sono gli sviluppatori di Linux?
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.18
Quanti sono gli sviluppatori?
Il file CREDITS nel codice sorgente di Linux include circa500 nomi, ma è largamente incompleto
Le modifiche del kernel nell’anno 2012 sono stateproposte da non meno di 7 000 sviluppatori
. . . ma i team vengono contati in genere come uno
Si stima che la comunità di sviluppatori di Linux sia oggicomposta da circa 8 000 membri
Il numero di sviluppatori è gigantesco:come può Linus Torvalds gestire tutti loro?
“Open-source development violates almost allknown management theories”[Dr. Marietta Baba,
Dean of the Dept. of Social Science, Michigan State Univ.]
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.19
I responsabili di sottosistema
Il codice sorgente del kernel è modulare: componenticentrali, driver di bus e dispositivi, stack di rete sonologicamente separati ed hanno interfacce ben definiteLinus Torvalds ha nominato diverse centinaia diresponsabili (maintainer ): ciascuno è un programmatorecon la responsabilità di seguire uno specifico componenteo sottosistema del kernelOgni responsabile coordina un certo numero diprogrammatori che lavorano sul componenteCome regola generale, le modifiche ad un componente osottosistema debbono essere proposte a Torvalds dalresponsabile interessatoAlcuni responsabili generali hanno compiti particolari:
Greg Kroah-Hartman, Chris Wright: fix per le versioni stabili
Stephen Rothwell: segue un ramo sperimentale del kernelper il test di nuove funzionalità
Andrew Morton: segue un altro ramo sperimentale delkernel dedicato alla gestione della memoria
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.20
Numero di responsabili
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.21
Chi sono gli sviluppatori di Linux
Linus Torvalds e i responsabili generali non analizzano afondo ogni singola modifica al kernel, ma solo quelle piùcritiche (10%–20%)
La robustezza di Linux perciò dipende in larga misuradalla qualità del lavoro di responsabili e programmatori
“[. . . ] it is strange: people who I believe are some of thebest programmers in the world choose to work on freesoftware” [Andrew Morton, 2005]
“Even though we’re all paid to do kernel work, the cultureis largely unchanged from the earliest days of Linux. Wework on it because we love our craft and because itallows us to contribute to our society in the way in whichwe are most able. Corny but true.” [Andrew Morton, 2005]
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.22
Linux e l’industria
In origine Linux era “nelle mani” di una comunità dicomputer geek o hacker che spendevano molto tempolibero scrivendo codice
Oggi questo non è più vero: grandi e piccole aziende di ITsupportano Linux assumendo programmatori di primaclasse e lasciandoli lavorare a tempo pieno sul kernel
Ogni anno nel kernel sono integrate le modifichesviluppate da centinaia di aziende
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.23
Linux e l’industria (2)
Perché l’industria contribuisce a Linux?
Perché è il loro “business core” (es.: Red Hat o Novell)Per garantire che i propri prodotti h/w funzionino a dovere[con Linux]Per adattare e specializzare il kernel Linux in accordo aipropri requisiti
Ciascuna azienda ha un forte interesse nell’ottenere che ipropri contributi siano integrati nel codice sorgenteufficiale, così che il proprio codice si evolva di pari passocon il resto del kernel
La licenza GPL scongiura i rischi di frammentazione(vedi la storia di Unix!)
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.24
Contributi al kernel Linux nel 2012
Tra parentesi il numero di dipendenti dell’azienda che hanno inviato modifiche
Si stima che circa l’80% dei contributi al kernel provenganodall’industria
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.25
Chi progetta Linux
Poiché le modifiche particolari al kernel Linux sono pilotatedall’industria. . .
Il ruolo principale di Linus Torvalds e deglialtri responsabili generali è progettare epianificare l’evoluzione futura di Linux
NO!
“Linux is evolution, not intelligent design!”[Linus Torvalds, 2005]
“People like Linus Torvalds and I don’t plan the kernelevolution. We don’t sit there and think up the roadmap for thenext two years, then assign resources to the various newfeatures. That’s because we don’t have any resources. Theresources are all owned by the various corporations who useand contribute to Linux, as well as by the various independentcontributors out there. It’s those people who own the resourceswho decide . . . ” [Andrew Morton, 2005]
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.26
L’evoluzione di Linux
La ragione principale del successo di Linux: non è pilotatoda qualcuno con un prefissato obiettivo tecnico,commerciale o politico
Al contrario, Linux è condizionato dai requisiti delle entitàdel mondo reale che vogliono adottarlo ed utilizzarlo:aziende di IT e utenti finali
Linus Torvalds è l’“arbitro”: garantisceche ogni modifica al kernel ètecnicamente corretta e, soprattutto,potenzialmente vantaggiosa per l’interacomunità di Linux
Linus Torvalds ha un impiego a tempopieno nella Linux Foundation: unconsorzio “no profit” finanziato da moltegrandi aziende di IT e dedicato apromuovere la crescita di Linux
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.27
Chi contribuisce alla Linux Foundation?4Linux AAVA Mob. Adobe Above Adeneo Emb. AMD AISIN AWAllGo Emb. Amaruia Sol. Antelink ARM Ashisuto Axis Comm.Barnes & Noble BasysKom Blackduck BORQS Broadcom BT BullCDAC Calxeda Calix Canonical Cavium Net. China Mobile CMEGroup Cinemo Cisco Citrix CloudScaling CloudSigma CloudSoftCodero Codethink Collabora Comarch Componentality Credativ CSRCybercom Group Cypress D-Link DOT Dell Denso Denx DFSDreamHost DreamWorks EMC2 ENEA EPSON Erlang ETRIEucalyptus Exegy FeuerLabs Fixnetix Fluendo Freescale FujitsuGazzang Genymobile GoAhead GSmart Google Harman HitachiHostConcepts HP Huawei IBM ICS Igalia Inktank InnomindsInteractive Data Intrinsyc Intel Ixonos Jaguar Land-RoverJ.P.Morgan JVC Kenwood KPT Lanedo LexisNexis Lexmark LGLineo Linpus LPL Mandriva Marvell Meinberg Mentor Graphics MeyerSound Micware Mindspeed MIPS Miracle Mocana Motorola NebulaNEC NetApp Nicira Nipa Nissan Nixu Nokia NTT NTT-Data NVIDIANYSE Tech. OSS Systems Oracle OrangeFS OSADL PalamidaPanasonic Parallels Pelagicore Perforce Pingwinsoft PT ProFUSIONProtecode Puzzle ITC Qualcomm Qualcom-Atheros ReaktorRedHat Renesas Ricoh Rusbitech Savoir-faire Linux ServergySamsumg Siemens SIM Tech. Sonatype SprectraCode SonySoftlayer Splashtop STEC Superb Internet Symbio ST SymphonyTeleca SuSE Symbio Synopsys TS-Associates Texas Instr. TMSThunderSoft Tieto TimeSys Toshiba Toyota TurboSystems TuxeraTwitter VirtualBridges VMWare VIA Wind River Yahoo! Zenoss ZTE
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.28
Millennium Technology Prizes
Dal 2004, il più importante premio per l’innovazionetecnologica
Assegnato ogni 2 anni dalla fondazione TechnologyAcademy Finland
Primo premio: circa 1 000 000 $
Considerato il “Nobel per la tecnologia”
Vincitori delle passate edizioni:
2004 Tim Berners-Lee (World Wide Web)
2006 Shuji Nakamura (LED bianchi e blu)
2008 Robert Langer (Biomateriali innovativi)
2010 Michael Grätzel (celle solari “dye-sensitized”)
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.29
2012 Millennium Technology Prize
Vincitori ex-aequo(giugno 2012):
Linus TorvaldsShinya Yamanaka
Ottobre 2012: premio Nobel per lamedicina assegnato a Sir John B.Gurdon e Shinya Yamanaka per laloro ricerca sulle cellule staminali
Nascita edevoluzione
di Linux
Marco Cesati
Schema della lezione
Nascita di Linux
Linux oggi
Le chiavi del successo
LA’13 4.30
“Software is too important in the modern world not to bedeveloped through open source. The real impact ofLinux is as a way to allow people and companies to buildon top of it to do their own thing. We’re finally getting tothe point where “data is just data”, and we don’t have allthese insane special communications channels fordifferent forms of data.” [Linus Torvalds, 2012]