80
“Do one thing and do it well” La Filosofia Unix

La Filosofia Unix

Embed Size (px)

Citation preview

Page 1: La Filosofia Unix

“Do one thing and do it well”

La Filosofia Unix

Page 2: La Filosofia Unix

Chi sono?

Mi chiamo Federico CapoanoAnche conosciuto come Nemesis

Ninux.org e OpenWISP.org

z

Page 3: La Filosofia Unix

Perchè la filosofia Unix?

Riscoprire la filosofia Unixmi ha aiutato a diventare

un programmatore migliore

Page 4: La Filosofia Unix

Cosa intendo per “migliore”?

Page 5: La Filosofia Unix

Imparare a risolvere problemicomplessi con approcci

semplici

Page 6: La Filosofia Unix

scrivere piccoli programmi combinabili invece che“palle di fango giganti”

Page 7: La Filosofia Unix

mantenere librerie usate da migliaia di sviluppatori

Page 8: La Filosofia Unix

saper attrarre e gestire contributi di terze parti

Page 9: La Filosofia Unix

Fare da admin e mentor

http://www.ninux.org

Page 10: La Filosofia Unix

Incontrare Linus Torvalds

http://www.ninux.org

Page 11: La Filosofia Unix

Tutto è cominciato con Ninux

Page 12: La Filosofia Unix

Cos'è ninux?

Rete IP comunitaria

Libertà di comunicazione

Tutti possono connettersi

Condivisione servizi in rete

Sperimentazione nuove tecnologie

Approccio collaborativo

Tecnologie principalmente FLOSS

http://www.ninux.org

Page 13: La Filosofia Unix

Cosa sono le reti comunitarie?

http://www.ninux.org

Page 14: La Filosofia Unix

Cosa sono le reti comunitarie?

http://www.ninux.org

Page 15: La Filosofia Unix

Cosa sono le reti comunitarie?

http://www.ninux.org

Page 16: La Filosofia Unix

Cosa sono le reti comunitarie?

http://www.ninux.org

Page 17: La Filosofia Unix

nodeshot.org

Page 18: La Filosofia Unix
Page 19: La Filosofia Unix

Openwisp.org

Page 20: La Filosofia Unix

Cos'hanno in comune?

- applicazioni web- molte feature- molta interdipendenza

Page 21: La Filosofia Unix

Qual'è Il problemadi questo approccio?

Page 22: La Filosofia Unix

1. Complessità

Il software tende a diventare una“palla di fango gigante”

Page 23: La Filosofia Unix

2. Interdipendenza

Cambiare un componenterichiede cambiamentiad altri componenti

Page 24: La Filosofia Unix

3. Inflessibilità

difficile adattare il software anuovi requisiti

Page 25: La Filosofia Unix

4. poco riutilizzabile

Poco riutilizzabile in contestidifferenti (anche leggermente)

Page 26: La Filosofia Unix

5. pochi contributi

Software troppo specificonon crea una comunità di

contributors

Page 27: La Filosofia Unix

Nikola is not happy

Page 28: La Filosofia Unix

Ci deve essere

un'altra via!

Page 29: La Filosofia Unix
Page 30: La Filosofia Unix

Che cos'è la “filosofia Unix”?

Page 31: La Filosofia Unix

1. Approccio

Sviluppo di softwaresemplice ed efficace

Page 32: La Filosofia Unix

2. Maturità

Maturato nellacomunità UNIX

tra il 1969 ed il 2003

Page 33: La Filosofia Unix

3. Change tolerant

Nata per funzionare in un ambiente

in costante cambiamento

Page 34: La Filosofia Unix

La base di tutto

“Do one thingand do it well”

Page 35: La Filosofia Unix

Scomporre un problema complesso

in problemi più piccoli

Page 36: La Filosofia Unix

Risolvere un problemaalla volta

Un problema, un programma

Page 37: La Filosofia Unix

Rendere questi programmifacilmente combinabili

Page 38: La Filosofia Unix

I vantaggi dell'approccio Unix

Quali sono i vantaggipiù significativi?

Page 39: La Filosofia Unix

1. facilità

Risolvere un solo problemaalla volta è più facile

Page 40: La Filosofia Unix

2. mantenibilità

Mantenere un programma semplice comporta

meno lavoro

Page 41: La Filosofia Unix

3. usabilità

Un programma semplice è più facile da spiegare

ed usare

Page 42: La Filosofia Unix

4. leggibilità

Il codice di un programma semplice è più facileda leggere e capire

Page 43: La Filosofia Unix

5. riutilizzo

Essendo facile da riutilizzare

attrarrà più contributors

Page 44: La Filosofia Unix

6. rapidità

Un programma semplice si riadatta più rapidamente

a nuovi requirement

Page 45: La Filosofia Unix

ME GUSTA

Page 46: La Filosofia Unix

Le 17 regole di Unix sintetizzate

da Eric Raymond

Autore de“La cattedrale e il Bazaar”

Page 47: La Filosofia Unix

1. Modularità

Scrivete parti semplici connesse tramite interfacce ben definite

Page 48: La Filosofia Unix

2. Chiarezza

Scegliete la chiarezzapiuttosto che l' ingegno

Page 49: La Filosofia Unix

3. Composizione

Progettate programmi per essere connessi ad altri programmi

Page 50: La Filosofia Unix

4. Separazione

separate la politica dai meccanismi;

separate le interfacce dai motori

Page 51: La Filosofia Unix

5. Semplicità

Progettate per la semplicità; aggiungete complessità solose strettamente necessario

Page 52: La Filosofia Unix

6. Parsimonia

Scrivete un programma grande solo quando è stato dimostrato

che nient'altro funzionerà meglio

Page 53: La Filosofia Unix

7. Trasparenza

Progettate con il fine di facilitare l' ispezione ed il debugging

Page 54: La Filosofia Unix

8. Robustezza

La robustezza è la figlia della trasparenza e della semplicità

Page 55: La Filosofia Unix

9. Rappresentazione

Inserite la conoscenza nelle strutture dati in modo da

mantenere la logicasemplice e robusta

Page 56: La Filosofia Unix

10. Sorpresa minima

nella progettazione delle interfacce,

scegliete sempre la cosa più ovvia

Page 57: La Filosofia Unix

11. Silenzio

quando un programma non ha niente da dire,

non dovrebbe dire nulla

Page 58: La Filosofia Unix

12. Riparazione

Riparate quando potete,ma quando dovete fallire,

fatelo rumorosamenteed il più presto possibile

Page 59: La Filosofia Unix

13. Economia

il tempo del programmatore è costoso; meglio risparmiare

quello piuttosto che il tempo della macchina

Page 60: La Filosofia Unix

14. Generazione

evitate di fare tutto a mano;scrivete programmi che

generano codice

Page 61: La Filosofia Unix

15. Ottimizzazione

realizzate prototipi prima di rifinire; fatelo funzionare prima di

ottimizzare

Page 62: La Filosofia Unix

16. Diversità

diffidare tutte le rivendicazioni di “una vera via”

Page 63: La Filosofia Unix

17. Estendibilità

progettate per il futuro, perchè sarà qui prima di quello che pensi

Page 64: La Filosofia Unix

Robba seria

Page 65: La Filosofia Unix

Parliamo di dati

nodeshotvs

Feature estratte (sommate)

contributi & download

Page 66: La Filosofia Unix

Nodeshot: 13

Libraries: 44

Pull request (6 months)

3x

Page 67: La Filosofia Unix

Nodeshot: 324

Libraries: 25199

PyPi downloads (1 month)

78x

Page 68: La Filosofia Unix

Nodeshot: 95

Libraries: 1392

Github clones (1 month)

14x

Page 69: La Filosofia Unix

Nodeshot: 14

Libraries: 471

Github unique clones (1 month)

33x

Page 70: La Filosofia Unix

Nodeshot: 1100

Libraries: 2385

Github page views (1 month)

2x

Page 71: La Filosofia Unix

Nodeshot: 128

Libraries: 635

Github unique visitors (1 month)

5x

Page 72: La Filosofia Unix

Le metriche di utilizzodei piccoli programmi

(sommati tra loro)Mostrano un aumento medio

di un 22xRispetto a nodeshot

Page 73: La Filosofia Unix
Page 74: La Filosofia Unix

Conclusioni...

Page 75: La Filosofia Unix

1. I creatori di unixnon erano gli ultimi arrivati

Seguire i loro consigliè una buona idea

Page 76: La Filosofia Unix

2. NO ai dogmi

Anche i fondatori dellafilosofia Unix rigettano i dogmi

(nessuna “vera via”)

Page 77: La Filosofia Unix

3. applicatela

Applicate la filosofia unixai vostri progetti

Page 78: La Filosofia Unix

4. imparate da chi è più esperto

Unix e Linux sono miglioraticosì tanto soprattutto grazie

all'ambiente FLOSS

Page 79: La Filosofia Unix
Page 80: La Filosofia Unix

potete trovarmi sutwitter e github

@nemesisdesign

Grazie!