Nascita ed evoluzione di Linux - Linux avanzato...

30
Nascita ed evoluzione di Linux Marco Cesati Schema della lezione Nascita di Linux Linux oggi Le chiavi del successo LA’13 4.1 Lezione 4 Nascita ed evoluzione di Linux Linux avanzato 20 marzo 2013 Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata

Transcript of Nascita ed evoluzione di Linux - Linux avanzato...

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]